From: hgn Date: Wed, 2 Oct 2024 11:12:41 +0000 (+0100) Subject: move cutscene ui and network ui to magi X-Git-Url: https://skaterift.com/git/?a=commitdiff_plain;h=cf34c70c2416f46a736b3643fe8fcb7f2d3226ec;p=carveJwlIkooP6JGAAIwe30JlM.git move cutscene ui and network ui to magi --- diff --git a/src/client.c b/src/client.c index 595afcf..f535132 100644 --- a/src/client.c +++ b/src/client.c @@ -55,8 +55,12 @@ vg_info(" ' ' '--' [] '----- '----- ' ' '---' " vg_loader_step( remote_players_init, NULL ); - steam_init(); - vg_loader_step( NULL, steam_end ); + if( !g_client.nosteam ) + { + steam_init(); + vg_loader_step( NULL, steam_end ); + } + vg_loader_step( network_init, network_end ); } @@ -73,6 +77,9 @@ void vg_launch_opt(void) if( vg_long_opt( "demo" ) ) g_client.demo_mode = 1; + if( vg_long_opt( "nosteam" ) ) + g_client.nosteam = 1; + game_launch_opt(); } diff --git a/src/client.h b/src/client.h index e3435b9..d3f3608 100644 --- a/src/client.h +++ b/src/client.h @@ -9,7 +9,7 @@ struct game_client { - bool loaded, demo_mode; + bool loaded, demo_mode, nosteam; } extern g_client; diff --git a/src/metascene.c b/src/metascene.c index ffe0f36..5556566 100644 --- a/src/metascene.c +++ b/src/metascene.c @@ -1,4 +1,5 @@ #include "metascene.h" +#include "vg/vg_magi.h" void metascene_load( ms_context *ms, const char *path, void *alloc ) { @@ -86,46 +87,6 @@ struct } _cutscene; -void cutscene_debug_ui( ui_context *ctx ) -{ - ms_strip *usage[8]; - for( u32 i=0; ioffset + usage[k]->length < strip->offset ) - { - usage[k] = NULL; - } - } - - if( !usage[k] ) - { - usage[k] = strip; - layer = k; - break; - } - } - - ui_rect box = { strip->offset, layer*32, strip->length, 30 }; - u32 colour = af_str_hash( &_cutscene.meta.af, strip->pstr_name ); - - ui_fill( ctx, box, colour | 0xff000000 ); - ui_text( ctx, box, af_str( &_cutscene.meta.af, strip->pstr_name ), 1, - k_ui_align_middle_center, 0 ); - } - - ui_fill( ctx, (ui_rect){ (f32)_cutscene.time*_cutscene.meta.info.framerate, - 0, 1, VG_ARRAY_LEN(usage)*32 }, 0xffffffff ); -} - /* * Find associated entity data. We should also probably do this on the world * thingy @@ -333,7 +294,7 @@ static void cutscene_load_thread( void *data ) vg_async_call( sync_cutscene_loaded, NULL, 0 ); } -static int ccmd_cutscene_play( int argc, const char *argv[] ) +static int cmd_cutscene_play( int argc, const char *argv[] ) { if( argc == 1 ) { @@ -373,11 +334,6 @@ static int ccmd_cutscene_play( int argc, const char *argv[] ) } } -void cutscene_init(void) -{ - vg_console_reg_cmd( "cutscene", ccmd_cutscene_play, NULL ); -} - /* * Currently draws everything as skinned meshes. */ @@ -588,3 +544,77 @@ void cutscene_render( world_instance *world, vg_camera *cam ) } } } + +/* cutscene magi + * ---------------------------------------------------------------------------- + */ + +static void cb_cutscene_view( ui_context *ctx, ui_rect rect, + struct vg_magi_panel *magi ) +{ + ms_strip *usage[8]; + for( u32 i=0; ioffset + usage[k]->length < strip->offset ) + { + usage[k] = NULL; + } + } + + if( !usage[k] ) + { + usage[k] = strip; + layer = k; + break; + } + } + + ui_rect box = { strip->offset, layer*32, strip->length, 30 }; + box[0] += root[0]; + box[1] += root[1]; + + if( ui_clip( rect, box, box ) ) + { + u32 colour = af_str_hash( &_cutscene.meta.af, strip->pstr_name ); + + ui_fill( ctx, box, colour | 0xff000000 ); + ui_text( ctx, box, af_str( &_cutscene.meta.af, strip->pstr_name ), 1, + k_ui_align_middle_center, 0 ); + } + } + + ui_rect cursor = { (f32)_cutscene.time*_cutscene.meta.info.framerate, + 0, 1, VG_ARRAY_LEN(usage)*32 }; + cursor[0] += root[0]; + cursor[1] += root[1]; + if( ui_clip( rect, cursor, cursor ) ) + ui_fill( ctx, cursor, 0xffffffff ); +} + +static int cmd_cutscene_inspector( int argc, const char *argv[] ) +{ + ui_px w = 800, h = 400; + struct vg_magi_panel *magi = _vg_magi_open( w, h, VG_MAGI_ALL ); + magi->title = "Cutscene Inpsector"; + magi->data = NULL; + magi->ui_cb = cb_cutscene_view; + magi->close_cb = NULL; + return 1; +} + +void cutscene_init(void) +{ + vg_console_reg_cmd( "cutscene", cmd_cutscene_play, NULL ); + vg_console_reg_cmd( "cutscene_inspector", cmd_cutscene_inspector, NULL ); +} diff --git a/src/metascene.h b/src/metascene.h index cd57bff..abcc7c2 100644 --- a/src/metascene.h +++ b/src/metascene.h @@ -75,5 +75,4 @@ struct ms_curve_keyframe void metascene_load( ms_context *ms, const char *path, void *alloc ); void cutscene_init(void); void cutscene_render( world_instance *world, vg_camera *cam ); -void cutscene_debug_ui( ui_context *ctx ); void cutscene_update( f32 delta ); diff --git a/src/network.c b/src/network.c index 0869612..7a7e497 100644 --- a/src/network.c +++ b/src/network.c @@ -750,8 +750,6 @@ static int cmd_network_send_message( int argc, const char *argv[] ){ void network_init(void) { - vg_console_reg_var( "network_info", &network_client.network_info, - k_var_dtype_i32, VG_VAR_PERSISTENT ); vg_console_reg_var( "auto_connect", &network_client.auto_connect, k_var_dtype_i32, VG_VAR_PERSISTENT ); if( steam_ready ){ diff --git a/src/network.h b/src/network.h index 6af51af..5152c36 100644 --- a/src/network.h +++ b/src/network.h @@ -52,7 +52,6 @@ struct network_client f64 last_attempt, last_frame; u32 retries; - i32 network_info; i32 auto_connect; struct network_request { diff --git a/src/player_remote.c b/src/player_remote.c index 6fdf04f..c191c03 100644 --- a/src/player_remote.c +++ b/src/player_remote.c @@ -10,6 +10,7 @@ #include "ent_region.h" #include "shaders/model_entity.h" #include "vg/vg_steam_friends.h" +#include "vg/vg_magi.h" struct global_netplayers netplayers; @@ -393,126 +394,6 @@ void remote_player_send_playerframe(void) } } -/* - * Updates network traffic stats - */ -void remote_player_debug_update(void) -{ - if( (vg.time_real - netplayers.last_data_measurement) > 1.0 ){ - netplayers.last_data_measurement = vg.time_real; - u32 total_down = 0; - - for( u32 i=0; iactive ){ - total_down += player->down_bytes; - player->down_kbs = ((f32)player->down_bytes)/1024.0f; - player->down_bytes = 0; - } - } - - netplayers.down_kbs = ((f32)total_down)/1024.0f; - netplayers.up_kbs = ((f32)netplayers.up_bytes)/1024.0f; - netplayers.up_bytes = 0; - } -} - -/* - * Debugging information - */ -void remote_player_network_imgui( ui_context *ctx, m4x4f pv ) -{ - if( network_client.user_intent == k_server_intent_online ) - { - if( !(steam_ready && - (network_client.state == k_ESteamNetworkingConnectionState_Connected))) - { - char buf[128]; - vg_str str; - vg_strnull( &str, buf, sizeof(buf) ); - u32 fg = 0; - network_status_string( &str, &fg ); - ui_text( ctx, (ui_rect){ vg.window_x - 200, 0, 200, 48 }, buf, 1, - k_ui_align_middle_center, fg ); - } - } - - if( !network_client.network_info ) - return; - - ui_rect panel = { (vg.window_x / 2) - 200, 0, 400, 600 }; - ui_fill( ctx, panel, (ui_colour(ctx, k_ui_bg)&0x00ffffff)|0x50000000 ); - - ctx->font = &vgf_default_title; - ui_info( ctx, panel, "Network" ); - ctx->font = &vgf_default_large; - ui_info( ctx, panel, "Status" ); - ctx->font = &vgf_default_small; - - char buf[512]; - const char *netstatus = "PROGRAMMING ERROR"; - - struct { enum ESteamNetworkingConnectionState state; const char *str; } - states[] = { - { k_ESteamNetworkingConnectionState_None, "None" }, - { k_ESteamNetworkingConnectionState_Connecting, - (const char *[]){"Connecting -", - "Connecting /", - "Connecting |", - "Connecting \\", - }[(u32)(vg.time_real/0.25) & 0x3 ] }, - { k_ESteamNetworkingConnectionState_FindingRoute, "Finding Route" }, - { k_ESteamNetworkingConnectionState_Connected, "Connected" }, - { k_ESteamNetworkingConnectionState_ClosedByPeer, "Closed by peer" }, - { k_ESteamNetworkingConnectionState_ProblemDetectedLocally, - "Problem Detected Locally" }, - { k_ESteamNetworkingConnectionState_FinWait, "Fin Wait" }, - { k_ESteamNetworkingConnectionState_Linger, "Linger" }, - { k_ESteamNetworkingConnectionState_Dead, "Dead" } - }; - for( u32 i=0; iactive ) - { - const char *sysname = "invalid"; - - if( player->subsystem < k_player_subsystem_max ) - { - sysname = player_subsystems[ player->subsystem ]->name; - } - snprintf( buf, 512, "#%u: %s [%s] D%.1fkbs", - i, player->username, sysname, player->down_kbs ); - ui_info( ctx, panel, buf ); - } - } - } - else - { - ui_info( ctx, panel, "offline" ); - } -} - static void remote_player_effect( struct network_player *player, player_pose *final_pose ){ /* effects */ @@ -805,16 +686,6 @@ static int remote_players_randomize( int argc, const char *argv[] ){ return 0; } -void remote_players_init(void) -{ - vg_console_reg_cmd( "add_test_players", remote_players_randomize, NULL ); - vg_console_reg_var( "k_show_own_name", &k_show_own_name, - k_var_dtype_i32, 0 ); - for( u32 i=0; i 1.0 ){ + netplayers.last_data_measurement = vg.time_real; + u32 total_down = 0; + + for( u32 i=0; iactive ){ + total_down += player->down_bytes; + player->down_kbs = ((f32)player->down_bytes)/1024.0f; + player->down_bytes = 0; + } + } + + netplayers.down_kbs = ((f32)total_down)/1024.0f; + netplayers.up_kbs = ((f32)netplayers.up_bytes)/1024.0f; + netplayers.up_bytes = 0; + } +} + +/* + * Debugging information + */ +static void cb_network_view( ui_context *ctx, ui_rect rect, + struct vg_magi_panel *magi ) +{ + ctx->font = &vgf_default_title; + ui_info( ctx, rect, "Network" ); + ctx->font = &vgf_default_large; + ui_info( ctx, rect, "Status" ); + ctx->font = &vgf_default_small; + + char buf[512]; + const char *netstatus = "PROGRAMMING ERROR"; + + struct { enum ESteamNetworkingConnectionState state; const char *str; } + states[] = { + { k_ESteamNetworkingConnectionState_None, "None" }, + { k_ESteamNetworkingConnectionState_Connecting, + (const char *[]){"Connecting -", + "Connecting /", + "Connecting |", + "Connecting \\", + }[(u32)(vg.time_real/0.25) & 0x3 ] }, + { k_ESteamNetworkingConnectionState_FindingRoute, "Finding Route" }, + { k_ESteamNetworkingConnectionState_Connected, "Connected" }, + { k_ESteamNetworkingConnectionState_ClosedByPeer, "Closed by peer" }, + { k_ESteamNetworkingConnectionState_ProblemDetectedLocally, + "Problem Detected Locally" }, + { k_ESteamNetworkingConnectionState_FinWait, "Fin Wait" }, + { k_ESteamNetworkingConnectionState_Linger, "Linger" }, + { k_ESteamNetworkingConnectionState_Dead, "Dead" } + }; + for( u32 i=0; iactive ) + { + const char *sysname = "invalid"; + + if( player->subsystem < k_player_subsystem_max ) + { + sysname = player_subsystems[ player->subsystem ]->name; + } + snprintf( buf, 512, "#%u: %s [%s] D%.1fkbs", + i, player->username, sysname, player->down_kbs ); + ui_info( ctx, rect, buf ); + } + } + } + else + { + ui_info( ctx, rect, "offline" ); + } +} + +static int cmd_network_info( int argc, const char *argv[] ) +{ + ui_px w = 500, h = 400; + struct vg_magi_panel *magi = _vg_magi_open( w, h, VG_MAGI_ALL ); + magi->title = "Network Info"; + magi->data = NULL; + magi->ui_cb = cb_network_view; + magi->close_cb = NULL; + return 1; +} + +void remote_players_init(void) +{ + vg_console_reg_cmd( "network_info", cmd_network_info, NULL ); + vg_console_reg_cmd( "add_test_players", remote_players_randomize, NULL ); + vg_console_reg_var( "k_show_own_name", &k_show_own_name, + k_var_dtype_i32, 0 ); + for( u32 i=0; i