X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_skateshop.h;h=2f8e3a64917bb885b2671b78573c6185ea31e466;hb=refs%2Fheads%2Fmenu2;hp=12cfd218e1b1675270673c552f262dba388c1c44;hpb=b1d22bbb87583cea9fde7620eb1fc16189be5113;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_skateshop.h b/ent_skateshop.h index 12cfd21..2f8e3a6 100644 --- a/ent_skateshop.h +++ b/ent_skateshop.h @@ -1,6 +1,4 @@ -#ifndef ENT_SKATESHOP_H -#define ENT_SKATESHOP_H - +#pragma once #include "world.h" #include "world_load.h" #include "player.h" @@ -8,45 +6,21 @@ #include "workshop.h" #include "addon.h" -#define SKATESHOP_BOARD_CACHE_MAX 10 -#define SKATESHOP_VIEW_SLOT_MAX 6 +#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 reg_index; - addon_reg *reg_ptr; - - u32 ref_count; - - struct cache_board *left, *right; - /* double last_use_time; */ - } - *cache, *cache_head, *cache_tail; - - 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 ]; u32 selected_world_id, selected_board_id, + selected_player_id, pointcloud_world_id; struct { @@ -57,12 +31,24 @@ struct{ u32 world_reg; } render; -} -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 ); -VG_STATIC void unwatch_cache_board( struct cache_board *ptr ); -VG_STATIC struct cache_board *lru_volatile_cache_board(void); + union { + struct gui_helper *helper_pick, *helper_toggle; + }; + + struct gui_helper *helper_browse; -#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);