* VG event preupdate
*/
void temp_update_playermodel(void);
-VG_STATIC void global_skateshop_preupdate(void){
- float rate = vg_minf( 1.0f, vg.time_frame_delta * 2.0f );
- int active = 0;
- if( skaterift.activity == k_skaterift_skateshop )
- active = 1;
-
- vg_slewf( &global_skateshop.factive, active,
- vg.time_frame_delta * (1.0f/0.5f) );
-
- if( !active ) return;
-
+VG_STATIC void ent_skateshop_preupdate( ent_skateshop *shop ){
/* input filter */
world_instance *world = world_current_instance();
- ent_skateshop *shop = global_skateshop.ptr_ent;
/* camera positioning */
ent_camera *ref = mdl_arritm( &world->ent_camera,
v3f dir = {0.0f,-1.0f,0.0f};
mdl_transform_vector( &ref->transform, dir, dir );
m3x3_mulv( localplayer.invbasis, dir, dir );
- player_vector_angles( global_skateshop.cam.angles, dir, 1.0f, 0.0f );
+ player_vector_angles( world_static.focus_cam.angles, dir, 1.0f, 0.0f );
v3f lookat;
if( shop->type == k_skateshop_type_boardshop ||
q_axis_angle( localplayer.rb.q, (v3f){0.0f,1.0f,0.0f},
atan2f(lookat[0],lookat[2]) );
- v3_copy( ref->transform.co, global_skateshop.cam.pos );
- global_skateshop.cam.fov = ref->fov;
+ v3_copy( ref->transform.co, world_static.focus_cam.pos );
+ world_static.focus_cam.fov = ref->fov;
/* input */
if( shop->type == k_skateshop_type_boardshop ){
addon_cache_watch( k_addon_type_board, cache_id );
localplayer.board_view_slot = cache_id;
- global_skateshop_exit();
- skaterift_write_savedata();
+ world_entity_unfocus();
+ skaterift_autosave(1);
return;
}
}
}
if( button_down( k_srbind_maccept ) ){
- global_skateshop_exit();
+ world_entity_unfocus();
}
}
else if( shop->type == k_skateshop_type_worldshop ){
if( loadable && button_down( k_srbind_maccept ) ){
vg_info( "Select rift (%u)\n",
global_skateshop.selected_world_id );
- world_loader.reg = reg;
- world_loader.override_name[0] = '\0';
- skaterift_change_world_start();
+ skaterift_change_world_start( reg );
return;
}
else{
}
if( button_down( k_srbind_mback ) ){
- global_skateshop_exit();
+ world_entity_unfocus();
return;
}
}
-VG_STATIC void skateshop_render_boardshop(void){
+VG_STATIC void skateshop_render_boardshop( ent_skateshop *shop ){
world_instance *world = world_current_instance();
- ent_skateshop *shop = global_skateshop.ptr_ent;
-
u32 slot_count = vg_list_size(global_skateshop.shop_view_slots);
ent_marker *mark_rack = mdl_arritm( &world->ent_marker,
q_nlerp( xform.q, mark_display->transform.q, t, xform.q );
v3_lerp( xform.s, mark_display->transform.s, t, xform.s );
- struct board_pose pose = {0};
+ struct player_board_pose pose = {0};
m4x3f mmdl;
mdl_transform_m4x3( &xform, mmdl );
render_board( &skaterift.cam, world, board, mmdl,
i+=highscore_intl( buf+i, addon_count(k_addon_type_board), 3 );
buf[i++] = '\0';
- font3d_simple_draw( &gui.font, 0, buf, &skaterift.cam, mmdl );
+ font3d_simple_draw( &gui.font, 0, k_font_shader_default,
+ buf, &skaterift.cam, mmdl );
}
else{
- font3d_simple_draw( &gui.font, 0,
+ font3d_simple_draw( &gui.font, 0, k_font_shader_default,
"Nothing installed", &skaterift.cam, mmdl );
}
mlocal[3][1] = 0.1f;
mlocal[3][2] = 0.0f;
m4x3_mul( mtext, mlocal, mmdl );
- font3d_simple_draw( &gui.font, 0, global_skateshop.render.item_title,
+ font3d_simple_draw( &gui.font, 0, k_font_shader_default,
+ global_skateshop.render.item_title,
&skaterift.cam, mmdl );
/* Author name
mlocal[3][1] = 0.0f;
mlocal[3][2] = 0.0f;
m4x3_mul( mtext, mlocal, mmdl );
- font3d_simple_draw( &gui.font, 0, global_skateshop.render.item_desc,
+ font3d_simple_draw( &gui.font, 0, k_font_shader_default,
+ global_skateshop.render.item_desc,
&skaterift.cam, mmdl );
SDL_AtomicUnlock( &addon_system.sl_cache_using_resources );
}
-VG_STATIC void skateshop_render_charshop(void)
-{
+VG_STATIC void skateshop_render_charshop( ent_skateshop *shop ){
}
-VG_STATIC void skateshop_render_worldshop(void)
-{
+VG_STATIC void skateshop_render_worldshop( ent_skateshop *shop ){
world_instance *world = world_current_instance();
- ent_skateshop *shop = global_skateshop.ptr_ent;
ent_marker *mark_display = mdl_arritm( &world->ent_marker,
mdl_entity_id_id(shop->worlds.id_display)),
*mark_info = mdl_arritm( &world->ent_marker,
mlocal[3][1] = 0.1f;
mlocal[3][2] = 0.0f;
m4x3_mul( mtext, mlocal, mtextmdl );
- font3d_simple_draw( &gui.font, 0, buftext, &skaterift.cam, mtextmdl );
+ font3d_simple_draw( &gui.font, 0, k_font_shader_default,
+ buftext, &skaterift.cam, mtextmdl );
m3x3_setdiagonalv3( mlocal, (v3f){ scale1, scale1, thickness } );
mlocal[3][0] = -font3d_string_width( &gui.font, 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, bufsubtext, &skaterift.cam, mtextmdl );
+ font3d_simple_draw( &gui.font, 0, k_font_shader_default,
+ bufsubtext, &skaterift.cam, mtextmdl );
/* pointcloud */
m4x3f mmdl;
/*
* World: render event
*/
-VG_STATIC void skateshop_render(void){
- if( skaterift.activity != k_skaterift_skateshop ) return;
-
- ent_skateshop *shop = global_skateshop.ptr_ent;
-
- if( shop->type == k_skateshop_type_boardshop ){
- skateshop_render_boardshop();
- }
- else if( shop->type == k_skateshop_type_charshop ){
- skateshop_render_charshop();
- }
- else if( shop->type == k_skateshop_type_worldshop ){
- skateshop_render_worldshop();
- }
- else{
+VG_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 )
+ skateshop_render_charshop( shop );
+ else if( shop->type == k_skateshop_type_worldshop )
+ skateshop_render_worldshop( shop );
+ else
vg_fatal_error( "Unknown store (%u)\n", shop->type );
- }
}
/*
* Entity logic: entrance event
*/
-VG_STATIC void ent_skateshop_call( world_instance *world, ent_call *call )
-{
+VG_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" );
vg_info( "Entering skateshop\n" );
+ world_entity_focus( call->id );
+#if 0
localplayer.immobile = 1;
menu.disable_open = 1;
skaterift.activity = k_skaterift_skateshop;
v3_zero( localplayer.rb.w );
localplayer._walk.move_speed = 0.0f;
global_skateshop.ptr_ent = shop;
+#endif
if( shop->type == k_skateshop_type_boardshop ){
skateshop_update_viewpage();
}
}
-/*
- * Entity logic: exit event
- */
-VG_STATIC void global_skateshop_exit(void){
- vg_info( "exit skateshop\n" );
- localplayer.immobile = 0;
- skaterift.activity = k_skaterift_default;
- menu.disable_open = 0;
- srinput.enabled = 0;
-}
-
#endif /* ENT_SKATESHOP_C */