minor final stuff
authorhgn <hgodden00@gmail.com>
Fri, 23 Jun 2023 13:42:15 +0000 (14:42 +0100)
committerhgn <hgodden00@gmail.com>
Fri, 23 Jun 2023 13:42:15 +0000 (14:42 +0100)
player.c
player.h
player_common.h
player_skate.c
skaterift.c
skaterift.h
workshop.c
workshop.h

index 1cca4caae1a6eb2a88ccc067532d6bed5970edd0..52e56838b8986b815f748163ca84e62890fffd19 100644 (file)
--- 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 ){
    
 }
 
index aba87e0da6600be41ad55d401e0c1ccad737f92d..ec24b865a130c314a085a9bf1875ed18ce705f47 100644 (file)
--- 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 );
 
index 129c335d172b6df606ff8851d5de16030ae3dd3b..1b6ec71641950a08f2703ddb9346e08d968209ae 100644 (file)
@@ -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 );
index 0362b93d3ea22fb59ec119adcbb500aae05bce9a..59ac9f10b3d925a1763d8fb74381ed2b898eef58 100644 (file)
@@ -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],
index d8d91078357af8a8db70af7190cd7b991841d848..175291f06178545609e0222484772f79f20f9de8 100644 (file)
@@ -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();
index bfcaffbb8387e9208be86f681a4362bc03a15ca8..23662035fcd928ea460ab11251e553691523b52d 100644 (file)
@@ -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;
 }
index d9d576d8e47632b53ea17c7f0d916e24c8499b7f..9917359246784df82c73b52d97bd234f7df2b2fc 100644 (file)
@@ -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;
index d4f1b6ddaee20d6275b8d95e0d57411ef05f2126..4bea096ca8cc13428b4cead75f3ca5dc2dbf5cf3 100644 (file)
@@ -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];