Allow AutoActors for Stage and CouseNumber
This commit is contained in:
@@ -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) )
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#include "Preference.h"
|
||||
class IniFile;
|
||||
|
||||
const int MAX_SONGS_PER_PLAY = 7;
|
||||
|
||||
class PrefsManager
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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 )
|
||||
{
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user