From 0ec8f61a0edf847ad46ee6f6a430433461d120b5 Mon Sep 17 00:00:00 2001 From: Charles Lohr Date: Fri, 29 Oct 2004 01:58:56 +0000 Subject: [PATCH] Update & user list fix --- stepmania/src/NetworkSyncServer.cpp | 21 ++++++++++++++++++--- stepmania/src/NetworkSyncServer.h | 8 ++++++++ stepmania/src/ScreenNetEvaluation.cpp | 4 ++-- stepmania/src/ScreenNetSelectMusic.cpp | 7 +++---- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/stepmania/src/NetworkSyncServer.cpp b/stepmania/src/NetworkSyncServer.cpp index fc54ac2099..45606e42fe 100644 --- a/stepmania/src/NetworkSyncServer.cpp +++ b/stepmania/src/NetworkSyncServer.cpp @@ -108,6 +108,7 @@ GameClient::GameClient() isStarting = false; //Used for after ScreenNetMusicSelect but before InGame wasIngame = false; lowerJudge = false; + NetScreenInfo = NS_NOWHERE; } void StepManiaLanServer::Disconnect(const unsigned int clientNum) @@ -131,6 +132,7 @@ void StepManiaLanServer::Disconnect(const unsigned int clientNum) ++Iterator; } } + SendUserList (); } int GameClient::GetData(PacketFunctions& Packet) @@ -825,7 +827,7 @@ void StepManiaLanServer::SendUserList() if (Client[x]->Player[y].name.length() == 0) Reply.Write1(0); else - Reply.Write1(1); + Reply.Write1( (int)Client[x]->NetScreenInfo + 1); Reply.WriteNT(Client[x]->Player[y].name); } @@ -847,6 +849,8 @@ void StepManiaLanServer::ScreenNetMusicSelectStatus(PacketFunctions& Packet, uns else Client[clientNum]->inNetMusicSelect = false; + GameClient::LastNetScreen LastScreenInfo = GameClient::NS_NOWHERE; + switch (EntExitCode) { case 0: @@ -854,15 +858,26 @@ void StepManiaLanServer::ScreenNetMusicSelectStatus(PacketFunctions& Packet, uns break; case 1: message += " entered the song selection."; + LastScreenInfo = GameClient::NS_SELECTSCREEN; break; case 2: - message += " went into options."; + message += " exited options."; break; case 3: - message += " came back from options."; + message += " went into options."; + LastScreenInfo = GameClient::NS_OPTIONS; + break; + case 4: + //no need to mention exiting of options + break; + case 5: + message += " finished the game."; + LastScreenInfo = GameClient::NS_EVALUATION; break; } ServerChat(message); + Client[clientNum]->NetScreenInfo = LastScreenInfo; + SendUserList (); } CString StepManiaLanServer::ListPlayers() diff --git a/stepmania/src/NetworkSyncServer.h b/stepmania/src/NetworkSyncServer.h index 159b6e933f..c3d6e618f4 100644 --- a/stepmania/src/NetworkSyncServer.h +++ b/stepmania/src/NetworkSyncServer.h @@ -58,6 +58,14 @@ public: bool isStarting; bool wasIngame; bool lowerJudge; + + enum LastNetScreen + { + NS_NOWHERE = 0, + NS_SELECTSCREEN, + NS_OPTIONS, + NS_EVALUATION + } NetScreenInfo; private: string build; diff --git a/stepmania/src/ScreenNetEvaluation.cpp b/stepmania/src/ScreenNetEvaluation.cpp index d61a7beac0..909e1a140e 100644 --- a/stepmania/src/ScreenNetEvaluation.cpp +++ b/stepmania/src/ScreenNetEvaluation.cpp @@ -64,7 +64,7 @@ ScreenNetEvaluation::ScreenNetEvaluation (const CString & sClassName) : ScreenEv cx+=USERDX; cy+=USERDY; } - NSMAN->ReportNSSOnOff( 1 ); + NSMAN->ReportNSSOnOff( 5 ); } void ScreenNetEvaluation::MenuLeft( PlayerNumber pn, const InputEventType type ) @@ -114,7 +114,7 @@ void ScreenNetEvaluation::HandleScreenMessage( const ScreenMessage SM ) } return; //no need to let ScreenEvaluation get ahold of this. case SM_GoToNextScreen: - NSMAN->ReportNSSOnOff( 0 ); + NSMAN->ReportNSSOnOff( 4 ); break; } ScreenEvaluation::HandleScreenMessage( SM ); diff --git a/stepmania/src/ScreenNetSelectMusic.cpp b/stepmania/src/ScreenNetSelectMusic.cpp index bbf208526c..8fb9c52986 100644 --- a/stepmania/src/ScreenNetSelectMusic.cpp +++ b/stepmania/src/ScreenNetSelectMusic.cpp @@ -26,7 +26,6 @@ #define CHATOUTPUT_COLOR THEME->GetMetricC("ScreenNetSelectMusic","ChatOutputBoxColor") #define SHOW_CHAT_LINES THEME->GetMetricI("ScreenNetSelectMusic","ChatOutputLines") - #define GROUPSBG_WIDTH THEME->GetMetricF("ScreenNetSelectMusic","GroupsBGWidth") #define GROUPSBG_HEIGHT THEME->GetMetricF("ScreenNetSelectMusic","GroupsBGHeight") #define GROUPSBG_COLOR THEME->GetMetricC("ScreenNetSelectMusic","GroupsBGColor") @@ -460,7 +459,7 @@ void ScreenNetSelectMusic::HandleScreenMessage( const ScreenMessage SM ) break; case SM_BackFromOpts: //XXX: HACK: This will causes ScreenSelectOptions to go back here. - NSMAN->ReportNSSOnOff(3); + NSMAN->ReportNSSOnOff(1); GAMESTATE->m_bEditing = false; NSMAN->ReportPlayerOptions(); break; @@ -518,7 +517,7 @@ void ScreenNetSelectMusic::MenuLeft( PlayerNumber pn, const InputEventType type break; case SelectOptions: //XXX: HACK: This will causes ScreenSelectOptions to go back here. - NSMAN->ReportNSSOnOff(2); + NSMAN->ReportNSSOnOff(3); GAMESTATE->m_bEditing = true; SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions", SM_BackFromOpts ); break; @@ -576,7 +575,7 @@ void ScreenNetSelectMusic::MenuRight( PlayerNumber pn, const InputEventType type break; case SelectOptions: //XXX: HACK: This will causes ScreenSelectOptions to go back here. - NSMAN->ReportNSSOnOff(2); + NSMAN->ReportNSSOnOff(3); GAMESTATE->m_bEditing = true; SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions", SM_BackFromOpts ); break;