Allow AutoActors for Stage and CouseNumber

This commit is contained in:
Chris Danford
2005-05-06 10:48:32 +00:00
parent 70cd62ddad
commit a122528974
12 changed files with 113 additions and 65 deletions
+19
View File
@@ -319,6 +319,25 @@ static void LuaGoalType(lua_State* L)
REGISTER_WITH_LUA_FUNCTION( LuaGoalType );
static const CString StageNames[] = {
"1",
"2",
"3",
"4",
"5",
"6",
"Final",
"Extra1",
"Extra2",
"Nonstop",
"Oni",
"Endless",
"Event",
"Demo",
};
XToString( Stage, NUM_STAGES );
#include "LuaFunctions.h"
LuaFunction_NoArgs( CoinMode, CoinModeToString(PREFSMAN->m_CoinMode) )
LuaFunction_NoArgs( Premium, PremiumToString(PREFSMAN->m_Premium) )
+23
View File
@@ -382,6 +382,29 @@ enum EditMode
};
enum Stage
{
STAGE_1,
STAGE_2,
STAGE_3,
STAGE_4,
STAGE_5,
STAGE_6,
STAGE_FINAL,
STAGE_EXTRA1,
STAGE_EXTRA2,
STAGE_NONSTOP,
STAGE_ONI,
STAGE_ENDLESS,
STAGE_EVENT,
STAGE_DEMO,
NUM_STAGES,
STAGE_INVALID,
};
#define FOREACH_Stage( s ) FOREACH_ENUM( Stage, NUM_STAGES, s )
const CString& StageToString( Stage s );
#endif
/*
+23 -22
View File
@@ -724,33 +724,26 @@ bool GameState::IsExtraStage2() const
return m_iCurrentStageIndex == PREFSMAN->m_iSongsPerPlay+1;
}
CString GameState::GetStageText() const
Stage GameState::GetCurrentStage() const
{
if( m_bDemonstrationOrJukebox ) return "demo";
if( m_bDemonstrationOrJukebox ) return STAGE_DEMO;
// "event" has precedence
else if( GAMESTATE->IsEventMode() ) return "event";
else if( m_PlayMode == PLAY_MODE_ONI ) return "oni";
else if( m_PlayMode == PLAY_MODE_NONSTOP ) return "nonstop";
else if( m_PlayMode == PLAY_MODE_ENDLESS ) return "endless";
else if( IsFinalStage() ) return "final";
else if( IsExtraStage() ) return "extra1";
else if( IsExtraStage2() ) return "extra2";
else return ssprintf("%d",m_iCurrentStageIndex+1);
else if( GAMESTATE->IsEventMode() ) return STAGE_EVENT;
else if( m_PlayMode == PLAY_MODE_ONI ) return STAGE_ONI;
else if( m_PlayMode == PLAY_MODE_NONSTOP ) return STAGE_NONSTOP;
else if( m_PlayMode == PLAY_MODE_ENDLESS ) return STAGE_ENDLESS;
else if( IsFinalStage() ) return STAGE_FINAL;
else if( IsExtraStage() ) return STAGE_EXTRA1;
else if( IsExtraStage2() ) return STAGE_EXTRA2;
else return (Stage)(STAGE_1+m_iCurrentStageIndex);
}
void GameState::GetAllStageTexts( CStringArray &out ) const
void GameState::GetPossibleStages( vector<Stage> &out ) const
{
// Optimze me so that we don't load graphics that can't possibly be shown
out.clear();
out.push_back( "demo" );
out.push_back( "oni" );
out.push_back( "nonstop" );
out.push_back( "endless" );
out.push_back( "event" );
out.push_back( "final" );
out.push_back( "extra1" );
out.push_back( "extra2" );
for( int stage = 0; stage < PREFSMAN->m_iSongsPerPlay; ++stage )
out.push_back( ssprintf("%d",stage+1) );
FOREACH_Stage( s )
out.push_back( s );
}
int GameState::GetCourseSongIndex() const
@@ -2071,7 +2064,6 @@ LuaFunction_NoArgs( NumStagesLeft, GAMESTATE->GetNumStagesLeft() )
LuaFunction_NoArgs( IsFinalStage, GAMESTATE->IsFinalStage() )
LuaFunction_NoArgs( IsExtraStage, GAMESTATE->IsExtraStage() )
LuaFunction_NoArgs( IsExtraStage2, GAMESTATE->IsExtraStage2() )
LuaFunction_NoArgs( GetStageText, GAMESTATE->GetStageText() )
LuaFunction_NoArgs( CourseSongIndex, GAMESTATE->GetCourseSongIndex() )
LuaFunction_NoArgs( PlayModeName, PlayModeToString(GAMESTATE->m_PlayMode) )
LuaFunction_NoArgs( CurStyleName, CString( GAMESTATE->m_pCurStyle == NULL ? "none": GAMESTATE->GetCurrentStyle()->m_szName ) )
@@ -2091,6 +2083,15 @@ int LuaFunc_UsingModifier( lua_State *L )
}
LuaFunction( UsingModifier );
CString GetStageText()
{
// all lowercase or compatibility with scripts
CString s = StageToString( GAMESTATE->GetCurrentStage() );
s.MakeLower();
return s;
}
LuaFunction_NoArgs( GetStageText, GetStageText() )
/*
* (c) 2001-2004 Chris Danford, Glenn Maynard, Chris Gomez
* All rights reserved.
+2 -2
View File
@@ -121,8 +121,8 @@ public:
bool IsFinalStage() const;
bool IsExtraStage() const;
bool IsExtraStage2() const;
CString GetStageText() const;
void GetAllStageTexts( CStringArray &out ) const;
Stage GetCurrentStage() const;
void GetPossibleStages( vector<Stage> &out ) const;
int GetCourseSongIndex() const;
CString GetPlayerDisplayName( PlayerNumber pn ) const;
+2
View File
@@ -450,6 +450,8 @@ void PrefsManager::ReadGlobalPrefsFromIni( const IniFile &ini )
FOREACHS_CONST( IPreference*, *SubscriptionManager<IPreference>::s_pSubscribers, p )
(*p)->ReadFrom( ini );
CLAMP( m_iSongsPerPlay.Value(), 0, MAX_SONGS_PER_PLAY );
}
void PrefsManager::SaveGlobalPrefsToDisk() const
+2
View File
@@ -9,6 +9,8 @@
#include "Preference.h"
class IniFile;
const int MAX_SONGS_PER_PLAY = 7;
class PrefsManager
{
public:
+2 -2
View File
@@ -327,7 +327,7 @@ void ScreenEvaluation::Init()
SET_XY_AND_ON_COMMAND( m_sprLargeBannerFrame );
this->AddChild( m_sprLargeBannerFrame );
m_sprStage.Load( THEME->GetPathG(m_sName,"stage "+GAMESTATE->GetStageText()) );
m_sprStage.Load( THEME->GetPathG(m_sName,"stage "+StageToString(GAMESTATE->GetCurrentStage())) );
m_sprStage->SetName( "Stage" );
SET_XY_AND_ON_COMMAND( m_sprStage );
this->AddChild( m_sprStage );
@@ -365,7 +365,7 @@ void ScreenEvaluation::Init()
SET_XY_AND_ON_COMMAND( m_sprLargeBannerFrame );
this->AddChild( m_sprLargeBannerFrame );
m_sprStage.Load( THEME->GetPathG(m_sName,"stage "+GAMESTATE->GetStageText()) );
m_sprStage.Load( THEME->GetPathG(m_sName,"stage "+StageToString(GAMESTATE->GetCurrentStage())) );
m_sprStage->SetName( "Stage" );
SET_XY_AND_ON_COMMAND( m_sprStage );
this->AddChild( m_sprStage );
+20 -20
View File
@@ -295,9 +295,9 @@ void ScreenGameplay::Init()
// Add LifeFrame
//
m_sprLifeFrame.Load( THEME->GetPathG(m_sName,bBattery?"oni life frame":"life frame") );
m_sprLifeFrame.SetName( "LifeFrame" );
m_sprLifeFrame->SetName( "LifeFrame" );
SET_XY( m_sprLifeFrame );
this->AddChild( &m_sprLifeFrame );
this->AddChild( m_sprLifeFrame );
//
// Add score frame
@@ -456,11 +456,7 @@ void ScreenGameplay::Init()
//
// Add stage / SongNumber
//
m_sprStage.SetName( "Stage" );
SET_XY( m_sprStage );
m_sprCourseSongNumber.SetName( "CourseSongNumber" );
SET_XY( m_sprCourseSongNumber );
FOREACH_EnabledPlayer(p)
{
@@ -485,13 +481,21 @@ void ScreenGameplay::Init()
case PLAY_MODE_REGULAR:
case PLAY_MODE_BATTLE:
case PLAY_MODE_RAVE:
m_sprStage.Load( THEME->GetPathG(m_sName,"stage "+GAMESTATE->GetStageText()) );
this->AddChild( &m_sprStage );
m_sprStage.Load( THEME->GetPathG(m_sName,"stage "+StageToString(GAMESTATE->GetCurrentStage())) );
m_sprStage->SetName( "Stage" );
SET_XY( m_sprStage );
this->AddChild( m_sprStage );
break;
case PLAY_MODE_NONSTOP:
case PLAY_MODE_ONI:
case PLAY_MODE_ENDLESS:
this->AddChild( &m_sprCourseSongNumber );
for( int i=0; i<MAX_COURSE_SONG_NUMBER_GRAPHICS; i++ )
{
m_sprCourseSongNumber[i].Load( THEME->GetPathG( m_sName, ssprintf("course song %i",i+1)) );
m_sprCourseSongNumber[i]->SetName( "CourseSongNumber" );
SET_XY( m_sprCourseSongNumber[i] );
this->AddChild( m_sprCourseSongNumber[i] );
}
FOREACH_EnabledPlayer( p )
this->AddChild( &m_textCourseSongNumber[p] );
@@ -859,16 +863,12 @@ void ScreenGameplay::SetupSong( int iSongIndex )
}
}
void ScreenGameplay::LoadCourseSongNumber( int SongNumber )
void ScreenGameplay::LoadCourseSongNumber( int iSongNumber )
{
if( !GAMESTATE->IsCourseMode() )
return;
const CString path = THEME->GetPathG( m_sName, ssprintf("course song %i",SongNumber+1), true );
if( path != "" )
m_sprCourseSongNumber.Load( path );
else
m_sprCourseSongNumber.UnloadTexture();
for( int i=0; i<MAX_COURSE_SONG_NUMBER_GRAPHICS; i++ )
m_sprCourseSongNumber[i]->SetHidden( i != iSongNumber );
}
void ScreenGameplay::LoadNextSong()
@@ -2398,13 +2398,13 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
m_NextSong.Reset();
m_NextSong.StartTransitioning( SM_LoadNextSong );
LoadCourseSongNumber( GAMESTATE->GetCourseSongIndex()+1 );
COMMAND( m_sprCourseSongNumber, "ChangeIn" );
COMMAND( m_sprCourseSongNumber[GAMESTATE->GetCourseSongIndex()], "ChangeIn" );
}
else if( SM == SM_LoadNextSong )
{
SongFinished();
COMMAND( m_sprCourseSongNumber, "ChangeOut" );
COMMAND( m_sprCourseSongNumber[GAMESTATE->GetCourseSongIndex()], "ChangeOut" );
LoadNextSong();
GAMESTATE->m_bPastHereWeGo = true;
@@ -2541,7 +2541,7 @@ void ScreenGameplay::TweenOnScreen()
{
ON_COMMAND( m_sprLifeFrame );
ON_COMMAND( m_sprStage );
ON_COMMAND( m_sprCourseSongNumber );
ON_COMMAND( m_sprCourseSongNumber[GAMESTATE->GetCourseSongIndex()] );
ON_COMMAND( m_sprStageFrame );
ON_COMMAND( m_textSongOptions );
ON_COMMAND( m_sprScoreFrame );
@@ -2579,7 +2579,7 @@ void ScreenGameplay::TweenOffScreen()
OFF_COMMAND( m_sprLifeFrame );
OFF_COMMAND( m_sprStage );
OFF_COMMAND( m_sprCourseSongNumber );
OFF_COMMAND( m_sprCourseSongNumber[GAMESTATE->GetCourseSongIndex()] );
OFF_COMMAND( m_sprStageFrame );
OFF_COMMAND( m_textSongOptions );
OFF_COMMAND( m_sprScoreFrame );
+5 -3
View File
@@ -29,6 +29,8 @@ class Inventory;
AutoScreenMessage( SM_NotesEnded )
const int MAX_COURSE_SONG_NUMBER_GRAPHICS = 5;
class LyricsLoader;
class ScreenGameplay : public ScreenWithMenuElements
{
@@ -104,11 +106,11 @@ protected:
Transition m_SongFinished; // shows after each song, course or not
Sprite m_sprStaticBackground;
Sprite m_sprLifeFrame;
AutoActor m_sprLifeFrame;
LifeMeter* m_pLifeMeter[NUM_PLAYERS];
CombinedLifeMeter* m_pCombinedLifeMeter;
Sprite m_sprStage;
Sprite m_sprCourseSongNumber;
AutoActor m_sprStage;
AutoActor m_sprCourseSongNumber[MAX_COURSE_SONG_NUMBER_GRAPHICS];
AutoActor m_sprStageFrame;
BitmapText m_textCourseSongNumber[NUM_PLAYERS];
BitmapText m_textStepsDescription[NUM_PLAYERS];
+13 -14
View File
@@ -183,21 +183,17 @@ void ScreenSelectMusic::Init()
this->AddChild( &m_DifficultyDisplay );
{
CStringArray StageTexts;
GAMESTATE->GetAllStageTexts( StageTexts );
for( unsigned i = 0; i < StageTexts.size(); ++i )
vector<Stage> vStages;
GAMESTATE->GetPossibleStages( vStages );
FOREACH_CONST( Stage, vStages, s )
{
CString path = THEME->GetPathG( m_sName, "stage "+StageTexts[i], true );
if( path != "" )
TEXTUREMAN->CacheTexture( path );
m_sprStage[*s].Load( THEME->GetPathG(m_sName,"stage "+StageToString(*s)) );
m_sprStage[*s]->SetName( "Stage" );
SET_XY( m_sprStage[*s] );
this->AddChild( m_sprStage[*s] );
}
}
// loaded in AfterMusicChange
m_sprStage.SetName( "Stage" );
SET_XY( m_sprStage );
this->AddChild( &m_sprStage );
m_sprCDTitleFront.SetName( "CDTitle" );
m_sprCDTitleFront.Load( THEME->GetPathG(m_sName,"fallback cdtitle") );
SET_XY( m_sprCDTitleFront );
@@ -544,7 +540,7 @@ void ScreenSelectMusic::TweenOnScreen()
ON_COMMAND( m_sprExplanation );
ON_COMMAND( m_BPMDisplay );
ON_COMMAND( m_DifficultyDisplay );
ON_COMMAND( m_sprStage );
ON_COMMAND( m_sprStage[GAMESTATE->GetCurrentStage()] );
ON_COMMAND( m_sprCDTitleFront );
ON_COMMAND( m_sprCDTitleBack );
ON_COMMAND( m_GrooveRadar );
@@ -600,7 +596,7 @@ void ScreenSelectMusic::TweenOffScreen()
OFF_COMMAND( m_sprExplanation );
OFF_COMMAND( m_BPMDisplay );
OFF_COMMAND( m_DifficultyDisplay );
OFF_COMMAND( m_sprStage );
OFF_COMMAND( m_sprStage[GAMESTATE->GetCurrentStage()] );
OFF_COMMAND( m_sprCDTitleFront );
OFF_COMMAND( m_sprCDTitleBack );
OFF_COMMAND( m_GrooveRadar );
@@ -1842,7 +1838,10 @@ void ScreenSelectMusic::AfterMusicChange()
g_StartedLoadingAt.Touch();
// update stage counter display (long versions/marathons)
m_sprStage.Load( THEME->GetPathG(m_sName,"stage "+GAMESTATE->GetStageText()) );
FOREACH_Stage( s )
{
m_sprStage[s]->SetHidden( s != GAMESTATE->GetCurrentStage() );
}
if( (int) m_Artists.size() > MAX_COURSE_ENTRIES_BEFORE_VARIOUS )
{
+1 -1
View File
@@ -104,7 +104,7 @@ protected:
AutoActor m_sprBannerFrame;
AutoActor m_sprExplanation;
BPMDisplay m_BPMDisplay;
Sprite m_sprStage;
AutoActor m_sprStage[NUM_STAGES];
Sprite m_sprCDTitleFront, m_sprCDTitleBack;
Sprite m_sprDifficultyFrame[NUM_PLAYERS];
DifficultyIcon m_DifficultyIcon[NUM_PLAYERS];
+1 -1
View File
@@ -95,7 +95,7 @@ void ScreenStage::Init()
SET_XY_AND_ON_COMMAND( m_Artist );
SET_XY_AND_ON_COMMAND( m_SongTitle );
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("stage "+GAMESTATE->GetStageText()) );
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("stage "+StageToString(GAMESTATE->GetCurrentStage())) );
this->SortByDrawOrder();
}