From 42b6fe9808ffa8e4159b2830fe549cab2438d235 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Mon, 5 Mar 2007 07:03:36 +0000 Subject: [PATCH] working on late join --- stepmania/src/GameState.cpp | 2 ++ stepmania/src/ScreenSelectMusic.cpp | 31 ++++++++++++++++++++++------- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index a5c76cf8c9..504664971a 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -1991,6 +1991,8 @@ public: PlayerNumber pn = Enum::Check(L, 1); if( lua_isnil(L,2) ) { p->m_pCurSteps[pn].Set( NULL ); } else { Steps *pS = Luna::check(L,2); p->m_pCurSteps[pn].Set( pS ); } + + // Why Broadcast again? This is double-broadcasting. -Chris MESSAGEMAN->Broadcast( (MessageID)(Message_CurrentStepsP1Changed+pn) ); return 0; } diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 8c469a9ad9..30941cfef7 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -297,10 +297,19 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) if( input.MenuI == MENU_BUTTON_START && input.type == IET_FIRST_PRESS && GAMESTATE->JoinInput(input.pn) ) { - int iSel = 0; - m_iSelection[input.pn] = iSel; - SwitchToPreferredDifficulty(); + PlayerNumber pn = input.pn; + m_iSelection[pn] = iSel; + if( GAMESTATE->IsCourseMode() ) + { + Trail* pTrail = m_vpTrails.empty()? NULL: m_vpTrails[m_iSelection[pn]]; + GAMESTATE->m_pCurTrail[pn].Set( pTrail ); + } + else + { + Steps* pSteps = m_vpSteps.empty()? NULL: m_vpSteps[m_iSelection[pn]]; + GAMESTATE->m_pCurSteps[pn].Set( pSteps ); + } return; // don't handle this press again below } @@ -326,13 +335,19 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) switch( input.MenuI ) { case GAME_BUTTON_SELECT: - this->PlayCommand( ssprintf("OptionsClosedP%i", pn+1) ); - m_OptionsList[pn].Close(); + { + Message msg("OptionsClosed"); + msg.SetParam( "Player", pn ); + MESSAGEMAN->Broadcast( msg ); + m_OptionsList[pn].Close(); + } break; case GAME_BUTTON_START: if( m_OptionsList[pn].Start() ) { - this->PlayCommand( ssprintf("OptionsClosedP%i", pn+1) ); + Message msg("OptionsClosed"); + msg.SetParam( "Player", pn ); + MESSAGEMAN->Broadcast( msg ); m_OptionsList[pn].Close(); } break; @@ -347,7 +362,9 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) { if( input.type == IET_FIRST_PRESS && input.MenuI == GAME_BUTTON_SELECT ) { - this->PlayCommand( ssprintf("OptionsOpenedP%i", pn+1) ); + Message msg("OptionsOpened"); + msg.SetParam( "Player", pn ); + MESSAGEMAN->Broadcast( msg ); m_OptionsList[pn].Open(); return; }