add EarnedExtraStage enum, make EarnedExtraStage work with TestInitialScreen, move TryExtra into lua

This commit is contained in:
Chris Danford
2008-08-20 01:50:07 +00:00
parent a718b7587b
commit 46b5d2ae42
8 changed files with 47 additions and 48 deletions
+8
View File
@@ -408,6 +408,14 @@ LuaXType( Stage );
XToLocalizedString( Stage );
LuaFunction( StageToLocalizedString, StageToLocalizedString(Enum::Check<Stage>(L, 1)) );
static const char *EarnedExtraStageNames[] = {
"No",
"Extra1",
"Extra2",
};
XToString( EarnedExtraStage );
LuaXType( EarnedExtraStage );
static const char *MultiPlayerStatusNames[] = {
"Joined",
+12
View File
@@ -485,6 +485,18 @@ LuaDeclareType( Stage );
const RString& StageToLocalizedString( Stage i );
enum EarnedExtraStage
{
EarnedExtraStage_No,
EarnedExtraStage_Extra1,
EarnedExtraStage_Extra2,
NUM_EarnedExtraStage,
EarnedExtraStage_Invalid
};
const RString& EarnedExtraStageToString( EarnedExtraStage s );
LuaDeclareType( EarnedExtraStage );
enum ProfileLoadResult
{
ProfileLoadResult_Success,
+13 -11
View File
@@ -727,7 +727,9 @@ void GameState::FinishStage()
m_iNumStagesOfThisSong = 0;
if( HasEarnedExtraStageInternal() )
EarnedExtraStage e = CalculateEarnedExtraStage();
STATSMAN->m_CurStageStats.m_EarnedExtraStage = e;
if( e != EarnedExtraStage_No )
{
LOG->Trace( "awarded extra stage" );
FOREACH_HumanPlayer( p )
@@ -1217,25 +1219,25 @@ bool GameState::IsBattleMode() const
}
}
bool GameState::HasEarnedExtraStageInternal() const
EarnedExtraStage GameState::CalculateEarnedExtraStage() const
{
if( IsEventMode() )
return false;
return EarnedExtraStage_No;
if( !PREFSMAN->m_bAllowExtraStage )
return false;
return EarnedExtraStage_No;
if( m_PlayMode != PLAY_MODE_REGULAR )
return false;
return EarnedExtraStage_No;
if( m_bBackedOutOfFinalStage )
return false;
return EarnedExtraStage_No;
if( GetSmallestNumStagesLeftForAnyHumanPlayer() > 0 )
return false;
return EarnedExtraStage_No;
if( m_iAwardedExtraStages[m_MasterPlayerNumber] >= 2 )
return false;
return EarnedExtraStage_No;
FOREACH_EnabledPlayer( pn )
{
@@ -1254,15 +1256,15 @@ bool GameState::HasEarnedExtraStageInternal() const
if( IsExtraStage() )
{
if( ALLOW_EXTRA_2 && STATSMAN->m_CurStageStats.m_player[pn].GetGrade() <= GRADE_TIER_FOR_EXTRA_2 )
return true;
return EarnedExtraStage_Extra2;
}
else if( STATSMAN->m_CurStageStats.m_player[pn].GetGrade() <= GRADE_TIER_FOR_EXTRA_1 )
{
return true;
return EarnedExtraStage_Extra1;
}
}
return false;
return EarnedExtraStage_No;
}
PlayerNumber GameState::GetBestPlayer() const
+1 -1
View File
@@ -338,7 +338,7 @@ public:
// Keep extra stage logic internal to GameState.
private:
bool HasEarnedExtraStageInternal() const;
EarnedExtraStage CalculateEarnedExtraStage() const;
int m_iAwardedExtraStages[NUM_PLAYERS];
bool m_bEarnedExtraStage;
+4 -27
View File
@@ -98,6 +98,8 @@ void ScreenEvaluation::Init()
ss.m_playMode = GAMESTATE->m_PlayMode;
ss.m_pStyle = GAMESTATE->GetCurrentStyle();
ss.m_Stage = Stage_1st;
enum_add( ss.m_Stage, rand()%3 );
ss.m_EarnedExtraStage = (EarnedExtraStage)(rand() % NUM_EarnedExtraStage);
GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() );
ss.m_vpPlayedSongs.push_back( GAMESTATE->m_pCurSong );
@@ -226,22 +228,6 @@ void ScreenEvaluation::Init()
m_pStageStats = &m_FinalEvalStageStats;
}
m_bFailed = m_pStageStats->AllFailed();
/*
//
// Debugging
//
{
FOREACH_PlayerNumber( p ) // foreach line
for( int r=0; r<NUM_RadarCategory; r++ ) // foreach line
{
m_pStageStats->radarPossible[p][r] = 0.5f + r/10.0f;
m_pStageStats->radarActual[p][r] = 0.5f + r/10.0f;
}
}
*/
//
// update persistent statistics
//
@@ -623,18 +609,9 @@ void ScreenEvaluation::Init()
FOREACH_PlayerNumber( p )
best_grade = min( best_grade, grade[p] );
if( !SUMMARY && GAMESTATE->HasEarnedExtraStage() )
if( m_pStageStats->m_EarnedExtraStage != EarnedExtraStage_No )
{
m_sprTryExtraStage.Load( THEME->GetPathG(m_sName,GAMESTATE->IsExtraStage2()?"try extra2":"try extra1") );
m_sprTryExtraStage->SetName( "TryExtraStage" );
ActorUtil::LoadAllCommands( *m_sprTryExtraStage, m_sName );
SET_XY( m_sprTryExtraStage );
this->AddChild( m_sprTryExtraStage );
if( GAMESTATE->IsExtraStage2() )
SOUND->PlayOnce( THEME->GetPathS(m_sName,"try extra2") );
else
SOUND->PlayOnce( THEME->GetPathS(m_sName,"try extra1") );
SOUND->PlayOnce( THEME->GetPathS(m_sName,"try " + EarnedExtraStageToString(m_pStageStats->m_EarnedExtraStage)) );
}
else if( bOneHasNewTopRecord && ANNOUNCER->HasSoundsFor("evaluation new record") )
{
-4
View File
@@ -107,10 +107,6 @@ protected:
AutoActor m_sprTimeLabel;
BitmapText m_textTime[NUM_PLAYERS];
// extra area
AutoActor m_sprTryExtraStage;
bool m_bFailed;
RageSound m_soundStart; // sound played if the player passes or fails
ThemeMetric<bool> SUMMARY;
+8 -5
View File
@@ -24,6 +24,7 @@ StageStats::StageStats()
m_pStyle = NULL;
m_vpPlayedSongs.clear();
m_vpPossibleSongs.clear();
m_EarnedExtraStage = EarnedExtraStage_No;
m_bGaveUp = false;
m_bUsedAutoplay = false;
m_fGameplaySeconds = 0;
@@ -343,16 +344,17 @@ public:
return 1;
}
static int GetGameplaySeconds( T* p, lua_State *L ) { lua_pushnumber(L, p->m_fGameplaySeconds); return 1; }
static int OnePassed( T* p, lua_State *L ) { lua_pushboolean(L, p->OnePassed()); return 1; }
static int AllFailed( T* p, lua_State *L ) { lua_pushboolean(L, p->AllFailed()); return 1; }
static int GetStage( T* p, lua_State *L ) { LuaHelpers::Push( L, p->m_Stage ); return 1; }
DEFINE_METHOD( GetStageIndex, m_iStageIndex )
static int GetGameplaySeconds( T* p, lua_State *L ) { lua_pushnumber(L, p->m_fGameplaySeconds); return 1; }
static int OnePassed( T* p, lua_State *L ) { lua_pushboolean(L, p->OnePassed()); return 1; }
static int AllFailed( T* p, lua_State *L ) { lua_pushboolean(L, p->AllFailed()); return 1; }
static int GetStage( T* p, lua_State *L ) { LuaHelpers::Push( L, p->m_Stage ); return 1; }
DEFINE_METHOD( GetStageIndex, m_iStageIndex )
static int PlayerHasHighScore( T* p, lua_State *L )
{
lua_pushboolean(L, p->PlayerHasHighScore(Enum::Check<PlayerNumber>(L, 1)));
return 1;
}
DEFINE_METHOD( GetEarnedExtraStage, m_EarnedExtraStage )
LunaStageStats()
{
@@ -366,6 +368,7 @@ public:
ADD_METHOD( GetStage );
ADD_METHOD( GetStageIndex );
ADD_METHOD( PlayerHasHighScore );
ADD_METHOD( GetEarnedExtraStage );
}
};
+1
View File
@@ -33,6 +33,7 @@ public:
vector<Song*> m_vpPlayedSongs;
vector<Song*> m_vpPossibleSongs;
EarnedExtraStage m_EarnedExtraStage;
bool m_bGaveUp; // exited gameplay by giving up
bool m_bUsedAutoplay; // used autoplay at any point during gameplay