add EarnedExtraStage enum, make EarnedExtraStage work with TestInitialScreen, move TryExtra into lua
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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") )
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user