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 );
|
XToLocalizedString( Stage );
|
||||||
LuaFunction( StageToLocalizedString, StageToLocalizedString(Enum::Check<Stage>(L, 1)) );
|
LuaFunction( StageToLocalizedString, StageToLocalizedString(Enum::Check<Stage>(L, 1)) );
|
||||||
|
|
||||||
|
static const char *EarnedExtraStageNames[] = {
|
||||||
|
"No",
|
||||||
|
"Extra1",
|
||||||
|
"Extra2",
|
||||||
|
};
|
||||||
|
XToString( EarnedExtraStage );
|
||||||
|
LuaXType( EarnedExtraStage );
|
||||||
|
|
||||||
|
|
||||||
static const char *MultiPlayerStatusNames[] = {
|
static const char *MultiPlayerStatusNames[] = {
|
||||||
"Joined",
|
"Joined",
|
||||||
|
|||||||
@@ -485,6 +485,18 @@ LuaDeclareType( Stage );
|
|||||||
const RString& StageToLocalizedString( Stage i );
|
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
|
enum ProfileLoadResult
|
||||||
{
|
{
|
||||||
ProfileLoadResult_Success,
|
ProfileLoadResult_Success,
|
||||||
|
|||||||
+13
-11
@@ -727,7 +727,9 @@ void GameState::FinishStage()
|
|||||||
|
|
||||||
m_iNumStagesOfThisSong = 0;
|
m_iNumStagesOfThisSong = 0;
|
||||||
|
|
||||||
if( HasEarnedExtraStageInternal() )
|
EarnedExtraStage e = CalculateEarnedExtraStage();
|
||||||
|
STATSMAN->m_CurStageStats.m_EarnedExtraStage = e;
|
||||||
|
if( e != EarnedExtraStage_No )
|
||||||
{
|
{
|
||||||
LOG->Trace( "awarded extra stage" );
|
LOG->Trace( "awarded extra stage" );
|
||||||
FOREACH_HumanPlayer( p )
|
FOREACH_HumanPlayer( p )
|
||||||
@@ -1217,25 +1219,25 @@ bool GameState::IsBattleMode() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GameState::HasEarnedExtraStageInternal() const
|
EarnedExtraStage GameState::CalculateEarnedExtraStage() const
|
||||||
{
|
{
|
||||||
if( IsEventMode() )
|
if( IsEventMode() )
|
||||||
return false;
|
return EarnedExtraStage_No;
|
||||||
|
|
||||||
if( !PREFSMAN->m_bAllowExtraStage )
|
if( !PREFSMAN->m_bAllowExtraStage )
|
||||||
return false;
|
return EarnedExtraStage_No;
|
||||||
|
|
||||||
if( m_PlayMode != PLAY_MODE_REGULAR )
|
if( m_PlayMode != PLAY_MODE_REGULAR )
|
||||||
return false;
|
return EarnedExtraStage_No;
|
||||||
|
|
||||||
if( m_bBackedOutOfFinalStage )
|
if( m_bBackedOutOfFinalStage )
|
||||||
return false;
|
return EarnedExtraStage_No;
|
||||||
|
|
||||||
if( GetSmallestNumStagesLeftForAnyHumanPlayer() > 0 )
|
if( GetSmallestNumStagesLeftForAnyHumanPlayer() > 0 )
|
||||||
return false;
|
return EarnedExtraStage_No;
|
||||||
|
|
||||||
if( m_iAwardedExtraStages[m_MasterPlayerNumber] >= 2 )
|
if( m_iAwardedExtraStages[m_MasterPlayerNumber] >= 2 )
|
||||||
return false;
|
return EarnedExtraStage_No;
|
||||||
|
|
||||||
FOREACH_EnabledPlayer( pn )
|
FOREACH_EnabledPlayer( pn )
|
||||||
{
|
{
|
||||||
@@ -1254,15 +1256,15 @@ bool GameState::HasEarnedExtraStageInternal() const
|
|||||||
if( IsExtraStage() )
|
if( IsExtraStage() )
|
||||||
{
|
{
|
||||||
if( ALLOW_EXTRA_2 && STATSMAN->m_CurStageStats.m_player[pn].GetGrade() <= GRADE_TIER_FOR_EXTRA_2 )
|
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 )
|
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
|
PlayerNumber GameState::GetBestPlayer() const
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ public:
|
|||||||
|
|
||||||
// Keep extra stage logic internal to GameState.
|
// Keep extra stage logic internal to GameState.
|
||||||
private:
|
private:
|
||||||
bool HasEarnedExtraStageInternal() const;
|
EarnedExtraStage CalculateEarnedExtraStage() const;
|
||||||
int m_iAwardedExtraStages[NUM_PLAYERS];
|
int m_iAwardedExtraStages[NUM_PLAYERS];
|
||||||
bool m_bEarnedExtraStage;
|
bool m_bEarnedExtraStage;
|
||||||
|
|
||||||
|
|||||||
@@ -98,6 +98,8 @@ void ScreenEvaluation::Init()
|
|||||||
ss.m_playMode = GAMESTATE->m_PlayMode;
|
ss.m_playMode = GAMESTATE->m_PlayMode;
|
||||||
ss.m_pStyle = GAMESTATE->GetCurrentStyle();
|
ss.m_pStyle = GAMESTATE->GetCurrentStyle();
|
||||||
ss.m_Stage = Stage_1st;
|
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_MasterPlayerNumber = PLAYER_1;
|
||||||
GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() );
|
GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() );
|
||||||
ss.m_vpPlayedSongs.push_back( GAMESTATE->m_pCurSong );
|
ss.m_vpPlayedSongs.push_back( GAMESTATE->m_pCurSong );
|
||||||
@@ -226,22 +228,6 @@ void ScreenEvaluation::Init()
|
|||||||
m_pStageStats = &m_FinalEvalStageStats;
|
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
|
// update persistent statistics
|
||||||
//
|
//
|
||||||
@@ -623,18 +609,9 @@ void ScreenEvaluation::Init()
|
|||||||
FOREACH_PlayerNumber( p )
|
FOREACH_PlayerNumber( p )
|
||||||
best_grade = min( best_grade, grade[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") );
|
SOUND->PlayOnce( THEME->GetPathS(m_sName,"try " + EarnedExtraStageToString(m_pStageStats->m_EarnedExtraStage)) );
|
||||||
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") );
|
|
||||||
}
|
}
|
||||||
else if( bOneHasNewTopRecord && ANNOUNCER->HasSoundsFor("evaluation new record") )
|
else if( bOneHasNewTopRecord && ANNOUNCER->HasSoundsFor("evaluation new record") )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -107,10 +107,6 @@ protected:
|
|||||||
AutoActor m_sprTimeLabel;
|
AutoActor m_sprTimeLabel;
|
||||||
BitmapText m_textTime[NUM_PLAYERS];
|
BitmapText m_textTime[NUM_PLAYERS];
|
||||||
|
|
||||||
// extra area
|
|
||||||
AutoActor m_sprTryExtraStage;
|
|
||||||
bool m_bFailed;
|
|
||||||
|
|
||||||
RageSound m_soundStart; // sound played if the player passes or fails
|
RageSound m_soundStart; // sound played if the player passes or fails
|
||||||
|
|
||||||
ThemeMetric<bool> SUMMARY;
|
ThemeMetric<bool> SUMMARY;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ StageStats::StageStats()
|
|||||||
m_pStyle = NULL;
|
m_pStyle = NULL;
|
||||||
m_vpPlayedSongs.clear();
|
m_vpPlayedSongs.clear();
|
||||||
m_vpPossibleSongs.clear();
|
m_vpPossibleSongs.clear();
|
||||||
|
m_EarnedExtraStage = EarnedExtraStage_No;
|
||||||
m_bGaveUp = false;
|
m_bGaveUp = false;
|
||||||
m_bUsedAutoplay = false;
|
m_bUsedAutoplay = false;
|
||||||
m_fGameplaySeconds = 0;
|
m_fGameplaySeconds = 0;
|
||||||
@@ -343,16 +344,17 @@ public:
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
static int GetGameplaySeconds( T* p, lua_State *L ) { lua_pushnumber(L, p->m_fGameplaySeconds); 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 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 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; }
|
static int GetStage( T* p, lua_State *L ) { LuaHelpers::Push( L, p->m_Stage ); return 1; }
|
||||||
DEFINE_METHOD( GetStageIndex, m_iStageIndex )
|
DEFINE_METHOD( GetStageIndex, m_iStageIndex )
|
||||||
static int PlayerHasHighScore( T* p, lua_State *L )
|
static int PlayerHasHighScore( T* p, lua_State *L )
|
||||||
{
|
{
|
||||||
lua_pushboolean(L, p->PlayerHasHighScore(Enum::Check<PlayerNumber>(L, 1)));
|
lua_pushboolean(L, p->PlayerHasHighScore(Enum::Check<PlayerNumber>(L, 1)));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
DEFINE_METHOD( GetEarnedExtraStage, m_EarnedExtraStage )
|
||||||
|
|
||||||
LunaStageStats()
|
LunaStageStats()
|
||||||
{
|
{
|
||||||
@@ -366,6 +368,7 @@ public:
|
|||||||
ADD_METHOD( GetStage );
|
ADD_METHOD( GetStage );
|
||||||
ADD_METHOD( GetStageIndex );
|
ADD_METHOD( GetStageIndex );
|
||||||
ADD_METHOD( PlayerHasHighScore );
|
ADD_METHOD( PlayerHasHighScore );
|
||||||
|
ADD_METHOD( GetEarnedExtraStage );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public:
|
|||||||
vector<Song*> m_vpPlayedSongs;
|
vector<Song*> m_vpPlayedSongs;
|
||||||
vector<Song*> m_vpPossibleSongs;
|
vector<Song*> m_vpPossibleSongs;
|
||||||
|
|
||||||
|
EarnedExtraStage m_EarnedExtraStage;
|
||||||
bool m_bGaveUp; // exited gameplay by giving up
|
bool m_bGaveUp; // exited gameplay by giving up
|
||||||
bool m_bUsedAutoplay; // used autoplay at any point during gameplay
|
bool m_bUsedAutoplay; // used autoplay at any point during gameplay
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user