broadcast on changed course/trail

This commit is contained in:
Chris Danford
2005-05-18 07:14:19 +00:00
parent 0986e61f3d
commit e504fb4e98
12 changed files with 36 additions and 33 deletions
+4 -4
View File
@@ -122,9 +122,9 @@ bool GameCommand::DescribesCurrentMode( PlayerNumber pn ) const
return false; return false;
if( m_pCharacter && GAMESTATE->m_pCurCharacters[pn] != m_pCharacter ) if( m_pCharacter && GAMESTATE->m_pCurCharacters[pn] != m_pCharacter )
return false; return false;
if( m_pCourse && GAMESTATE->m_pCurCourse != m_pCourse ) if( m_pCourse && GAMESTATE->m_pCurCourse.Get() != m_pCourse )
return false; return false;
if( m_pTrail && GAMESTATE->m_pCurTrail[pn] != m_pTrail ) if( m_pTrail && GAMESTATE->m_pCurTrail[pn].Get() != m_pTrail )
return false; return false;
if( !m_sSongGroup.empty() && GAMESTATE->m_sPreferredSongGroup != m_sSongGroup ) if( !m_sSongGroup.empty() && GAMESTATE->m_sPreferredSongGroup != m_sSongGroup )
return false; return false;
@@ -744,12 +744,12 @@ void GameCommand::ApplySelf( const vector<PlayerNumber> &vpns ) const
GAMESTATE->m_pCurSteps[*pn].Set( m_pSteps ); GAMESTATE->m_pCurSteps[*pn].Set( m_pSteps );
if( m_pCourse ) if( m_pCourse )
{ {
GAMESTATE->m_pCurCourse = m_pCourse; GAMESTATE->m_pCurCourse.Set( m_pCourse );
GAMESTATE->m_pPreferredCourse = m_pCourse; GAMESTATE->m_pPreferredCourse = m_pCourse;
} }
if( m_pTrail ) if( m_pTrail )
FOREACH_CONST( PlayerNumber, vpns, pn ) FOREACH_CONST( PlayerNumber, vpns, pn )
GAMESTATE->m_pCurTrail[*pn] = m_pTrail; GAMESTATE->m_pCurTrail[*pn].Set( m_pTrail );
if( m_CourseDifficulty != DIFFICULTY_INVALID ) if( m_CourseDifficulty != DIFFICULTY_INVALID )
FOREACH_CONST( PlayerNumber, vpns, pn ) FOREACH_CONST( PlayerNumber, vpns, pn )
GAMESTATE->ChangePreferredCourseDifficulty( *pn, m_CourseDifficulty ); GAMESTATE->ChangePreferredCourseDifficulty( *pn, m_CourseDifficulty );
+7 -5
View File
@@ -52,6 +52,8 @@ GameState::GameState() :
m_PreferredDifficulty( MESSAGE_EDIT_PREFERRED_DIFFICULTY_P1_CHANGED ), m_PreferredDifficulty( MESSAGE_EDIT_PREFERRED_DIFFICULTY_P1_CHANGED ),
m_pCurSong( MESSAGE_CURRENT_SONG_CHANGED ), m_pCurSong( MESSAGE_CURRENT_SONG_CHANGED ),
m_pCurSteps( MESSAGE_CURRENT_STEPS_P1_CHANGED ), m_pCurSteps( MESSAGE_CURRENT_STEPS_P1_CHANGED ),
m_pCurCourse( MESSAGE_CURRENT_COURSE_CHANGED ),
m_pCurTrail( MESSAGE_CURRENT_TRAIL_P1_CHANGED ),
m_stEdit( MESSAGE_EDIT_STEPS_TYPE_CHANGED ), m_stEdit( MESSAGE_EDIT_STEPS_TYPE_CHANGED ),
m_pEditSourceSteps( MESSAGE_EDIT_SOURCE_STEPS_CHANGED ), m_pEditSourceSteps( MESSAGE_EDIT_SOURCE_STEPS_CHANGED ),
m_stEditSource( MESSAGE_EDIT_SOURCE_STEPS_TYPE_CHANGED ) m_stEditSource( MESSAGE_EDIT_SOURCE_STEPS_TYPE_CHANGED )
@@ -172,10 +174,10 @@ void GameState::Reset()
m_pPreferredSong = NULL; m_pPreferredSong = NULL;
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
m_pCurSteps[p].Set( NULL ); m_pCurSteps[p].Set( NULL );
m_pCurCourse = NULL; m_pCurCourse.Set( NULL );
m_pPreferredCourse = NULL; m_pPreferredCourse = NULL;
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
m_pCurTrail[p] = NULL; m_pCurTrail[p].Set( NULL );
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
m_pPlayerState[p]->Reset(); m_pPlayerState[p]->Reset();
@@ -1946,14 +1948,14 @@ public:
PlayerNumber pn = (PlayerNumber)IArg(1); PlayerNumber pn = (PlayerNumber)IArg(1);
if( lua_isnil(L,2) ) { p->m_pCurSteps[pn].Set( NULL ); } if( lua_isnil(L,2) ) { p->m_pCurSteps[pn].Set( NULL ); }
else { Steps *pS = Luna<Steps>::check(L,2); p->m_pCurSteps[pn].Set( pS ); } else { Steps *pS = Luna<Steps>::check(L,2); p->m_pCurSteps[pn].Set( pS ); }
MESSAGEMAN->Broadcast( ssprintf("CurrentStepsP%dChanged",pn+1) ); MESSAGEMAN->Broadcast( (Message)(MESSAGE_CURRENT_STEPS_P1_CHANGED+pn) );
return 0; return 0;
} }
static int GetCurrentCourse( T* p, lua_State *L ) { if(p->m_pCurCourse) p->m_pCurCourse->PushSelf(L); else lua_pushnil(L); return 1; } static int GetCurrentCourse( T* p, lua_State *L ) { if(p->m_pCurCourse) p->m_pCurCourse->PushSelf(L); else lua_pushnil(L); return 1; }
static int SetCurrentCourse( T* p, lua_State *L ) static int SetCurrentCourse( T* p, lua_State *L )
{ {
if( lua_isnil(L,1) ) { p->m_pCurCourse = NULL; } if( lua_isnil(L,1) ) { p->m_pCurCourse.Set( NULL ); }
else { Course *pC = Luna<Course>::check(L,1); p->m_pCurCourse = pC; } else { Course *pC = Luna<Course>::check(L,1); p->m_pCurCourse.Set( pC ); }
return 0; return 0;
} }
static int GetCurrentTrail( T* p, lua_State *L ) static int GetCurrentTrail( T* p, lua_State *L )
+2 -2
View File
@@ -139,10 +139,10 @@ public:
BroadcastOnChangePtr1D<Steps,NUM_PLAYERS> m_pCurSteps; BroadcastOnChangePtr1D<Steps,NUM_PLAYERS> m_pCurSteps;
// NULL on ScreenSelectMusic if the currently selected wheel item isn't a Course. // NULL on ScreenSelectMusic if the currently selected wheel item isn't a Course.
Course* m_pCurCourse; BroadcastOnChangePtr<Course> m_pCurCourse;
// The last Course that the user manually changed to. // The last Course that the user manually changed to.
Course* m_pPreferredCourse; Course* m_pPreferredCourse;
Trail* m_pCurTrail[NUM_PLAYERS]; BroadcastOnChangePtr1D<Trail,NUM_PLAYERS> m_pCurTrail;
// //
+4 -6
View File
@@ -136,19 +136,17 @@ REGISTER_ACTOR_CLASS( GenreDisplay )
GenreDisplay::GenreDisplay() GenreDisplay::GenreDisplay()
{ {
MESSAGEMAN->Subscribe( this, "OnSongChanged" ); this->SubscribeToMessage( MESSAGE_CURRENT_SONG_CHANGED );
MESSAGEMAN->Subscribe( this, "OnCourseChanged" ); this->SubscribeToMessage( MESSAGE_CURRENT_COURSE_CHANGED );
} }
GenreDisplay::~GenreDisplay() GenreDisplay::~GenreDisplay()
{ {
MESSAGEMAN->Unsubscribe( this, "OnSongChanged" );
MESSAGEMAN->Unsubscribe( this, "OnCourseChanged" );
} }
void GenreDisplay::PlayCommand( const CString &sCommandName ) void GenreDisplay::PlayCommand( const CString &sCommandName )
{ {
if( sCommandName == "OnSongChanged" ) if( sCommandName == MessageToString(MESSAGE_CURRENT_SONG_CHANGED) )
{ {
vector<CString> m_Artists, m_AltArtists; vector<CString> m_Artists, m_AltArtists;
@@ -160,7 +158,7 @@ void GenreDisplay::PlayCommand( const CString &sCommandName )
SetTips( m_Artists, m_AltArtists ); SetTips( m_Artists, m_AltArtists );
} }
else if( sCommandName == "OnCourseChanged" ) else if( sCommandName == MessageToString(MESSAGE_CURRENT_COURSE_CHANGED) )
{ {
vector<CString> m_Artists, m_AltArtists; vector<CString> m_Artists, m_AltArtists;
+3
View File
@@ -13,6 +13,9 @@ static const CString MessageNames[] = {
"CurrentSongChanged", "CurrentSongChanged",
"CurrentStepsP1Changed", "CurrentStepsP1Changed",
"CurrentStepsP2Changed", "CurrentStepsP2Changed",
"CurrentCourseChanged",
"CurrentTrailP1Changed",
"CurrentTrailP2Changed",
"EditStepsTypeChanged", "EditStepsTypeChanged",
"EditSourceStepsChanged", "EditSourceStepsChanged",
"EditSourceStepsTypeChanged", "EditSourceStepsTypeChanged",
+3
View File
@@ -20,6 +20,9 @@ enum Message
MESSAGE_CURRENT_SONG_CHANGED, MESSAGE_CURRENT_SONG_CHANGED,
MESSAGE_CURRENT_STEPS_P1_CHANGED, MESSAGE_CURRENT_STEPS_P1_CHANGED,
MESSAGE_CURRENT_STEPS_P2_CHANGED, MESSAGE_CURRENT_STEPS_P2_CHANGED,
MESSAGE_CURRENT_COURSE_CHANGED,
MESSAGE_CURRENT_TRAIL_P1_CHANGED,
MESSAGE_CURRENT_TRAIL_P2_CHANGED,
MESSAGE_EDIT_STEPS_TYPE_CHANGED, MESSAGE_EDIT_STEPS_TYPE_CHANGED,
MESSAGE_EDIT_SOURCE_STEPS_CHANGED, MESSAGE_EDIT_SOURCE_STEPS_CHANGED,
MESSAGE_EDIT_SOURCE_STEPS_TYPE_CHANGED, MESSAGE_EDIT_SOURCE_STEPS_TYPE_CHANGED,
+1 -1
View File
@@ -323,7 +323,7 @@ bool MusicWheel::SelectCourse( Course *p )
if(p == NULL) if(p == NULL)
return false; return false;
GAMESTATE->m_pCurCourse = p; GAMESTATE->m_pCurCourse.Set( p );
unsigned i; unsigned i;
vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
+1 -1
View File
@@ -146,7 +146,7 @@ ScreenEnding::ScreenEnding( CString sClassName ) : ScreenAttract( sClassName, fa
GAMESTATE->m_bSideIsJoined[PLAYER_2] = true; GAMESTATE->m_bSideIsJoined[PLAYER_2] = true;
GAMESTATE->m_MasterPlayerNumber = PLAYER_1; GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() ); GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() );
GAMESTATE->m_pCurCourse = SONGMAN->GetRandomCourse(); GAMESTATE->m_pCurCourse.Set( SONGMAN->GetRandomCourse() );
GAMESTATE->m_pCurSteps[PLAYER_1].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] ); GAMESTATE->m_pCurSteps[PLAYER_1].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] );
GAMESTATE->m_pCurSteps[PLAYER_2].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] ); GAMESTATE->m_pCurSteps[PLAYER_2].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] );
+2 -2
View File
@@ -110,7 +110,7 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName ) : ScreenWithMenuElement
GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() ); GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() );
STATSMAN->m_CurStageStats.vpPlayedSongs.push_back( GAMESTATE->m_pCurSong ); STATSMAN->m_CurStageStats.vpPlayedSongs.push_back( GAMESTATE->m_pCurSong );
STATSMAN->m_CurStageStats.vpPossibleSongs.push_back( GAMESTATE->m_pCurSong ); STATSMAN->m_CurStageStats.vpPossibleSongs.push_back( GAMESTATE->m_pCurSong );
GAMESTATE->m_pCurCourse = SONGMAN->GetRandomCourse(); GAMESTATE->m_pCurCourse.Set( SONGMAN->GetRandomCourse() );
GAMESTATE->m_iCurrentStageIndex = 0; GAMESTATE->m_iCurrentStageIndex = 0;
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
@@ -122,7 +122,7 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName ) : ScreenWithMenuElement
GAMESTATE->m_pCurSteps[p].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] ); GAMESTATE->m_pCurSteps[p].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] );
vector<Trail*> apTrails; vector<Trail*> apTrails;
GAMESTATE->m_pCurCourse->GetAllTrails( apTrails ); GAMESTATE->m_pCurCourse->GetAllTrails( apTrails );
GAMESTATE->m_pCurTrail[p] = apTrails[0]; GAMESTATE->m_pCurTrail[p].Set( apTrails[0] );
STATSMAN->m_CurStageStats.m_player[p].vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] ); STATSMAN->m_CurStageStats.m_player[p].vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] );
STATSMAN->m_CurStageStats.m_player[p].vpPossibleSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] ); STATSMAN->m_CurStageStats.m_player[p].vpPossibleSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] );
GAMESTATE->m_pPlayerState[p]->m_PlayerOptions.m_fScrollSpeed = 2; GAMESTATE->m_pPlayerState[p]->m_PlayerOptions.m_fScrollSpeed = 2;
+3 -7
View File
@@ -1371,7 +1371,7 @@ void ScreenSelectMusic::AfterTrailChange( const vector<PlayerNumber> &vpns )
Course* pCourse = GAMESTATE->m_pCurCourse; Course* pCourse = GAMESTATE->m_pCurCourse;
Trail* pTrail = m_vpTrails.empty()? NULL: m_vpTrails[m_iSelection[pn]]; Trail* pTrail = m_vpTrails.empty()? NULL: m_vpTrails[m_iSelection[pn]];
GAMESTATE->m_pCurTrail[pn] = pTrail; GAMESTATE->m_pCurTrail[pn].Set( pTrail );
int iScore = 0; int iScore = 0;
if( pTrail ) if( pTrail )
@@ -1503,14 +1503,14 @@ void ScreenSelectMusic::AfterMusicChange()
m_GrooveGraph.SetFromSong( pSong ); m_GrooveGraph.SetFromSong( pSong );
Course* pCourse = m_MusicWheel.GetSelectedCourse(); Course* pCourse = m_MusicWheel.GetSelectedCourse();
GAMESTATE->m_pCurCourse = pCourse; GAMESTATE->m_pCurCourse.Set( pCourse );
if( pCourse ) if( pCourse )
GAMESTATE->m_pPreferredCourse = pCourse; GAMESTATE->m_pPreferredCourse = pCourse;
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
{ {
GAMESTATE->m_pCurSteps[p].Set( NULL ); GAMESTATE->m_pCurSteps[p].Set( NULL );
GAMESTATE->m_pCurTrail[p] = NULL; GAMESTATE->m_pCurTrail[p].Set( NULL );
m_vpSteps.clear(); m_vpSteps.clear();
m_vpTrails.clear(); m_vpTrails.clear();
} }
@@ -1660,8 +1660,6 @@ void ScreenSelectMusic::AfterMusicChange()
m_Artists.push_back( pSong->GetDisplayArtist() ); m_Artists.push_back( pSong->GetDisplayArtist() );
m_AltArtists.push_back( pSong->GetTranslitArtist() ); m_AltArtists.push_back( pSong->GetTranslitArtist() );
MESSAGEMAN->Broadcast( "OnSongChanged" );
} }
break; break;
case TYPE_ROULETTE: case TYPE_ROULETTE:
@@ -1775,8 +1773,6 @@ void ScreenSelectMusic::AfterMusicChange()
COMMAND( m_sprCourseHasMods, "Hide" ); COMMAND( m_sprCourseHasMods, "Hide" );
} }
MESSAGEMAN->Broadcast( "OnCourseChanged" );
break; break;
} }
default: default:
+1 -3
View File
@@ -52,8 +52,6 @@ ScreenTitleMenu::ScreenTitleMenu( CString sScreenName ) :
// TRICKY: Do this after GameState::Reset. // TRICKY: Do this after GameState::Reset.
LIGHTSMAN->SetLightsMode( LIGHTSMODE_JOINING ); LIGHTSMAN->SetLightsMode( LIGHTSMODE_JOINING );
this->SubscribeToMessage( "CoinModeChanged" );
} }
void ScreenTitleMenu::Init() void ScreenTitleMenu::Init()
@@ -170,7 +168,7 @@ void ScreenTitleMenu::Input( const DeviceInput& DeviceI, const InputEventType ty
void ScreenTitleMenu::HandleMessage( const CString& sMessage ) void ScreenTitleMenu::HandleMessage( const CString& sMessage )
{ {
if( sMessage == "CoinModeChanged" ) if( sMessage == PREFSMAN->m_CoinMode.GetName()+"Changed" )
{ {
/* If the CoinMode was changed, we need to reload this screen /* If the CoinMode was changed, we need to reload this screen
* so that the right m_aGameCommands will show */ * so that the right m_aGameCommands will show */
+5 -2
View File
@@ -709,7 +709,10 @@ void SongManager::Invalidate( Song *pStaleSong )
} }
} }
CONVERT_COURSE_POINTER( GAMESTATE->m_pCurCourse ); {
CourseID id = mapOldCourseToCourseID[GAMESTATE->m_pCurCourse]; /* this will always succeed */
GAMESTATE->m_pCurCourse.Set( id.ToCourse() );
}
CONVERT_COURSE_POINTER( GAMESTATE->m_pPreferredCourse ); CONVERT_COURSE_POINTER( GAMESTATE->m_pPreferredCourse );
#define CONVERT_TRAIL_POINTER( pTrail ) do { \ #define CONVERT_TRAIL_POINTER( pTrail ) do { \
@@ -720,7 +723,7 @@ void SongManager::Invalidate( Song *pStaleSong )
const TrailIDAndCourse &tidc = it->second; \ const TrailIDAndCourse &tidc = it->second; \
const TrailID &id = tidc.first; \ const TrailID &id = tidc.first; \
const Course *pCourse = tidc.second; \ const Course *pCourse = tidc.second; \
pTrail = id.ToTrail( pCourse, true ); \ pTrail.Set( id.ToTrail( pCourse, true ) ); \
} \ } \
} while(false) } while(false)