From 017423601b20377126053af005904d927507d3a5 Mon Sep 17 00:00:00 2001 From: Taylor Richards Date: Mon, 15 Feb 2016 20:00:30 -0500 Subject: [PATCH] add PXO support to standalone --- include/multi.h | 2 +- src/network/multi.cpp | 3 +++ src/network/multi_fstracker.cpp | 3 --- src/network/multi_options.cpp | 5 ++++- src/network/stand_server.cpp | 26 ++++++++++++++++++++++++++ 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/include/multi.h b/include/multi.h index d61343d..79af3e7 100644 --- a/include/multi.h +++ b/include/multi.h @@ -421,7 +421,7 @@ struct CFILE; #define MULTI_PERM_OBSERVER(np) ((np.flags & NETINFO_FLAG_OBSERVER) && !(np.flags & NETINFO_FLAG_OBS_PLAYER)) // are we playing on a master tracker registered server -#define MULTI_IS_TRACKER_GAME ( (Multi_options_g.pxo == 1) && (Game_mode & GM_MULTIPLAYER) && (Net_player->flags & NETINFO_FLAG_MT_CONNECTED) ) +#define MULTI_IS_TRACKER_GAME ( (Game_mode & GM_MULTIPLAYER) && (Net_player->flags & NETINFO_FLAG_MT_CONNECTED) ) // ---------------------------------------------------------------------------------------- diff --git a/src/network/multi.cpp b/src/network/multi.cpp index df5ac15..9c54c4a 100644 --- a/src/network/multi.cpp +++ b/src/network/multi.cpp @@ -1739,6 +1739,9 @@ void standalone_main_init() game_flush(); ship_init(); + // login to game tracker + std_tracker_login(); + std_debug_set_standalone_state_string("Main Do"); std_set_standalone_fps((float)0); std_multi_set_standalone_missiontime((float)0); diff --git a/src/network/multi_fstracker.cpp b/src/network/multi_fstracker.cpp index aac8f64..ff3ef11 100644 --- a/src/network/multi_fstracker.cpp +++ b/src/network/multi_fstracker.cpp @@ -1294,17 +1294,14 @@ int multi_fs_tracker_validate_mission_std() switch(ret_val){ // timeout case -2: - std_destroy_gen_dialog(); return MVALID_STATUS_UNKNOWN; // invalid case -1: - std_destroy_gen_dialog(); return MVALID_STATUS_INVALID; // valid, success case 1: - std_destroy_gen_dialog(); return MVALID_STATUS_VALID; } diff --git a/src/network/multi_options.cpp b/src/network/multi_options.cpp index fa500b6..27dbb4b 100644 --- a/src/network/multi_options.cpp +++ b/src/network/multi_options.cpp @@ -211,6 +211,8 @@ #include "multi_voice.h" #include "multi_options.h" #include "multi_team.h" +#include "multi_fstracker.h" + // ---------------------------------------------------------------------------------- // MULTI OPTIONS DEFINES/VARS @@ -303,9 +305,10 @@ void multi_options_read_config() if(Is_standalone){ if(SETTING("+pxo")){ // setup PXO mode + Multi_options_g.pxo = 1; NEXT_TOKEN(); if(tok != NULL){ - // whee! + SDL_strlcpy(Multi_fs_tracker_channel, tok, SDL_arraysize(Multi_fs_tracker_channel)); } } else if(SETTING("+name")){ diff --git a/src/network/stand_server.cpp b/src/network/stand_server.cpp index 964d47c..72f6762 100644 --- a/src/network/stand_server.cpp +++ b/src/network/stand_server.cpp @@ -24,6 +24,7 @@ #include "missiongoals.h" #include "cmdline.h" #include "multi_kick.h" +#include "multi_fstracker.h" #include #include @@ -1131,6 +1132,31 @@ void std_gen_set_text(const char *str, int field_num) } Standalone_update_flags |= STD_UFLAG_POPUP; + + // force ws write since do_frame() may not happen until popup is done + lws_callback_on_writable_all_protocol(stand_context, &stand_protocols[1]); + lws_service(stand_context, 0); +} + +void std_tracker_notify_login_fail() +{ + +} + +void std_tracker_login() +{ + if ( !Multi_options_g.pxo ) { + return; + } + + multi_fs_tracker_init(); + + if ( !multi_fs_tracker_inited() ) { + std_tracker_notify_login_fail(); + return; + } + + multi_fs_tracker_login_freespace(); } void std_connect_set_host_connect_status() -- 2.39.2