diff --git a/stepmania/src/NetworkSyncManager.cpp b/stepmania/src/NetworkSyncManager.cpp index cf2badb073..56b95d4149 100644 --- a/stepmania/src/NetworkSyncManager.cpp +++ b/stepmania/src/NetworkSyncManager.cpp @@ -39,6 +39,7 @@ void NetworkSyncManager::SelectUserSong() { } const ScreenMessage SM_AddToChat = ScreenMessage(SM_User+4); const ScreenMessage SM_ChangeSong = ScreenMessage(SM_User+5); +const ScreenMessage SM_GotEval = ScreenMessage(SM_User+6); NetworkSyncManager::NetworkSyncManager( LoadingWindow *ld ) @@ -394,6 +395,7 @@ void NetworkSyncManager::StartRequest(short position) //This needs to be reset before ScreenEvaluation could possibly be called for (int i=0; i< NETMAXPLAYERS; i++) { + m_EvalPlayerData[i].name=0; m_EvalPlayerData[i].grade=0; m_EvalPlayerData[i].score=0; m_EvalPlayerData[i].difficulty=(Difficulty)0; @@ -515,6 +517,8 @@ void NetworkSyncManager::ProcessInput() case 4: { int PlayersInPack = m_packet.Read1(); + for (int i=0;iSendMessageToTopScreen( SM_GotEval ); } break; case 5: //Scoreboard Update diff --git a/stepmania/src/NetworkSyncManager.h b/stepmania/src/NetworkSyncManager.h index fbc9063ddc..3500a22bb0 100644 --- a/stepmania/src/NetworkSyncManager.h +++ b/stepmania/src/NetworkSyncManager.h @@ -15,6 +15,7 @@ const int NETNUMTAPSCORES=8; struct EndOfGame_PlayerData { + int name; int score; int grade; Difficulty difficulty; diff --git a/stepmania/src/ScreenNetEvaluation.cpp b/stepmania/src/ScreenNetEvaluation.cpp index bced3eddc9..88ce2ba978 100644 --- a/stepmania/src/ScreenNetEvaluation.cpp +++ b/stepmania/src/ScreenNetEvaluation.cpp @@ -13,8 +13,11 @@ const int NUM_SCORE_DIGITS = 9; #define MAX_COMBO_NUM_DIGITS THEME->GetMetricI("ScreenEvaluation","MaxComboNumDigits") +const ScreenMessage SM_GotEval = ScreenMessage(SM_User+6); + ScreenNetEvaluation::ScreenNetEvaluation (const CString & sClassName) : ScreenEvaluation( sClassName ) { + m_bHasStats = false; m_pActivePlayer = PLAYER_1; FOREACH_PlayerNumber (pn) @@ -48,22 +51,15 @@ ScreenNetEvaluation::ScreenNetEvaluation (const CString & sClassName) : ScreenEv for( int i=0; im_PlayerNames[NSMAN->m_ActivePlayer[i]] == GAMESTATE->GetPlayerDisplayName(m_pActivePlayer) ) - m_iCurrentPlayer = i; - m_textUsers[i].LoadFromFont( THEME->GetPathF(m_sName,"names") ); m_textUsers[i].SetName( "User" ); m_textUsers[i].SetShadowLength( 1 ); m_textUsers[i].SetXY( cx, cy ); - m_textUsers[i].SetText( NSMAN->m_PlayerNames[NSMAN->m_ActivePlayer[i]] ); - ON_COMMAND( m_textUsers[i] ); this->AddChild( &m_textUsers[i] ); cx+=USERDX; cy+=USERDY; } - - COMMAND( m_textUsers[m_iCurrentPlayer], "Sel" ); } void ScreenNetEvaluation::MenuLeft( PlayerNumber pn, const InputEventType type ) @@ -73,6 +69,8 @@ void ScreenNetEvaluation::MenuLeft( PlayerNumber pn, const InputEventType type ) void ScreenNetEvaluation::MenuUp( PlayerNumber pn, const InputEventType type ) { + if (!m_bHasStats) + return; COMMAND( m_textUsers[m_iCurrentPlayer], "DeSel" ); m_iCurrentPlayer = (m_iCurrentPlayer + m_iActivePlayers - 1) % m_iActivePlayers; COMMAND( m_textUsers[m_iCurrentPlayer], "Sel" ); @@ -86,12 +84,33 @@ void ScreenNetEvaluation::MenuRight( PlayerNumber pn, const InputEventType type void ScreenNetEvaluation::MenuDown( PlayerNumber pn, const InputEventType type ) { + if (!m_bHasStats) + return; COMMAND( m_textUsers[m_iCurrentPlayer], "DeSel" ); m_iCurrentPlayer = (m_iCurrentPlayer + 1) % m_iActivePlayers; COMMAND( m_textUsers[m_iCurrentPlayer], "Sel" ); UpdateStats(); } +void ScreenNetEvaluation::HandleScreenMessage( const ScreenMessage SM ) +{ + switch( SM ) + { + case SM_GotEval: + m_bHasStats = true; + for( int i=0; im_PlayerNames[NSMAN->m_ActivePlayer[i]] == GAMESTATE->GetPlayerDisplayName(m_pActivePlayer) ) + m_iCurrentPlayer = i; + + m_textUsers[i].SetText( NSMAN->m_PlayerNames[NSMAN->m_EvalPlayerData[i].name] ); + ON_COMMAND( m_textUsers[i] ); + } + COMMAND( m_textUsers[m_iCurrentPlayer], "Sel" ); + break; + } +} + void ScreenNetEvaluation::UpdateStats() { m_Grades[m_pActivePlayer].SetGrade( (PlayerNumber)m_pActivePlayer, (Grade)NSMAN->m_EvalPlayerData[m_iCurrentPlayer].grade ); diff --git a/stepmania/src/ScreenNetEvaluation.h b/stepmania/src/ScreenNetEvaluation.h index d25dfe3f56..dd3dd24b07 100644 --- a/stepmania/src/ScreenNetEvaluation.h +++ b/stepmania/src/ScreenNetEvaluation.h @@ -4,6 +4,7 @@ #include "NetworkSyncManager.h" #include "Quad.h" #include "BitmapText.h" +#include "ScreenMessage.h" class ScreenNetEvaluation: public ScreenEvaluation { @@ -14,6 +15,7 @@ protected: virtual void MenuUp( PlayerNumber pn, const InputEventType type ); virtual void MenuRight( PlayerNumber pn, const InputEventType type ); virtual void MenuDown( PlayerNumber pn, const InputEventType type ); + virtual void HandleScreenMessage( const ScreenMessage SM ); void UpdateStats( ); private: @@ -24,4 +26,6 @@ private: int m_iActivePlayers; PlayerNumber m_pActivePlayer; + + bool m_bHasStats; }; \ No newline at end of file