From 7fb317c87e6d6a0a2a0de714b278ff8763254657 Mon Sep 17 00:00:00 2001 From: hgn Date: Fri, 23 Jun 2023 14:42:15 +0100 Subject: [PATCH] minor final stuff --- player.c | 49 ++++++++++++++++++++++++++----------------------- player.h | 4 ++-- player_common.h | 6 ++++-- player_skate.c | 3 +-- skaterift.c | 7 +++---- skaterift.h | 3 --- workshop.c | 29 +++++++++++++++++------------ workshop.h | 8 ++++++++ 8 files changed, 61 insertions(+), 48 deletions(-) diff --git a/player.c b/player.c index 1cca4ca..52e5683 100644 --- a/player.c +++ b/player.c @@ -40,6 +40,7 @@ VG_STATIC void player_init(void) VG_VAR_F32( k_cam_punch ); VG_VAR_F32( k_cam_shake_strength ); VG_VAR_F32( k_cam_shake_trackspeed ); + VG_VAR_I32( k_player_debug_info ); vg_console_reg_var( "cinema", &k_cinema, k_var_dtype_f32, 0 ); vg_console_reg_var( "cinema_fixed", &k_cinema_fixed, k_var_dtype_i32, 0 ); @@ -50,7 +51,6 @@ VG_STATIC void player_init(void) PLAYER_API void player__debugtext( int size, const char *fmt, ... ) { -#if 0 char buffer[ 1024 ]; va_list args; @@ -58,9 +58,8 @@ void player__debugtext( int size, const char *fmt, ... ) vsnprintf( buffer, 1024, fmt, args ); va_end( args ); - ui_text( vg_uictx.cursor, buffer, size, k_text_align_right ); - vg_uictx.cursor[1] += 14*size; -#endif + ui_text( g_player_debugger, buffer, size, k_ui_align_left, 0 ); + g_player_debugger[1] += size*16; } /* @@ -306,35 +305,40 @@ VG_STATIC void gate_rotate_angles( ent_gate *gate, v3f angles, v3f d ) d[0] = atan2f( fwd_dir[2], fwd_dir[0] ); } -PLAYER_API void player__im_gui( player_instance *player ) -{ -#if 0 - vg_uictx.cursor[0] = vg.window_x - 200; - vg_uictx.cursor[1] = 0; - vg_uictx.cursor[2] = 200; - vg_uictx.cursor[3] = 200; +PLAYER_API void player__im_gui( player_instance *player ){ + if( !k_player_debug_info ) return; + + ui_rect box = { + vg.window_x - 300, + 0, + 300, + vg.window_y + }; - struct ui_vert *b = ui_fill_rect( vg_uictx.cursor, 0x70000000 ); + ui_fill( box, (ui_colour(k_ui_bg)&0x00ffffff)|0x50000000 ); - vg_uictx.cursor[0] = vg.window_x; + g_player_debugger[0] = box[0]; + g_player_debugger[1] = 0; + g_player_debugger[2] = 300; + g_player_debugger[3] = 16; player__debugtext( 1, "angles: " PRINTF_v3f( player->cam.angles ) ); player__debugtext( 1, "basis: " PRINTF_v4f( player->qbasis ) ); if( _player_im_gui[ player->subsystem ] ) _player_im_gui[ player->subsystem ]( player ); - - b[2].co[1] = vg_uictx.cursor[1]; - b[3].co[1] = vg_uictx.cursor[1]; -#endif } VG_STATIC void global_skateshop_exit(void); -PLAYER_API void player__spawn( player_instance *player, - ent_spawn *rp ) -{ - v3_copy( rp->transform.co, player->rb.co ); + +PLAYER_API void player__setpos( player_instance *player, v3f pos ){ + v3_copy( pos, player->rb.co ); v3_zero( player->rb.v ); + rb_update_transform( &player->rb ); +} + +PLAYER_API void player__spawn( player_instance *player, ent_spawn *rp ){ + player__setpos( player, rp->transform.co ); v3_zero( player->rb.w ); q_identity( player->rb.q ); rb_update_transform( &player->rb ); @@ -359,8 +363,7 @@ PLAYER_API void player__spawn( player_instance *player, } -PLAYER_API void player__kill( player_instance *player ) -{ +PLAYER_API void player__kill( player_instance *player ){ } diff --git a/player.h b/player.h index aba87e0..ec24b86 100644 --- a/player.h +++ b/player.h @@ -17,8 +17,7 @@ static i32 k_cinema_fixed = 0; static f32 k_cinema = 0.0f; static i32 k_invert_y = 0; -struct player_instance -{ +struct player_instance{ /* transform definition */ rigidbody rb, rb_gate_storage; v3f angles, angles_storage; @@ -232,6 +231,7 @@ PLAYER_API void player__post_update( player_instance *player ); PLAYER_API void player__pass_gate( player_instance *player, ent_gate *gate ); PLAYER_API void player__im_gui( player_instance *player ); +PLAYER_API void player__setpos( player_instance *player, v3f pos ); PLAYER_API void player__spawn( player_instance *player, ent_spawn *rp ); PLAYER_API void player__kill( player_instance *player ); diff --git a/player_common.h b/player_common.h index 129c335..1b6ec71 100644 --- a/player_common.h +++ b/player_common.h @@ -4,14 +4,16 @@ #include "player_api.h" static v3f TEMP_TPV_EXTRA; /* TODO: what? */ - -VG_STATIC float +static float k_cam_spring = 20.0f, k_cam_damp = 6.7f, k_cam_punch = -1.0f, k_cam_shake_strength = 0.0001f, k_cam_shake_trackspeed = 0.2f; +static i32 k_player_debug_info = 0; +static ui_rect g_player_debugger; + VG_STATIC void player_look( player_instance *player, v3f angles ); VG_STATIC void player__cam_iterate( player_instance *player ); VG_STATIC void player_vector_angles( v3f angles, v3f v, float C, float k ); diff --git a/player_skate.c b/player_skate.c index 0362b93..59ac9f1 100644 --- a/player_skate.c +++ b/player_skate.c @@ -2627,8 +2627,7 @@ begin_collision:; } } -VG_STATIC void player__skate_im_gui( player_instance *player ) -{ +VG_STATIC void player__skate_im_gui( player_instance *player ){ struct player_skate *s = &player->_skate; player__debugtext( 1, "V: %5.2f %5.2f %5.2f",player->rb.v[0], player->rb.v[1], diff --git a/skaterift.c b/skaterift.c index d8d9107..175291f 100644 --- a/skaterift.c +++ b/skaterift.c @@ -144,8 +144,9 @@ static void skaterift_restore_state(void){ localplayer.viewable_world = world_current_instance(); vg_msg_cmd position = vg_msg_seekkv( &world, "position", 0 ); - vg_msg_convert_num( &position, k_vg_msg_float|k_vg_msg_32b, 3, - localplayer.rb.co ); + v3f pos; + vg_msg_convert_num( &position, k_vg_msg_float|k_vg_msg_32b, 3, pos ); + player__setpos( &localplayer, pos ); } } } @@ -504,9 +505,7 @@ VG_STATIC void vg_gui(void) menu_render(); } -#if 0 player__im_gui( &localplayer ); -#endif world_instance *world = world_current_instance(); workshop_form_gui(); diff --git a/skaterift.h b/skaterift.h index bfcaffb..2366203 100644 --- a/skaterift.h +++ b/skaterift.h @@ -22,9 +22,6 @@ struct{ k_async_op_player_scan, k_async_op_board_load, k_async_op_write_savedata, - k_workshop_form_op_loading_model, - k_workshop_form_op_downloading_submission, - k_workshop_form_op_publishing_update, } op; } diff --git a/workshop.c b/workshop.c index d9d576d..9917359 100644 --- a/workshop.c +++ b/workshop.c @@ -31,8 +31,7 @@ static struct ui_dropdown_opt workshop_form_type_opts[] = { /* * Close the form and discard UGC query result */ -VG_STATIC void workshop_quit_form(void) -{ +VG_STATIC void workshop_quit_form(void){ player_board_unload( &workshop_form.board_model ); workshop_form.file_intent = k_workshop_form_file_intent_none; @@ -45,6 +44,7 @@ VG_STATIC void workshop_quit_form(void) } workshop_form.page = k_workshop_form_hidden; + workshop_form.op = k_workshop_op_none; } /* @@ -400,32 +400,35 @@ VG_STATIC void _workshop_form_submit_thread( void *data ) /* * Entry point for the publishing submission operation */ -VG_STATIC void workshop_op_submit(void) -{ +VG_STATIC void workshop_op_submit(void){ /* TODO: Show these errors to the user */ if( workshop_form.submission.submit_title ){ if( !workshop_form.submission.title[0] ){ - vg_error( "Cannot submit because a title is required\n" ); + ui_start_modal( "Cannot submit because a title is required\n", + UI_MODAL_WARN); return; } } if( workshop_form.submission.submit_description ){ if( !workshop_form.submission.description[0] ){ - vg_error( "Cannot submit because a description is required\n" ); + ui_start_modal( "Cannot submit because a description is required\n", + UI_MODAL_WARN ); return; } } if( workshop_form.submission.submit_file_and_image ){ if( workshop_form.file_intent == k_workshop_form_file_intent_none ){ - vg_error( "Cannot submit because the file is empty or unspecified\n" ); + ui_start_modal( "Cannot submit because the file is " + "empty or unspecified\n", UI_MODAL_WARN ); return; } } player_board_unload( &workshop_form.board_model ); workshop_form.file_intent = k_workshop_form_file_intent_none; + workshop_form.op = k_workshop_op_publishing_update; vg_loader_start( _workshop_form_submit_thread, NULL ); } @@ -531,11 +534,12 @@ VG_STATIC void workshop_op_load_model(void){ mdl_arritm( &workshop_form.view_world->ent_swspreview, 0 ); } else{ - vg_error( "There is no ent_swspreview in the level. " - "Cannot publish here\n" ); + ui_start_modal( "There is no ent_swspreview in the level. \n" + "Cannot publish here\n", UI_MODAL_BAD ); return; } + workshop_form.op = k_workshop_op_loading_model; vg_loader_start( _workshop_form_load_thread, NULL ); } @@ -631,6 +635,7 @@ VG_STATIC void on_workshop_download_ugcpreview( void *data, void *user ) */ VG_STATIC void workshop_op_download_and_view_submission( int result_index ) { + workshop_form.op = k_workshop_op_downloading_submission; ISteamUGC *hSteamUGC = SteamAPI_SteamUGC(); ISteamRemoteStorage *hSteamRemoteStorage = SteamAPI_SteamRemoteStorage(); SteamUGCDetails_t details; @@ -1425,14 +1430,14 @@ VG_STATIC void workshop_form_gui(void) "the current operation that is running."; switch( skaterift.op ){ - case k_workshop_form_op_loading_model: + case k_workshop_op_loading_model: op_string = "Operation in progress: Loading model file."; break; - case k_workshop_form_op_publishing_update: + case k_workshop_op_publishing_update: op_string = "Operation in progress: publishing submission update " "to steam."; break; - case k_workshop_form_op_downloading_submission: + case k_workshop_op_downloading_submission: op_string = "Operation in progress: downloading existing submission" " from Steam services."; break; diff --git a/workshop.h b/workshop.h index d4f1b6d..4bea096 100644 --- a/workshop.h +++ b/workshop.h @@ -33,6 +33,14 @@ struct async_workshop_metadata_info{ #define WORKSHOP_VIEW_PER_PAGE 15 struct workshop_form{ + enum workshop_op { + k_workshop_op_none, + k_workshop_op_downloading_submission, + k_workshop_op_publishing_update, + k_workshop_op_loading_model + } + op; + struct { char title[80]; char description[512]; -- 2.25.1