X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_skateshop.c;h=87e7509304a48719fa15471e98f8ae26c4c98fb1;hb=4eb81766e4e7c54599b057ebf57b7fab01cd0726;hp=281548248c472b4fdf386b522eb273088065be5e;hpb=bd3a7e904be0fc97e70761cc957a28609d366586;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_skateshop.c b/ent_skateshop.c index 2815482..87e7509 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,7 @@ 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, int active ){ +static void ent_skateshop_preupdate( ent_skateshop *shop, int active ){ if( !active ) return; /* input filter */ @@ -232,7 +252,7 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop, int active ){ 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", @@ -241,6 +261,7 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop, int active ){ 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); @@ -281,11 +302,12 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop, int active ){ } 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(); } } @@ -308,8 +330,7 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop, int active ){ 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; } @@ -368,12 +389,15 @@ VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop, int active ){ } 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); @@ -445,7 +469,7 @@ fade_out:; float scale = 0.2f, thickness = 0.03f; - font3d_bind( &gui.font, &skaterift.cam ); + font3d_bind( &gui.font, k_font_shader_default, 0, world, &skaterift.cam ); shader_model_font_uColour( (v4f){1.0f,1.0f,1.0f,1.0f} ); /* Selection counter @@ -466,12 +490,10 @@ fade_out:; i+=highscore_intl( buf+i, addon_count(k_addon_type_board), 3 ); buf[i++] = '\0'; - font3d_simple_draw( &gui.font, 0, k_font_shader_default, - buf, &skaterift.cam, mmdl ); + font3d_simple_draw( 0, buf, &skaterift.cam, mmdl ); } else{ - font3d_simple_draw( &gui.font, 0, k_font_shader_default, - "Nothing installed", &skaterift.cam, mmdl ); + font3d_simple_draw( 0, "Nothing installed", &skaterift.cam, mmdl ); } u16 cache_id = skateshop_selected_cache_id(); @@ -511,37 +533,33 @@ fade_out:; * ----------------------------------------------------------------- */ m3x3_zero( mlocal ); m3x3_setdiagonalv3( mlocal, (v3f){ scale, scale, thickness } ); - mlocal[3][0] = -font3d_string_width( &gui.font, 0, - global_skateshop.render.item_title ); + mlocal[3][0] = -font3d_string_width( 0, global_skateshop.render.item_title ); mlocal[3][0] *= scale*0.5f; mlocal[3][1] = 0.1f; mlocal[3][2] = 0.0f; m4x3_mul( mtext, mlocal, mmdl ); - font3d_simple_draw( &gui.font, 0, k_font_shader_default, - global_skateshop.render.item_title, + font3d_simple_draw( 0, global_skateshop.render.item_title, &skaterift.cam, mmdl ); /* Author name * ----------------------------------------------------------------- */ scale *= 0.4f; m3x3_setdiagonalv3( mlocal, (v3f){ scale, scale, thickness } ); - mlocal[3][0] = -font3d_string_width( &gui.font, 0, - global_skateshop.render.item_desc ); + mlocal[3][0] = -font3d_string_width( 0, global_skateshop.render.item_desc ); mlocal[3][0] *= scale*0.5f; mlocal[3][1] = 0.0f; mlocal[3][2] = 0.0f; m4x3_mul( mtext, mlocal, mmdl ); - font3d_simple_draw( &gui.font, 0, k_font_shader_default, - global_skateshop.render.item_desc, + font3d_simple_draw( 0, global_skateshop.render.item_desc, &skaterift.cam, mmdl ); 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, @@ -607,27 +625,25 @@ VG_STATIC void skateshop_render_worldshop( ent_skateshop *shop ){ m4x3f mtext,mlocal,mtextmdl; mdl_transform_m4x3( &mark_info->transform, mtext ); - font3d_bind( &gui.font, &skaterift.cam ); + font3d_bind( &gui.font, k_font_shader_default, 0, NULL, &skaterift.cam ); shader_model_font_uColour( (v4f){1.0f,1.0f,1.0f,1.0f} ); float scale = 0.2f, thickness = 0.015f, scale1 = 0.08f; m3x3_zero( mlocal ); m3x3_setdiagonalv3( mlocal, (v3f){ scale, scale, thickness } ); - mlocal[3][0] = -font3d_string_width( &gui.font, 0, buftext ); + mlocal[3][0] = -font3d_string_width( 0, buftext ); mlocal[3][0] *= scale*0.5f; mlocal[3][1] = 0.1f; mlocal[3][2] = 0.0f; m4x3_mul( mtext, mlocal, mtextmdl ); - font3d_simple_draw( &gui.font, 0, k_font_shader_default, - buftext, &skaterift.cam, mtextmdl ); + font3d_simple_draw( 0, buftext, &skaterift.cam, mtextmdl ); m3x3_setdiagonalv3( mlocal, (v3f){ scale1, scale1, thickness } ); - mlocal[3][0] = -font3d_string_width( &gui.font, 0, bufsubtext ); + mlocal[3][0] = -font3d_string_width( 0, bufsubtext ); mlocal[3][0] *= scale1*0.5f; mlocal[3][1] = -scale1*0.3f; m4x3_mul( mtext, mlocal, mtextmdl ); - font3d_simple_draw( &gui.font, 0, k_font_shader_default, - bufsubtext, &skaterift.cam, mtextmdl ); + font3d_simple_draw( 0, bufsubtext, &skaterift.cam, mtextmdl ); /* pointcloud */ m4x3f mmdl; @@ -645,7 +661,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 ) @@ -659,7 +675,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" );