X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=network.c;h=74e03bf720187fe7dc2cd85393ba0dd0d01a82f4;hb=be5e25dee2c54c2a22ca3bbb5bbe0eb6149343be;hp=14edfafb1d464a7a219e05d308007d31b657567a;hpb=3b1909cad505b859b9c6524498b1969cd018af8c;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/network.c b/network.c index 14edfaf..74e03bf 100644 --- a/network.c +++ b/network.c @@ -1,3 +1,8 @@ +#include "skaterift.h" +#include "vg/vg_steam.h" +#include "vg/vg_steam_networking.h" +#include "vg/vg_steam_auth.h" +#include "vg/vg_steam_friends.h" #include "player.h" #include "network.h" #include "network_msg.h" @@ -10,9 +15,17 @@ #include "gui.h" #include "ent_region.h" +struct network_client network_client = +{ + .auth_mode = eServerModeAuthentication, + .state = k_ESteamNetworkingConnectionState_None, + .server_adress = "46.101.34.155", + .last_intent_change = -99999.9 +}; + static void scores_update(void); -static int packet_minsize( SteamNetworkingMessage_t *msg, u32 size ){ +int packet_minsize( SteamNetworkingMessage_t *msg, u32 size ){ if( msg->m_cbSize < size ) { vg_error( "Invalid packet size (must be at least %u)\n", size ); return 0; @@ -79,7 +92,8 @@ static void network_send_username(void){ k_nSteamNetworkingSend_Reliable, NULL ); } -static void network_send_region(void){ +void network_send_region(void) +{ if( !network_connected() ) return; @@ -159,9 +173,9 @@ static void network_scoreboard_callback( netmsg_request *res, vg_msg *body, * . * 10+ specific week index */ -static void network_request_scoreboard( const char *mod_uid, - const char *route_uid, - u32 week, u64 userdata ){ +void network_request_scoreboard( const char *mod_uid, + const char *route_uid, + u32 week, u64 userdata ){ if( !network_connected() ) return; @@ -173,7 +187,7 @@ static void network_request_scoreboard( const char *mod_uid, vg_msg_wkvstr( &data, "endpoint", "scoreboard" ); vg_msg_wkvstr( &data, "mod", mod_uid ); vg_msg_wkvstr( &data, "route", route_uid ); - vg_msg_wkvu32( &data, "week", week ); + vg_msg_wkvnum( &data, "week", k_vg_msg_u32, 1, &week ); network_send_request( req, &data, network_scoreboard_callback, userdata ); } @@ -184,8 +198,8 @@ static void network_publish_callback( netmsg_request *res, vg_msg *body, } } -static void network_publish_laptime( const char *mod_uid, - const char *route_uid, f64 lap_time ){ +void network_publish_laptime( const char *mod_uid, + const char *route_uid, f64 lap_time ){ if( !network_connected() ) return; @@ -199,7 +213,7 @@ static void network_publish_laptime( const char *mod_uid, vg_msg_wkvstr( &data, "endpoint", "setlap" ); vg_msg_wkvstr( &data, "mod", mod_uid ); vg_msg_wkvstr( &data, "route", route_uid ); - vg_msg_wkvi32( &data, "time", time_centiseconds ); + vg_msg_wkvnum( &data, "time", k_vg_msg_i32, 1, &time_centiseconds ); network_send_request( req, &data, network_publish_callback, 0 ); } @@ -234,7 +248,8 @@ static void network_request_rx_300_400( SteamNetworkingMessage_t *msg ){ } } -static void network_send_item( enum netmsg_playeritem_type type ){ +void network_send_item( enum netmsg_playeritem_type type ) +{ if( !network_connected() ) return; @@ -266,8 +281,6 @@ static void network_send_item( enum netmsg_playeritem_type type ){ view_id = localplayer.playermodel_view_slot; addon_type = k_addon_type_player; } - else - assert(0); struct addon_cache *cache = &addon_system.cache[addon_type]; vg_pool *pool = &cache->pool; @@ -299,7 +312,13 @@ static void network_disconnect(void){ } } -static void network_status_string( vg_str *str, u32 *colour ){ +void network_status_string( vg_str *str, u32 *colour ) +{ + if( skaterift.demo_mode ){ + vg_strcat( str, "Offline" ); + return; + } + if( steam_ready ){ if( network_client.user_intent == k_server_intent_offline ){ vg_strcat( str, "Offline" ); @@ -341,7 +360,8 @@ static void network_status_string( vg_str *str, u32 *colour ){ } } -static void render_server_status_gui(void){ +void render_server_status_gui(void) +{ render_fb_bind( gpipeline.fb_workshop_preview, 0 ); /* HACK */ @@ -532,7 +552,8 @@ static void poll_remote_connection(void){ } } -static void network_update(void){ +void network_update(void) +{ if( !steam_ready ) return; @@ -552,7 +573,7 @@ static void network_update(void){ if( frame_delta > NETWORK_FRAMERATE ){ network_client.last_frame = vg.time_real; remote_player_send_playerframe(); - player__clear_sfx_buffer(); + localplayer.sfx_buffer_count = 0; } remote_player_debug_update(); @@ -579,7 +600,8 @@ static void network_update(void){ } } -static void chat_send_message( const char *message ){ +void chat_send_message( const char *message ) +{ if( !network_connected() ){ return; } @@ -613,7 +635,8 @@ static int cmd_network_send_message( int argc, const char *argv[] ){ return 0; } -static void network_init(void){ +void network_init(void) +{ vg_console_reg_var( "network_info", &network_client.network_info, k_var_dtype_i32, VG_VAR_PERSISTENT ); if( steam_ready ){ @@ -639,7 +662,8 @@ static void network_init(void){ } } -static void network_end(void){ +void network_end(void) +{ /* TODO: Send buffered highscores that were not already */ if( (network_client.state == k_ESteamNetworkingConnectionState_Connected) || (network_client.state == k_ESteamNetworkingConnectionState_Connecting) )