a more comprehensive workshop system
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_skateshop.h
index 4f84f7ae03dc68ddfd009cfc7b9dc387bb09b359..3b432c168a506a8bbc9df9f6557998de2ab3c39b 100644 (file)
@@ -2,12 +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"
 
 #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
 
@@ -45,11 +47,11 @@ struct{
       PublishedFileId_t workshop_id;
 
       /* only for steam workshop files */
-      struct workshop_file_info workshop;
+      //struct workshop_file_info workshop;
       struct cache_board *cache_ptr;
 
-      char filename[64]; /* if workshop, string version of its published ID. */
-      u32 filename_hash;
+      char foldername[64]; /* if workshop, string version of its published ID. */
+      u32 foldername_hash;
 
       enum registry_board_state{
          k_registry_board_state_none,
@@ -63,10 +65,29 @@ struct{
           registry_count;
 
    u32 selected_registry_id;
-   float interaction_cooldown;
+
+   /* worlds */
+   struct registry_world{
+      PublishedFileId_t workshop_id;
+      enum registry_board_state state;
+      char foldername[64];
+      u32 foldername_hash;
+      enum world_load_type type;
+      
+#if 0
+      int meta_present;
+      ent_worldinfo info;
+#endif
+   }
+   *world_registry;
+   u32 t1_world_registry_count,
+          world_registry_count,
+       selected_world_id,
+       pointcloud_world_id;
 }
 static global_skateshop;
 
+VG_STATIC void global_skateshop_exit(void);
 VG_STATIC void watch_cache_board( struct cache_board *ptr );
 VG_STATIC void unwatch_cache_board( struct cache_board *ptr );