X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_skateshop.c;h=f471f42b1359c6309d5cd3f9840f08e3e120a0fc;hb=074fa69f479724f9800849430bad5caf730b01ef;hp=56d8c01fe8557bcde628799fde5cb8c3d377f988;hpb=6190deb68aa1c9e92ede62ea05c2a755bf5516de;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_skateshop.c b/ent_skateshop.c index 56d8c01..f471f42 100644 --- a/ent_skateshop.c +++ b/ent_skateshop.c @@ -15,6 +15,7 @@ #include "steam.h" #include "addon.h" #include "save.h" +#include "network.h" /* * Checks string equality but does a hash check first @@ -27,7 +28,7 @@ static inline int const_str_eq( u32 hash, const char *str, const char *cmp ) return 0; } -VG_STATIC void skateshop_update_viewpage(void){ +static void skateshop_update_viewpage(void){ u32 page = global_skateshop.selected_board_id/SKATESHOP_VIEW_SLOT_MAX; for( u32 i=0; ipool.count; id++ ){ + addon_cache_entry *entry = vg_pool_item( &cache->pool, id ); + if( entry->state == k_addon_cache_state_load_request ){ + SDL_AtomicUnlock( &addon_system.sl_cache_using_resources ); + goto launch; + } + } + } + SDL_AtomicUnlock( &addon_system.sl_cache_using_resources ); + return; +launch: vg_loader_start( board_processview_thread, NULL ); } @@ -90,7 +110,7 @@ VG_STATIC void skateshop_op_processview(void){ /* * VG event init */ -VG_STATIC void skateshop_init(void){ +static void skateshop_init(void){ } static u16 skateshop_selected_cache_id(void){ @@ -102,18 +122,18 @@ static u16 skateshop_selected_cache_id(void){ else return 0; } -VG_STATIC void pointcloud_async_end(void *_, u32 __) +static void pointcloud_async_end(void *_, u32 __) { pointcloud_animate( k_pointcloud_anim_opening ); } -VG_STATIC void pointcloud_clear_async(void *_, u32 __) +static void pointcloud_clear_async(void *_, u32 __) { pointcloud.count = 0; pointcloud_animate( k_pointcloud_anim_opening ); } -VG_STATIC void skateshop_world_preview_loader_thread( void *_data ) +static void skateshop_world_preview_loader_thread( void *_data ) { addon_reg *reg = _data; @@ -151,11 +171,11 @@ VG_STATIC void skateshop_world_preview_loader_thread( void *_data ) } } -VG_STATIC void skateshop_world_preview_loader_thread_and_end( void *_data ){ +static void skateshop_world_preview_loader_thread_and_end( void *_data ){ skateshop_world_preview_loader_thread( _data ); } -VG_STATIC void skateshop_load_world_preview( addon_reg *reg ){ +static void skateshop_load_world_preview( addon_reg *reg ){ vg_loader_start( skateshop_world_preview_loader_thread_and_end, reg ); } @@ -163,7 +183,9 @@ VG_STATIC void skateshop_load_world_preview( addon_reg *reg ){ * VG event preupdate */ void temp_update_playermodel(void); -VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop ){ +static void ent_skateshop_preupdate( ent_skateshop *shop, int active ){ + if( !active ) return; + /* input filter */ world_instance *world = world_current_instance(); @@ -230,7 +252,7 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop ){ if( opage != npage ){ skateshop_update_viewpage(); - skateshop_op_processview(); + //skateshop_op_processview(); } else if( cache_id && button_down( k_srbind_maccept )){ vg_info( "chose board from skateshop (%u)\n", @@ -239,6 +261,7 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop ){ addon_cache_unwatch( k_addon_type_board, localplayer.board_view_slot ); addon_cache_watch( k_addon_type_board, cache_id ); localplayer.board_view_slot = cache_id; + network_send_item( k_netmsg_playeritem_board ); world_entity_unfocus(); skaterift_autosave(1); @@ -279,11 +302,12 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop ){ } if( changed ){ - player__use_model( &localplayer, global_skateshop.selected_player_id ); - skateshop_op_processview(); + player__use_model( global_skateshop.selected_player_id ); + //skateshop_op_processview(); } if( button_down( k_srbind_maccept ) ){ + network_send_item( k_netmsg_playeritem_player ); world_entity_unfocus(); } } @@ -306,8 +330,7 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop ){ if( browseable ){ if( button_down( k_srbind_mleft ) ){ - if( global_skateshop.selected_world_id > 0 ) - { + if( global_skateshop.selected_world_id > 0 ){ global_skateshop.selected_world_id --; change = 1; } @@ -366,12 +389,15 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop ){ } if( button_down( k_srbind_mback ) ){ + if( shop->type == k_skateshop_type_charshop ) + network_send_item( k_netmsg_playeritem_player ); + world_entity_unfocus(); return; } } -VG_STATIC void skateshop_render_boardshop( ent_skateshop *shop ){ +static void skateshop_render_boardshop( ent_skateshop *shop ){ world_instance *world = world_current_instance(); u32 slot_count = vg_list_size(global_skateshop.shop_view_slots); @@ -536,10 +562,10 @@ fade_out:; SDL_AtomicUnlock( &addon_system.sl_cache_using_resources ); } -VG_STATIC void skateshop_render_charshop( ent_skateshop *shop ){ +static void skateshop_render_charshop( ent_skateshop *shop ){ } -VG_STATIC void skateshop_render_worldshop( ent_skateshop *shop ){ +static void skateshop_render_worldshop( ent_skateshop *shop ){ world_instance *world = world_current_instance(); ent_marker *mark_display = mdl_arritm( &world->ent_marker, @@ -643,7 +669,7 @@ VG_STATIC void skateshop_render_worldshop( ent_skateshop *shop ){ /* * World: render event */ -VG_STATIC void skateshop_render( ent_skateshop *shop ){ +static void skateshop_render( ent_skateshop *shop ){ if( shop->type == k_skateshop_type_boardshop ) skateshop_render_boardshop( shop ); else if( shop->type == k_skateshop_type_charshop ) @@ -657,7 +683,7 @@ VG_STATIC void skateshop_render( ent_skateshop *shop ){ /* * Entity logic: entrance event */ -VG_STATIC void ent_skateshop_call( world_instance *world, ent_call *call ){ +static void ent_skateshop_call( world_instance *world, ent_call *call ){ u32 index = mdl_entity_id_id( call->id ); ent_skateshop *shop = mdl_arritm( &world->ent_skateshop, index ); vg_info( "skateshop_call\n" );