update helpers/location to 'frosted' ui
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_skateshop.h
index 3b432c168a506a8bbc9df9f6557998de2ab3c39b..2f8e3a64917bb885b2671b78573c6185ea31e466 100644 (file)
@@ -1,94 +1,54 @@
-#ifndef ENT_SKATESHOP_H
-#define ENT_SKATESHOP_H
-
+#pragma once
 #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
+#define SKATESHOP_VIEW_SLOT_MAX    5
 
-struct{
+struct global_skateshop
+{
    v3f look_target;
-   ent_skateshop *ptr_ent;
-
-   int active;
-   float factive;
-
-   struct cache_board{
-      enum cache_board_state{
-         k_cache_board_state_none,
-         k_cache_board_state_loaded,
-         k_cache_board_state_load_request
-      }
-      state;
-
-      struct player_board board;
-      u32 registry_id;
-
-      u32 ref_count;
-      double last_use_time;
-   }
-   *cache;
-   SDL_SpinLock sl_cache_access;
 
    struct shop_view_slot{
-      struct cache_board *cache_ptr;
+      u16 cache_id;
       float view_blend;
    }
    shop_view_slots[ SKATESHOP_VIEW_SLOT_MAX ];
 
-   struct registry_board{
-      PublishedFileId_t workshop_id;
-
-      /* only for steam workshop files */
-      //struct workshop_file_info workshop;
-      struct cache_board *cache_ptr;
+   u32 selected_world_id,
+       selected_board_id,
+       selected_player_id,
+       pointcloud_world_id;
 
-      char foldername[64]; /* if workshop, string version of its published ID. */
-      u32 foldername_hash;
+   struct {
+      const char *item_title, *item_desc;
+      u32 reg_id;
 
-      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;
+      const char *world_title, *world_loc;
+      u32 world_reg;
+   }
+   render;
 
-   u32 selected_registry_id;
+   union {
+      struct gui_helper *helper_pick, *helper_toggle;
+   };
 
-   /* 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;
+   struct gui_helper *helper_browse;
 
-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 );
 
-#endif /* ENT_SKATESHOP_H */
+   addon_reg *reg_preview, *reg_loaded_preview;
+   GLuint tex_preview;
+}
+extern global_skateshop;
+
+void skateshop_init(void);
+void ent_skateshop_preupdate( ent_focus_context *ctx );
+void skateshop_render( ent_skateshop *shop );
+void skateshop_render_nonfocused( world_instance *world, vg_camera *cam );
+void skateshop_autostart_loading(void);
+void skateshop_world_preupdate( world_instance *world );
+entity_call_result ent_skateshop_call( world_instance *world, ent_call *call );
+void skateshop_world_preview_preupdate(void);