fix long standing grind bug
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_skateshop.h
index 93ebbec64f7933927b2b001acaeac1ab274ee7fb..ceefc8bd74d08b231b225cfb52ecb65fd2c0274b 100644 (file)
@@ -2,15 +2,14 @@
 #define ENT_SKATESHOP_H
 
 #include "world.h"
+#include "world_load.h"
 #include "player.h"
 #include "vg/vg_steam_remote_storage.h"
 #include "workshop.h"
+#include "addon.h"
 
-#define SKATESHOP_REGISTRY_MAX     64
 #define SKATESHOP_BOARD_CACHE_MAX  10
-#define SKATESHOP_WORLDS_MAX       32
 #define SKATESHOP_VIEW_SLOT_MAX    6
-#define SKATESHOP_REGISTRYID_NONE  0xffffffff
 
 struct{
    v3f look_target;
@@ -28,7 +27,8 @@ struct{
       state;
 
       struct player_board board;
-      u32 registry_id;
+      u32 reg_index;
+      addon_reg *reg_ptr;
 
       u32 ref_count;
       double last_use_time;
@@ -42,44 +42,20 @@ struct{
    }
    shop_view_slots[ SKATESHOP_VIEW_SLOT_MAX ];
 
-   struct registry_board{
-      PublishedFileId_t workshop_id;
+   u32 selected_world_id,
+       selected_board_id,
+       pointcloud_world_id;
 
-      /* only for steam workshop files */
-      struct workshop_file_info workshop;
-      struct cache_board *cache_ptr;
-
-      char filename[64]; /* if workshop, string version of its published ID. */
-      u32 filename_hash;
-
-      enum registry_board_state{
-         k_registry_board_state_none,
-         k_registry_board_state_indexed,
-         k_registry_board_state_indexed_absent /*was found but is now missing*/
-      }
-      state;
-   } 
-   *registry;
-   u32 t1_registry_count,
-          registry_count;
-
-   u32 selected_registry_id;
+   struct {
+      const char *item_title, *item_desc;
+      u32 reg_id;
 
-   /* worlds */
-   struct registry_world{
-      enum registry_board_state state;
-      char foldername[64];
-      u32 foldername_hash;
-      
-      int meta_present;
-      ent_worldinfo info;
+      const char *world_title, *world_loc;
+      u32 world_reg;
    }
-   *world_registry;
-   u32 t1_world_registry_count,
-          world_registry_count,
-       selected_world_id;
+   render;
 }
-static global_skateshop;
+static global_skateshop={.render={.reg_id=0xffffffff,.world_reg=0xffffffff}};
 
 VG_STATIC void global_skateshop_exit(void);
 VG_STATIC void watch_cache_board( struct cache_board *ptr );