From a3cad63f0fac9180e90d37cade2caabb4c451fa0 Mon Sep 17 00:00:00 2001 From: Charles Lohr Date: Wed, 1 Sep 2004 05:02:28 +0000 Subject: [PATCH] Made chatting save between ScreenNetSelectMusic's --- stepmania/src/NetworkSyncManager.cpp | 6 ++++-- stepmania/src/NetworkSyncManager.h | 2 ++ stepmania/src/ScreenNetSelectMusic.cpp | 24 ++++++++++++++---------- stepmania/src/ScreenNetSelectMusic.h | 3 ++- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/stepmania/src/NetworkSyncManager.cpp b/stepmania/src/NetworkSyncManager.cpp index 3005daa3f5..fdefcc85f8 100644 --- a/stepmania/src/NetworkSyncManager.cpp +++ b/stepmania/src/NetworkSyncManager.cpp @@ -562,9 +562,11 @@ void NetworkSyncManager::ProcessInput() SCREENMAN->SystemMessage( SysMSG ); } break; - case 7: //Chat message from server + case 7: //Chat message from server { - m_WaitingChat = m_packet.ReadNT(); + m_sChatText += m_packet.ReadNT() + " \n "; + //10000 chars backlog should be more than enough + m_sChatText = m_sChatText.Right(10000); SCREENMAN->SendMessageToTopScreen( SM_AddToChat ); } break; diff --git a/stepmania/src/NetworkSyncManager.h b/stepmania/src/NetworkSyncManager.h index 4442657b84..2541c80c86 100644 --- a/stepmania/src/NetworkSyncManager.h +++ b/stepmania/src/NetworkSyncManager.h @@ -100,6 +100,8 @@ public: int m_iSelectMode; void SelectUserSong(); + CString m_sChatText; + bool isLanServer; //Must be public for ScreenNetworkOptions StepManiaLanServer *LANserver; private: diff --git a/stepmania/src/ScreenNetSelectMusic.cpp b/stepmania/src/ScreenNetSelectMusic.cpp index 281b9951d4..0c6dd3fda8 100644 --- a/stepmania/src/ScreenNetSelectMusic.cpp +++ b/stepmania/src/ScreenNetSelectMusic.cpp @@ -86,8 +86,7 @@ ScreenNetSelectMusic::ScreenNetSelectMusic( const CString& sName ) : ScreenWithM SET_XY_AND_ON_COMMAND( m_textChatInput ); this->AddChild( &m_textChatInput ); - - m_textOutHidden.LoadFromFont( THEME->GetPathF(m_sName,"chat") ); + m_textOutHidden.LoadFromFont( THEME->GetPathF("ScreenNetSelectMusic","chat") ); m_textOutHidden.SetWrapWidthPixels( (int)(CHATOUTPUT_WIDTH * 2) ); m_textChatOutput.LoadFromFont( THEME->GetPathF(m_sName,"chat") ); @@ -98,6 +97,15 @@ ScreenNetSelectMusic::ScreenNetSelectMusic( const CString& sName ) : ScreenWithM SET_XY_AND_ON_COMMAND( m_textChatOutput ); this->AddChild( &m_textChatOutput ); + //Display updated chat (maybe this should be a function)? + m_textOutHidden.SetText( NSMAN->m_sChatText ); + vector wLines; + m_textOutHidden.GetLines( wLines ); + m_actualText = ""; + for (unsigned i = max(int(wLines.size()) - SHOW_CHAT_LINES, 0 ) ; i < wLines.size() ; ++i) + m_actualText += WStringToCString( wLines[i] )+'\n'; + m_textChatOutput.SetText( m_actualText ); + //Groups m_rectGroupsBackground.SetDiffuse( GROUPSBG_COLOR ); @@ -329,17 +337,13 @@ void ScreenNetSelectMusic::HandleScreenMessage( const ScreenMessage SM ) break; case SM_AddToChat: { - //This SHOULD be done with cropping, but I cant seem to get - //text to crop properly. - m_sChatText += NSMAN->m_WaitingChat + " \n "; //Forced newline - NSMAN->m_WaitingChat = ""; - m_textOutHidden.SetText( m_sChatText ); + m_textOutHidden.SetText( NSMAN->m_sChatText ); vector wLines; m_textOutHidden.GetLines( wLines ); - CString actualText = ""; + m_actualText = ""; for (unsigned i = max(int(wLines.size()) - SHOW_CHAT_LINES, 0 ) ; i < wLines.size() ; ++i) - actualText += WStringToCString(wLines[i])+'\n'; - m_textChatOutput.SetText( actualText ); + m_actualText += WStringToCString( wLines[i] )+'\n'; + m_textChatOutput.SetText( m_actualText ); break; } case SM_ChangeSong: diff --git a/stepmania/src/ScreenNetSelectMusic.h b/stepmania/src/ScreenNetSelectMusic.h index b51d427ad9..b450495b7d 100644 --- a/stepmania/src/ScreenNetSelectMusic.h +++ b/stepmania/src/ScreenNetSelectMusic.h @@ -67,7 +67,8 @@ private: Quad m_rectChatInputBox; Quad m_rectChatOutputBox; CString m_sTextInput; - CString m_sChatText; + CString m_actualText; + //Selection Quad m_rectSelection;