X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_skateshop.h;h=ff11e62f84ff863230358d2eb0fe294b8e68a6c9;hb=badfa88dd109bbae5628f58504402f4707569f73;hp=e7acd43255d456db1d2bb291431eafcba768ff58;hpb=f24a8cdd8ea6c3d762d26de2fc0700599bedbcad;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_skateshop.h b/ent_skateshop.h index e7acd43..ff11e62 100644 --- a/ent_skateshop.h +++ b/ent_skateshop.h @@ -2,11 +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 MAX_LOCAL_BOARDS 64 -#define BILL_TIN_BOARDS 1 -#define MAX_DYNAMIC_BOARDS 9 +#define SKATESHOP_BOARD_CACHE_MAX 10 +#define SKATESHOP_VIEW_SLOT_MAX 6 struct{ v3f look_target; @@ -15,64 +18,77 @@ struct{ int active; float factive; - enum skateshop_loc{ - k_skateshop_loc_page__viewing, - - k_skateshop_loc_select_use, - k_skateshop_loc_select_cancel, - k_skateshop_loc_select_upload, - k_skateshop_loc_page__selected, - - k_skateshop_loc_page__upload, - } - interface_loc; - - struct dynamic_board - { - enum dynamic_board_state{ - k_dynamic_board_state_none, - k_dynamic_board_state_loaded, - k_dynamic_board_state_loading, + struct cache_board{ + enum cache_board_state{ + k_cache_board_state_none, + k_cache_board_state_loaded, + k_cache_board_state_load_request } state; - u32 ref_count; - struct player_board board; + u32 reg_index; + addon_reg *reg_ptr; - u32 registry_id; - + u32 ref_count; double last_use_time; } - *dynamic_boards; + *cache; + SDL_SpinLock sl_cache_access; - struct shop_view_slot - { - struct dynamic_board *db; + struct shop_view_slot{ + struct cache_board *cache_ptr; float view_blend; } - shop_view_slots[6]; + shop_view_slots[ SKATESHOP_VIEW_SLOT_MAX ]; - struct board_registry - { - int workshop; - u64 uid; +#if 0 + struct registry_board{ + PublishedFileId_t workshop_id; - struct dynamic_board *dynamic; + /* only for steam workshop files */ + //struct workshop_file_info workshop; + struct cache_board *cache_ptr; - char filename[64]; /* if workshop, string version of uid. */ - u32 filename_hash; + char foldername[64]; /* if workshop, string version of its published ID. */ + u32 foldername_hash; - int ghost; + 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 registry_count; - - int loading; - float interaction_cooldown; - - u32 selected_registry_id; + u32 t1_registry_count, + registry_count; + + /* 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; +#endif + u32 selected_world_id, + selected_board_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 ); + #endif /* ENT_SKATESHOP_H */