Add m_ to StageStats and PlayerStageStats members. There are several methods of these classes with local variable names that are similar to the member names. m_ helps distinguish between those two types.

This commit is contained in:
Chris Danford
2006-11-14 11:13:21 +00:00
parent c86c218522
commit 2f7ac6aa3c
33 changed files with 552 additions and 543 deletions
+11 -11
View File
@@ -46,22 +46,22 @@ void ComboGraph::Load( const StageStats &s, const PlayerStageStats &pss )
/* Find the largest combo. */ /* Find the largest combo. */
int iMaxComboSize = 0; int iMaxComboSize = 0;
for( unsigned i = 0; i < pss.ComboList.size(); ++i ) for( unsigned i = 0; i < pss.m_ComboList.size(); ++i )
iMaxComboSize = max( iMaxComboSize, pss.ComboList[i].GetStageCnt() ); iMaxComboSize = max( iMaxComboSize, pss.m_ComboList[i].GetStageCnt() );
for( unsigned i = 0; i < pss.ComboList.size(); ++i ) for( unsigned i = 0; i < pss.m_ComboList.size(); ++i )
{ {
const PlayerStageStats::Combo_t &combo = pss.ComboList[i]; const PlayerStageStats::Combo_t &combo = pss.m_ComboList[i];
if( combo.GetStageCnt() < MinComboSizeToShow ) if( combo.GetStageCnt() < MinComboSizeToShow )
continue; /* too small */ continue; /* too small */
const bool bIsMax = (combo.GetStageCnt() == iMaxComboSize); const bool bIsMax = (combo.GetStageCnt() == iMaxComboSize);
LOG->Trace( "combo %i is %f+%f of %f", i, combo.fStartSecond, combo.fSizeSeconds, fLastSecond ); LOG->Trace( "combo %i is %f+%f of %f", i, combo.m_fStartSecond, combo.m_fSizeSeconds, fLastSecond );
Actor *pSprite = bIsMax? m_pMaxCombo->Copy():m_pNormalCombo->Copy(); Actor *pSprite = bIsMax? m_pMaxCombo->Copy():m_pNormalCombo->Copy();
const float fStart = SCALE( combo.fStartSecond, fFirstSecond, fLastSecond, 0.0f, 1.0f ); const float fStart = SCALE( combo.m_fStartSecond, fFirstSecond, fLastSecond, 0.0f, 1.0f );
const float fSize = SCALE( combo.fSizeSeconds, 0, fLastSecond-fFirstSecond, 0.0f, 1.0f ); const float fSize = SCALE( combo.m_fSizeSeconds, 0, fLastSecond-fFirstSecond, 0.0f, 1.0f );
pSprite->SetCropLeft ( SCALE( fSize, 0.0f, 1.0f, 0.5f, 0.0f ) ); pSprite->SetCropLeft ( SCALE( fSize, 0.0f, 1.0f, 0.5f, 0.0f ) );
pSprite->SetCropRight( SCALE( fSize, 0.0f, 1.0f, 0.5f, 0.0f ) ); pSprite->SetCropRight( SCALE( fSize, 0.0f, 1.0f, 0.5f, 0.0f ) );
@@ -71,9 +71,9 @@ void ComboGraph::Load( const StageStats &s, const PlayerStageStats &pss )
this->AddChild( pSprite ); this->AddChild( pSprite );
} }
for( unsigned i = 0; i < pss.ComboList.size(); ++i ) for( unsigned i = 0; i < pss.m_ComboList.size(); ++i )
{ {
const PlayerStageStats::Combo_t &combo = pss.ComboList[i]; const PlayerStageStats::Combo_t &combo = pss.m_ComboList[i];
if( combo.GetStageCnt() < MinComboSizeToShow ) if( combo.GetStageCnt() < MinComboSizeToShow )
continue; /* too small */ continue; /* too small */
@@ -86,8 +86,8 @@ void ComboGraph::Load( const StageStats &s, const PlayerStageStats &pss )
BitmapText *pText = m_pMaxComboText->Copy(); BitmapText *pText = m_pMaxComboText->Copy();
const float fStart = SCALE( combo.fStartSecond, fFirstSecond, fLastSecond, 0.0f, 1.0f ); const float fStart = SCALE( combo.m_fStartSecond, fFirstSecond, fLastSecond, 0.0f, 1.0f );
const float fSize = SCALE( combo.fSizeSeconds, 0, fLastSecond-fFirstSecond, 0.0f, 1.0f ); const float fSize = SCALE( combo.m_fSizeSeconds, 0, fLastSecond-fFirstSecond, 0.0f, 1.0f );
const float fWidth = m_pNormalCombo->GetUnzoomedWidth(); const float fWidth = m_pNormalCombo->GetUnzoomedWidth();
const float fCenterPercent = fStart + fSize/2; const float fCenterPercent = fStart + fSize/2;
+1 -1
View File
@@ -328,7 +328,7 @@ void DancingCharacters::DrawPrimitives()
continue; continue;
} }
bool bFailed = STATSMAN->m_CurStageStats.m_player[p].bFailed; bool bFailed = STATSMAN->m_CurStageStats.m_player[p].m_bFailed;
bool bDanger = m_bDrawDangerLight; bool bDanger = m_bDrawDangerLight;
DISPLAY->SetLighting( true ); DISPLAY->SetLighting( true );
+14 -14
View File
@@ -506,7 +506,7 @@ void GameState::BeginStage()
m_pPlayerState[p]->m_PlayerOptions.Assign( ModsLevel_Stage, m_pPlayerState[p]->m_PlayerOptions.GetPreferred() ); m_pPlayerState[p]->m_PlayerOptions.Assign( ModsLevel_Stage, m_pPlayerState[p]->m_PlayerOptions.GetPreferred() );
m_SongOptions.Assign( ModsLevel_Stage, m_SongOptions.GetPreferred() ); m_SongOptions.Assign( ModsLevel_Stage, m_SongOptions.GetPreferred() );
} }
STATSMAN->m_CurStageStats.fMusicRate = m_SongOptions.GetSong().m_fMusicRate; STATSMAN->m_CurStageStats.m_fMusicRate = m_SongOptions.GetSong().m_fMusicRate;
m_iNumStagesOfThisSong = GetNumStagesForCurrentSong(); m_iNumStagesOfThisSong = GetNumStagesForCurrentSong();
ASSERT( m_iNumStagesOfThisSong != -1 ); ASSERT( m_iNumStagesOfThisSong != -1 );
} }
@@ -634,14 +634,14 @@ void GameState::ResetStageStatistics()
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
{ {
Profile* pProfile = PROFILEMAN->GetProfile(p); Profile* pProfile = PROFILEMAN->GetProfile(p);
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = pProfile->m_iCurrentCombo; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = pProfile->m_iCurrentCombo;
} }
} }
else // GetStageIndex() > 0 else // GetStageIndex() > 0
{ {
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
{ {
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = OldStats.m_player[p].iCurCombo; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = OldStats.m_player[p].m_iCurCombo;
} }
} }
} }
@@ -787,7 +787,7 @@ int GameState::GetCourseSongIndex() const
int iSongIndex = 0; int iSongIndex = 0;
/* iSongsPlayed includes the current song, so it's 1-based; subtract one. */ /* iSongsPlayed includes the current song, so it's 1-based; subtract one. */
FOREACH_EnabledPlayer( pn ) FOREACH_EnabledPlayer( pn )
iSongIndex = max( iSongIndex, STATSMAN->m_CurStageStats.m_player[pn].iSongsPlayed-1 ); iSongIndex = max( iSongIndex, STATSMAN->m_CurStageStats.m_player[pn].m_iSongsPlayed-1 );
return iSongIndex; return iSongIndex;
} }
@@ -1026,7 +1026,7 @@ bool GameState::HasEarnedExtraStage() const
ASSERT(pSong); ASSERT(pSong);
const StageStats &stats = STATSMAN->m_CurStageStats; const StageStats &stats = STATSMAN->m_CurStageStats;
return stats.vpPlayedSongs.size() && stats.vpPlayedSongs.back() == pSong; return stats.m_vpPlayedSongs.size() && stats.m_vpPlayedSongs.back() == pSong;
} }
return true; return true;
@@ -1063,11 +1063,11 @@ StageResult GameState::GetStageResult( PlayerNumber pn ) const
continue; continue;
/* If anyone did just as well, at best it's a draw. */ /* If anyone did just as well, at best it's a draw. */
if( STATSMAN->m_CurStageStats.m_player[p].iActualDancePoints == STATSMAN->m_CurStageStats.m_player[pn].iActualDancePoints ) if( STATSMAN->m_CurStageStats.m_player[p].m_iActualDancePoints == STATSMAN->m_CurStageStats.m_player[pn].m_iActualDancePoints )
win = RESULT_DRAW; win = RESULT_DRAW;
/* If anyone did better, we lost. */ /* If anyone did better, we lost. */
if( STATSMAN->m_CurStageStats.m_player[p].iActualDancePoints > STATSMAN->m_CurStageStats.m_player[pn].iActualDancePoints ) if( STATSMAN->m_CurStageStats.m_player[p].m_iActualDancePoints > STATSMAN->m_CurStageStats.m_player[pn].m_iActualDancePoints )
return RESULT_LOSE; return RESULT_LOSE;
} }
return win; return win;
@@ -1124,11 +1124,11 @@ bool GameState::IsDisqualified( PlayerNumber pn )
if( !IsHumanPlayer(pn) ) if( !IsHumanPlayer(pn) )
return false; return false;
if( STATSMAN->m_CurStageStats.bGaveUp ) if( STATSMAN->m_CurStageStats.m_bGaveUp )
return true; return true;
#ifndef DEBUG #ifndef DEBUG
if( STATSMAN->m_CurStageStats.bUsedAutoplay ) if( STATSMAN->m_CurStageStats.m_bUsedAutoplay )
return true; return true;
#endif //DEBUG #endif //DEBUG
@@ -1270,9 +1270,9 @@ void GameState::GetRankingFeats( PlayerNumber pn, vector<RankingFeat> &asFeatsOu
{ {
CHECKPOINT_M( ssprintf("%u/%i", i, (int)STATSMAN->m_vPlayedStageStats.size() ) ); CHECKPOINT_M( ssprintf("%u/%i", i, (int)STATSMAN->m_vPlayedStageStats.size() ) );
SongAndSteps sas; SongAndSteps sas;
sas.pSong = STATSMAN->m_vPlayedStageStats[i].vpPlayedSongs[0]; sas.pSong = STATSMAN->m_vPlayedStageStats[i].m_vpPlayedSongs[0];
ASSERT( sas.pSong ); ASSERT( sas.pSong );
sas.pSteps = STATSMAN->m_vPlayedStageStats[i].m_player[pn].vpPlayedSteps[0]; sas.pSteps = STATSMAN->m_vPlayedStageStats[i].m_player[pn].m_vpPlayedSteps[0];
ASSERT( sas.pSteps ); ASSERT( sas.pSteps );
vSongAndSteps.push_back( sas ); vSongAndSteps.push_back( sas );
} }
@@ -1559,7 +1559,7 @@ bool GameState::AllAreInDangerOrWorse() const
bool GameState::AllHumanHaveComboOf30OrMoreMisses() const bool GameState::AllHumanHaveComboOf30OrMoreMisses() const
{ {
FOREACH_HumanPlayer( p ) FOREACH_HumanPlayer( p )
if( STATSMAN->m_CurStageStats.m_player[p].iCurMissCombo < 30 ) if( STATSMAN->m_CurStageStats.m_player[p].m_iCurMissCombo < 30 )
return false; return false;
return true; return true;
} }
@@ -1751,11 +1751,11 @@ float GameState::GetGoalPercentComplete( PlayerNumber pn )
switch( pProfile->m_GoalType ) switch( pProfile->m_GoalType )
{ {
case GoalType_Calories: case GoalType_Calories:
fActual = pssAccum.fCaloriesBurned + pssCurrent.fCaloriesBurned; fActual = pssAccum.m_fCaloriesBurned + pssCurrent.m_fCaloriesBurned;
fGoal = (float)pProfile->m_iGoalCalories; fGoal = (float)pProfile->m_iGoalCalories;
break; break;
case GoalType_Time: case GoalType_Time:
fActual = ssAccum.fGameplaySeconds + ssCurrent.fGameplaySeconds; fActual = ssAccum.m_fGameplaySeconds + ssCurrent.m_fGameplaySeconds;
fGoal = (float)pProfile->m_iGoalSeconds; fGoal = (float)pProfile->m_iGoalSeconds;
break; break;
case GoalType_None: case GoalType_None:
+3 -3
View File
@@ -211,9 +211,9 @@ void GraphDisplay::LoadFromStageStats( const StageStats &ss, const PlayerStageSt
// Show song boundaries // Show song boundaries
// //
float fSec = 0; float fSec = 0;
FOREACH_CONST( Song*, ss.vpPossibleSongs, song ) FOREACH_CONST( Song*, ss.m_vpPossibleSongs, song )
{ {
if( song == ss.vpPossibleSongs.end()-1 ) if( song == ss.m_vpPossibleSongs.end()-1 )
continue; continue;
fSec += (*song)->GetStepsSeconds(); fSec += (*song)->GetStepsSeconds();
@@ -226,7 +226,7 @@ void GraphDisplay::LoadFromStageStats( const StageStats &ss, const PlayerStageSt
UpdateVerts(); UpdateVerts();
if( !pss.bFailed ) if( !pss.m_bFailed )
{ {
// //
// Search for the min life record to show "Just Barely!" // Search for the min life record to show "Just Barely!"
+1 -1
View File
@@ -81,7 +81,7 @@ void HoldJudgment::HandleMessage( const Message &msg )
{ {
ASSERT( m_mpToTrack != MultiPlayer_Invalid ); ASSERT( m_mpToTrack != MultiPlayer_Invalid );
if( msg == enum_add2(Message_ShowHoldJudgmentMuliPlayerP1,m_mpToTrack) ) if( msg == enum_add2(Message_ShowHoldJudgmentMuliPlayerP1,m_mpToTrack) )
SetHoldJudgment( STATSMAN->m_CurStageStats.m_multiPlayer[m_mpToTrack].hnsLast ); SetHoldJudgment( STATSMAN->m_CurStageStats.m_multiPlayer[m_mpToTrack].m_hnsLast );
ActorFrame::HandleMessage( msg ); ActorFrame::HandleMessage( msg );
} }
+2 -2
View File
@@ -93,10 +93,10 @@ void Inventory::Update( float fDelta )
PlayerNumber pn = m_pPlayerState->m_PlayerNumber; PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
// check to see if they deserve a new item // check to see if they deserve a new item
if( STATSMAN->m_CurStageStats.m_player[pn].iCurCombo != m_iLastSeenCombo ) if( STATSMAN->m_CurStageStats.m_player[pn].m_iCurCombo != m_iLastSeenCombo )
{ {
int iOldCombo = m_iLastSeenCombo; int iOldCombo = m_iLastSeenCombo;
m_iLastSeenCombo = STATSMAN->m_CurStageStats.m_player[pn].iCurCombo; m_iLastSeenCombo = STATSMAN->m_CurStageStats.m_player[pn].m_iCurCombo;
int iNewCombo = m_iLastSeenCombo; int iNewCombo = m_iLastSeenCombo;
#define CROSSED(i) (iOldCombo<i)&&(iNewCombo>=i) #define CROSSED(i) (iOldCombo<i)&&(iNewCombo>=i)
+1 -1
View File
@@ -108,7 +108,7 @@ void Judgment::LoadFromMultiPlayer( MultiPlayer mp )
void Judgment::HandleMessage( const Message &msg ) void Judgment::HandleMessage( const Message &msg )
{ {
if( m_mpToTrack != MultiPlayer_Invalid && msg == enum_add2(Message_ShowJudgmentMuliPlayerP1,m_mpToTrack) ) if( m_mpToTrack != MultiPlayer_Invalid && msg == enum_add2(Message_ShowJudgmentMuliPlayerP1,m_mpToTrack) )
SetJudgment( STATSMAN->m_CurStageStats.m_multiPlayer[m_mpToTrack].tnsLast, false ); // FIXME: save and pass early bool? SetJudgment( STATSMAN->m_CurStageStats.m_multiPlayer[m_mpToTrack].m_tnsLast, false ); // FIXME: save and pass early bool?
ActorFrame::HandleMessage( msg ); ActorFrame::HandleMessage( msg );
} }
+1 -1
View File
@@ -238,7 +238,7 @@ void LifeMeterBar::ChangeLife( float fDeltaLife )
} }
/* If we've already failed, there's no point in letting them fill up the bar again. */ /* If we've already failed, there's no point in letting them fill up the bar again. */
if( m_pPlayerStageStats->bFailed ) if( m_pPlayerStageStats->m_bFailed )
return; return;
switch( GAMESTATE->m_SongOptions.GetSong().m_DrainType ) switch( GAMESTATE->m_SongOptions.GetSong().m_DrainType )
+1 -1
View File
@@ -64,7 +64,7 @@ void LifeMeterBattery::Load( const PlayerState *pPlayerState, PlayerStageStats *
void LifeMeterBattery::OnSongEnded() void LifeMeterBattery::OnSongEnded()
{ {
if( m_pPlayerStageStats->bFailed || m_iLivesLeft == 0 ) if( m_pPlayerStageStats->m_bFailed || m_iLivesLeft == 0 )
return; return;
if( m_iLivesLeft < GAMESTATE->m_SongOptions.GetSong().m_iBatteryLives ) if( m_iLivesLeft < GAMESTATE->m_SongOptions.GetSong().m_iBatteryLives )
+2 -2
View File
@@ -139,7 +139,7 @@ void LifeMeterTime::Update( float fDeltaTime )
// update current stage stats so ScoreDisplayLifeTime can show the right thing // update current stage stats so ScoreDisplayLifeTime can show the right thing
float fSecs = GetLifeSeconds(); float fSecs = GetLifeSeconds();
fSecs = max( 0, fSecs ); fSecs = max( 0, fSecs );
m_pPlayerStageStats->fLifeRemainingSeconds = fSecs; m_pPlayerStageStats->m_fLifeRemainingSeconds = fSecs;
LifeMeter::Update( fDeltaTime ); LifeMeter::Update( fDeltaTime );
@@ -163,7 +163,7 @@ float LifeMeterTime::GetLife() const
float LifeMeterTime::GetLifeSeconds() const float LifeMeterTime::GetLifeSeconds() const
{ {
float fSecs = m_fLifeTotalGainedSeconds - (m_fLifeTotalLostSeconds + STATSMAN->m_CurStageStats.fStepsSeconds); float fSecs = m_fLifeTotalGainedSeconds - (m_fLifeTotalLostSeconds + STATSMAN->m_CurStageStats.m_fStepsSeconds);
return fSecs; return fSecs;
} }
+1 -1
View File
@@ -313,7 +313,7 @@ void NetworkSyncManager::ReportScore(int playerID, int step, int score, int comb
ctr = uint8_t( STATSMAN->m_CurStageStats.m_player[playerID].GetGrade()*16 ); ctr = uint8_t( STATSMAN->m_CurStageStats.m_player[playerID].GetGrade()*16 );
if ( STATSMAN->m_CurStageStats.m_player[playerID].bFailed ) if ( STATSMAN->m_CurStageStats.m_player[playerID].m_bFailed )
ctr = uint8_t( 112 ); //Code for failed (failed constant seems not to work) ctr = uint8_t( 112 ); //Code for failed (failed constant seems not to work)
m_packet.Write1(ctr); m_packet.Write1(ctr);
+3 -3
View File
@@ -207,7 +207,7 @@ float GetActualVoltageRadarValue( const NoteData &in, float fSongSeconds, const
* keeper. Instead, let's use the length of the longest recorded combo. This is * keeper. Instead, let's use the length of the longest recorded combo. This is
* only subtly different: it's the percent of the song the longest combo took to get. */ * only subtly different: it's the percent of the song the longest combo took to get. */
const PlayerStageStats::Combo_t MaxCombo = pss.GetMaxCombo(); const PlayerStageStats::Combo_t MaxCombo = pss.GetMaxCombo();
float fComboPercent = SCALE( MaxCombo.fSizeSeconds, 0, pss.fLastSecond-pss.fFirstSecond, 0.0f, 1.0f ); float fComboPercent = SCALE( MaxCombo.m_fSizeSeconds, 0, pss.m_fLastSecond-pss.m_fFirstSecond, 0.0f, 1.0f );
return clamp( fComboPercent, 0.0f, 1.0f ); return clamp( fComboPercent, 0.0f, 1.0f );
} }
@@ -226,11 +226,11 @@ float GetActualAirRadarValue( const NoteData &in, float fSongSeconds )
/* Return the ratio of actual to possible dance points. */ /* Return the ratio of actual to possible dance points. */
float GetActualChaosRadarValue( const NoteData &in, float fSongSeconds, const PlayerStageStats &pss ) float GetActualChaosRadarValue( const NoteData &in, float fSongSeconds, const PlayerStageStats &pss )
{ {
const int iPossibleDP = pss.iPossibleDancePoints; const int iPossibleDP = pss.m_iPossibleDancePoints;
if ( iPossibleDP == 0 ) if ( iPossibleDP == 0 )
return 1; return 1;
const int ActualDP = pss.iActualDancePoints; const int ActualDP = pss.m_iActualDancePoints;
return clamp( float(ActualDP)/iPossibleDP, 0.0f, 1.0f ); return clamp( float(ActualDP)/iPossibleDP, 0.0f, 1.0f );
} }
+2 -2
View File
@@ -113,8 +113,8 @@ void PercentageDisplay::Update( float fDeltaTime )
void PercentageDisplay::Refresh() void PercentageDisplay::Refresh()
{ {
const int iActualDancePoints = m_pPlayerStageStats->iActualDancePoints; const int iActualDancePoints = m_pPlayerStageStats->m_iActualDancePoints;
const int iCurPossibleDancePoints = m_pPlayerStageStats->iCurPossibleDancePoints; const int iCurPossibleDancePoints = m_pPlayerStageStats->m_iCurPossibleDancePoints;
if( iActualDancePoints == m_Last && iCurPossibleDancePoints == m_LastMax ) if( iActualDancePoints == m_Last && iCurPossibleDancePoints == m_LastMax )
return; return;
+25 -25
View File
@@ -334,7 +334,7 @@ void Player::Load()
PlayerNumber pn = m_pPlayerState->m_PlayerNumber; PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
bool bOniDead = GAMESTATE->m_SongOptions.GetStage().m_LifeType == SongOptions::LIFE_BATTERY && bool bOniDead = GAMESTATE->m_SongOptions.GetStage().m_LifeType == SongOptions::LIFE_BATTERY &&
(m_pPlayerStageStats == NULL || m_pPlayerStageStats->bFailed); (m_pPlayerStageStats == NULL || m_pPlayerStageStats->m_bFailed);
/* The editor reuses Players ... so we really need to make sure everything /* The editor reuses Players ... so we really need to make sure everything
* is reset and not tweening. Perhaps ActorFrame should recurse to subactors; * is reset and not tweening. Perhaps ActorFrame should recurse to subactors;
@@ -345,7 +345,7 @@ void Player::Load()
if( m_pPlayerStageStats ) if( m_pPlayerStageStats )
{ {
if( m_pCombo ) if( m_pCombo )
m_pCombo->SetCombo( m_pPlayerStageStats->iCurCombo, m_pPlayerStageStats->iCurMissCombo ); // combo can persist between songs and games m_pCombo->SetCombo( m_pPlayerStageStats->m_iCurCombo, m_pPlayerStageStats->m_iCurMissCombo ); // combo can persist between songs and games
} }
if( m_pAttackDisplay ) if( m_pAttackDisplay )
m_pAttackDisplay->Init( m_pPlayerState ); m_pAttackDisplay->Init( m_pPlayerState );
@@ -576,7 +576,7 @@ void Player::Update( float fDeltaTime )
Step( iTrack, iSongRow, now, false, false ); Step( iTrack, iSongRow, now, false, false );
if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY ) if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY )
STATSMAN->m_CurStageStats.bUsedAutoplay = true; STATSMAN->m_CurStageStats.m_bUsedAutoplay = true;
} }
} }
@@ -619,7 +619,7 @@ void Player::Update( float fDeltaTime )
// TODO: Make the CPU miss sometimes. // TODO: Make the CPU miss sometimes.
bIsHoldingButton = true; bIsHoldingButton = true;
if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY ) if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY )
STATSMAN->m_CurStageStats.bUsedAutoplay = true; STATSMAN->m_CurStageStats.m_bUsedAutoplay = true;
} }
else else
{ {
@@ -684,7 +684,7 @@ void Player::Update( float fDeltaTime )
{ {
fLife = 1; fLife = 1;
hns = HNS_Held; hns = HNS_Held;
bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->iCurCombo>(int)BRIGHT_GHOST_COMBO_THRESHOLD; bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->m_iCurCombo>(int)BRIGHT_GHOST_COMBO_THRESHOLD;
if( m_pNoteField ) if( m_pNoteField )
m_pNoteField->DidHoldNote( iTrack, HNS_Held, bBright ); // bright ghost flash m_pNoteField->DidHoldNote( iTrack, HNS_Held, bBright ); // bright ghost flash
} }
@@ -698,7 +698,7 @@ void Player::Update( float fDeltaTime )
HandleHoldScore( tn ); HandleHoldScore( tn );
if( m_pPlayerStageStats != NULL ) if( m_pPlayerStageStats != NULL )
m_pPlayerStageStats->hnsLast = hns; m_pPlayerStageStats->m_hnsLast = hns;
if( m_pPlayerState->m_mp != MultiPlayer_Invalid ) if( m_pPlayerState->m_mp != MultiPlayer_Invalid )
MESSAGEMAN->Broadcast( enum_add2(Message_ShowHoldJudgmentMuliPlayerP1,m_pPlayerState->m_mp) ); MESSAGEMAN->Broadcast( enum_add2(Message_ShowHoldJudgmentMuliPlayerP1,m_pPlayerState->m_mp) );
@@ -980,7 +980,7 @@ int Player::GetClosestNonEmptyRow( int iNoteRow, int iMaxRowsAhead, int iMaxRows
bool Player::IsOniDead() const bool Player::IsOniDead() const
{ {
// If we're playing on oni and we've died, do nothing. // If we're playing on oni and we've died, do nothing.
return GAMESTATE->m_SongOptions.GetCurrent().m_LifeType == SongOptions::LIFE_BATTERY && m_pPlayerStageStats && m_pPlayerStageStats->bFailed; return GAMESTATE->m_SongOptions.GetCurrent().m_LifeType == SongOptions::LIFE_BATTERY && m_pPlayerStageStats && m_pPlayerStageStats->m_bFailed;
} }
void Player::Fret( int col, int row, const RageTimer &tm, bool bHeld, bool bRelease ) void Player::Fret( int col, int row, const RageTimer &tm, bool bHeld, bool bRelease )
@@ -1050,7 +1050,7 @@ void Player::StepOrStrum( int col, int row, const RageTimer &tm, bool bHeld, boo
// Increase life // Increase life
tn.HoldResult.fLife = 1; tn.HoldResult.fLife = 1;
bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->iCurCombo>(int)BRIGHT_GHOST_COMBO_THRESHOLD; bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->m_iCurCombo>(int)BRIGHT_GHOST_COMBO_THRESHOLD;
if( m_pNoteField ) if( m_pNoteField )
m_pNoteField->DidHoldNote( col, HNS_Held, bBright ); m_pNoteField->DidHoldNote( col, HNS_Held, bBright );
} }
@@ -1100,7 +1100,7 @@ void Player::StepOrStrum( int col, int row, const RageTimer &tm, bool bHeld, boo
break; break;
} }
m_pPlayerStageStats->fCaloriesBurned += fCals; m_pPlayerStageStats->m_fCaloriesBurned += fCals;
} }
} }
@@ -1365,7 +1365,7 @@ void Player::StepOrStrum( int col, int row, const RageTimer &tm, bool bHeld, boo
{ {
const bool bBlind = (m_pPlayerState->m_PlayerOptions.GetCurrent().m_fBlind != 0); const bool bBlind = (m_pPlayerState->m_PlayerOptions.GetCurrent().m_fBlind != 0);
// XXX This is the wrong combo for shared players. STATSMAN->m_CurStageStats.m_Player[pn] might work but could be wrong. // XXX This is the wrong combo for shared players. STATSMAN->m_CurStageStats.m_Player[pn] might work but could be wrong.
const bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->iCurCombo > int(BRIGHT_GHOST_COMBO_THRESHOLD) || bBlind; const bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->m_iCurCombo > int(BRIGHT_GHOST_COMBO_THRESHOLD) || bBlind;
if( m_pNoteField ) if( m_pNoteField )
m_pNoteField->DidTapNote( col, score, bBright ); m_pNoteField->DidTapNote( col, score, bBright );
if( score >= TNS_W3 || bBlind ) if( score >= TNS_W3 || bBlind )
@@ -1603,7 +1603,7 @@ void Player::FlashGhostRow( int iRow, PlayerNumber pn )
TapNoteScore lastTNS = NoteDataWithScoring::LastTapNoteWithResult( m_NoteData, iRow, pn ).result.tns; TapNoteScore lastTNS = NoteDataWithScoring::LastTapNoteWithResult( m_NoteData, iRow, pn ).result.tns;
const bool bBlind = (m_pPlayerState->m_PlayerOptions.GetCurrent().m_fBlind != 0); const bool bBlind = (m_pPlayerState->m_PlayerOptions.GetCurrent().m_fBlind != 0);
// XXX This is the wrong combo for shared players. STATSMAN->m_CurStageStats.m_Player[pn] might work but could be wrong. // XXX This is the wrong combo for shared players. STATSMAN->m_CurStageStats.m_Player[pn] might work but could be wrong.
const bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->iCurCombo > int(BRIGHT_GHOST_COMBO_THRESHOLD) || bBlind; const bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->m_iCurCombo > int(BRIGHT_GHOST_COMBO_THRESHOLD) || bBlind;
for( int iTrack = 0; iTrack < m_NoteData.GetNumTracks(); ++iTrack ) for( int iTrack = 0; iTrack < m_NoteData.GetNumTracks(); ++iTrack )
{ {
@@ -1636,7 +1636,7 @@ void Player::CrossedRow( int iNoteRow, const RageTimer &now )
{ {
Step( t, iNoteRow, now, false, false ); Step( t, iNoteRow, now, false, false );
if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY ) if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY )
STATSMAN->m_CurStageStats.bUsedAutoplay = true; STATSMAN->m_CurStageStats.m_bUsedAutoplay = true;
} }
} }
} }
@@ -1715,7 +1715,7 @@ void Player::HandleTapRowScore( unsigned row )
PlayerNumber pn = m_pPlayerState->m_PlayerNumber; PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
TapNoteScore scoreOfLastTap = NoteDataWithScoring::LastTapNoteWithResult(m_NoteData, row, pn).result.tns; TapNoteScore scoreOfLastTap = NoteDataWithScoring::LastTapNoteWithResult(m_NoteData, row, pn).result.tns;
const int iOldCombo = m_pPlayerStageStats ? m_pPlayerStageStats->iCurCombo : 0; const int iOldCombo = m_pPlayerStageStats ? m_pPlayerStageStats->m_iCurCombo : 0;
if( scoreOfLastTap == TNS_Miss ) if( scoreOfLastTap == TNS_Miss )
m_LastTapNoteScore = TNS_Miss; m_LastTapNoteScore = TNS_Miss;
@@ -1746,8 +1746,8 @@ void Player::HandleTapRowScore( unsigned row )
if( m_pSecondaryScoreKeeper != NULL ) if( m_pSecondaryScoreKeeper != NULL )
m_pSecondaryScoreKeeper->HandleTapRowScore( m_NoteData, row, bComboStopped, bMissComboStopped ); m_pSecondaryScoreKeeper->HandleTapRowScore( m_NoteData, row, bComboStopped, bMissComboStopped );
const int iCurCombo = m_pPlayerStageStats ? m_pPlayerStageStats->iCurCombo : 0; const int iCurCombo = m_pPlayerStageStats ? m_pPlayerStageStats->m_iCurCombo : 0;
const int iCurMissCombo = m_pPlayerStageStats ? m_pPlayerStageStats->iCurMissCombo : 0; const int iCurMissCombo = m_pPlayerStageStats ? m_pPlayerStageStats->m_iCurMissCombo : 0;
if( m_pPlayerStageStats && m_pCombo ) if( m_pPlayerStageStats && m_pCombo )
{ {
@@ -1781,7 +1781,7 @@ void Player::HandleTapRowScore( unsigned row )
// new max combo // new max combo
if( m_pPlayerStageStats ) if( m_pPlayerStageStats )
m_pPlayerStageStats->iMaxCombo = max(m_pPlayerStageStats->iMaxCombo, iCurCombo); m_pPlayerStageStats->m_iMaxCombo = max(m_pPlayerStageStats->m_iMaxCombo, iCurCombo);
/* /*
* Use the real current beat, not the beat we've been passed. That's because we * Use the real current beat, not the beat we've been passed. That's because we
@@ -1792,7 +1792,7 @@ void Player::HandleTapRowScore( unsigned row )
* GAMESTATE->m_fMusicSeconds. Use fStepsSeconds instead. * GAMESTATE->m_fMusicSeconds. Use fStepsSeconds instead.
*/ */
if( m_pPlayerStageStats ) if( m_pPlayerStageStats )
m_pPlayerStageStats->UpdateComboList( STATSMAN->m_CurStageStats.fStepsSeconds, false ); m_pPlayerStageStats->UpdateComboList( STATSMAN->m_CurStageStats.m_fStepsSeconds, false );
float life = -1; float life = -1;
if( m_pLifeMeter ) if( m_pLifeMeter )
@@ -1807,18 +1807,18 @@ void Player::HandleTapRowScore( unsigned row )
} }
if( life != -1 ) if( life != -1 )
if( m_pPlayerStageStats ) if( m_pPlayerStageStats )
m_pPlayerStageStats->SetLifeRecordAt( life, STATSMAN->m_CurStageStats.fStepsSeconds ); m_pPlayerStageStats->SetLifeRecordAt( life, STATSMAN->m_CurStageStats.m_fStepsSeconds );
if( m_pScoreDisplay ) if( m_pScoreDisplay )
{ {
if( m_pPlayerStageStats ) if( m_pPlayerStageStats )
m_pScoreDisplay->SetScore( m_pPlayerStageStats->iScore ); m_pScoreDisplay->SetScore( m_pPlayerStageStats->m_iScore );
m_pScoreDisplay->OnJudgment( scoreOfLastTap ); m_pScoreDisplay->OnJudgment( scoreOfLastTap );
} }
if( m_pSecondaryScoreDisplay ) if( m_pSecondaryScoreDisplay )
{ {
if( m_pPlayerStageStats ) if( m_pPlayerStageStats )
m_pSecondaryScoreDisplay->SetScore( m_pPlayerStageStats->iScore ); m_pSecondaryScoreDisplay->SetScore( m_pPlayerStageStats->m_iScore );
m_pSecondaryScoreDisplay->OnJudgment( scoreOfLastTap ); m_pSecondaryScoreDisplay->OnJudgment( scoreOfLastTap );
} }
@@ -1855,13 +1855,13 @@ void Player::HandleHoldScore( const TapNote &tn )
if( m_pScoreDisplay ) if( m_pScoreDisplay )
{ {
if( m_pPlayerStageStats ) if( m_pPlayerStageStats )
m_pScoreDisplay->SetScore( m_pPlayerStageStats->iScore ); m_pScoreDisplay->SetScore( m_pPlayerStageStats->m_iScore );
m_pScoreDisplay->OnJudgment( holdScore, tapScore ); m_pScoreDisplay->OnJudgment( holdScore, tapScore );
} }
if( m_pSecondaryScoreDisplay ) if( m_pSecondaryScoreDisplay )
{ {
if( m_pPlayerStageStats ) if( m_pPlayerStageStats )
m_pSecondaryScoreDisplay->SetScore( m_pPlayerStageStats->iScore ); m_pSecondaryScoreDisplay->SetScore( m_pPlayerStageStats->m_iScore );
m_pSecondaryScoreDisplay->OnJudgment( holdScore, tapScore ); m_pSecondaryScoreDisplay->OnJudgment( holdScore, tapScore );
} }
@@ -1894,9 +1894,9 @@ void Player::CacheAllUsedNoteSkins()
bool Player::IsPlayingBeginner() const bool Player::IsPlayingBeginner() const
{ {
if( m_pPlayerStageStats != NULL && !m_pPlayerStageStats->vpPossibleSteps.empty() ) if( m_pPlayerStageStats != NULL && !m_pPlayerStageStats->m_vpPossibleSteps.empty() )
{ {
Steps *pSteps = m_pPlayerStageStats->vpPossibleSteps[0]; Steps *pSteps = m_pPlayerStageStats->m_vpPossibleSteps[0];
return pSteps->GetDifficulty() == DIFFICULTY_BEGINNER; return pSteps->GetDifficulty() == DIFFICULTY_BEGINNER;
} }
@@ -1912,7 +1912,7 @@ bool Player::IsPlayingBeginner() const
void Player::SetJudgment( TapNoteScore tns, bool bEarly ) void Player::SetJudgment( TapNoteScore tns, bool bEarly )
{ {
if( m_pPlayerStageStats ) if( m_pPlayerStageStats )
m_pPlayerStageStats->tnsLast = tns; m_pPlayerStageStats->m_tnsLast = tns;
if( m_pPlayerState->m_mp != MultiPlayer_Invalid ) if( m_pPlayerState->m_mp != MultiPlayer_Invalid )
MESSAGEMAN->Broadcast( enum_add2(Message_ShowJudgmentMuliPlayerP1,m_pPlayerState->m_mp) ); MESSAGEMAN->Broadcast( enum_add2(Message_ShowJudgmentMuliPlayerP1,m_pPlayerState->m_mp) );
+161 -152
View File
@@ -20,26 +20,35 @@ Grade GetGradeFromPercent( float fPercent, bool bMerciful );
void PlayerStageStats::Init() void PlayerStageStats::Init()
{ {
vpPlayedSteps.clear(); m_vpPlayedSteps.clear();
vpPossibleSteps.clear(); m_vpPossibleSteps.clear();
fAliveSeconds = 0; m_fAliveSeconds = 0;
bFailed = false; m_bFailed = false;
iPossibleDancePoints = iCurPossibleDancePoints = iActualDancePoints = 0; m_iPossibleDancePoints = 0;
iPossibleGradePoints = 0; m_iCurPossibleDancePoints = 0;
iCurCombo = iMaxCombo = iCurMissCombo = iScore = iBonus = iMaxScore = iCurMaxScore = 0; m_iActualDancePoints = 0;
iSongsPassed = iSongsPlayed = 0; m_iPossibleGradePoints = 0;
fLifeRemainingSeconds = 0; m_iCurCombo = 0;
fCaloriesBurned = 0; m_iMaxCombo = 0;
tnsLast = TapNoteScore_Invalid; m_iCurMissCombo = 0;
hnsLast = HoldNoteScore_Invalid; m_iScore = 0;
m_iBonus = 0;
m_iMaxScore = 0;
m_iCurMaxScore = 0;
m_iSongsPassed = 0;
m_iSongsPlayed = 0;
m_fLifeRemainingSeconds = 0;
m_fCaloriesBurned = 0;
m_tnsLast = TapNoteScore_Invalid;
m_hnsLast = HoldNoteScore_Invalid;
ZERO( iTapNoteScores ); ZERO( m_iTapNoteScores );
ZERO( iHoldNoteScores ); ZERO( m_iHoldNoteScores );
radarPossible.Zero(); m_radarPossible.Zero();
radarActual.Zero(); m_radarActual.Zero();
fFirstSecond = FLT_MAX; m_fFirstSecond = FLT_MAX;
fLastSecond = 0; m_fLastSecond = 0;
m_pdaToShow = PerDifficultyAward_Invalid; m_pdaToShow = PerDifficultyAward_Invalid;
m_pcaToShow = PeakComboAward_Invalid; m_pcaToShow = PeakComboAward_Invalid;
@@ -51,70 +60,70 @@ void PlayerStageStats::Init()
void PlayerStageStats::AddStats( const PlayerStageStats& other ) void PlayerStageStats::AddStats( const PlayerStageStats& other )
{ {
FOREACH_CONST( Steps*, other.vpPlayedSteps, s ) FOREACH_CONST( Steps*, other.m_vpPlayedSteps, s )
vpPlayedSteps.push_back( *s ); m_vpPlayedSteps.push_back( *s );
FOREACH_CONST( Steps*, other.vpPossibleSteps, s ) FOREACH_CONST( Steps*, other.m_vpPossibleSteps, s )
vpPossibleSteps.push_back( *s ); m_vpPossibleSteps.push_back( *s );
fAliveSeconds += other.fAliveSeconds; m_fAliveSeconds += other.m_fAliveSeconds;
bFailed |= other.bFailed; m_bFailed |= other.m_bFailed;
iPossibleDancePoints += other.iPossibleDancePoints; m_iPossibleDancePoints += other.m_iPossibleDancePoints;
iActualDancePoints += other.iActualDancePoints; m_iActualDancePoints += other.m_iActualDancePoints;
iCurPossibleDancePoints += other.iCurPossibleDancePoints; m_iCurPossibleDancePoints += other.m_iCurPossibleDancePoints;
iPossibleGradePoints += other.iPossibleGradePoints; m_iPossibleGradePoints += other.m_iPossibleGradePoints;
for( int t=0; t<NUM_TapNoteScore; t++ ) for( int t=0; t<NUM_TapNoteScore; t++ )
iTapNoteScores[t] += other.iTapNoteScores[t]; m_iTapNoteScores[t] += other.m_iTapNoteScores[t];
for( int h=0; h<NUM_HoldNoteScore; h++ ) for( int h=0; h<NUM_HoldNoteScore; h++ )
iHoldNoteScores[h] += other.iHoldNoteScores[h]; m_iHoldNoteScores[h] += other.m_iHoldNoteScores[h];
iCurCombo += other.iCurCombo; m_iCurCombo += other.m_iCurCombo;
iMaxCombo += other.iMaxCombo; m_iMaxCombo += other.m_iMaxCombo;
iCurMissCombo += other.iCurMissCombo; m_iCurMissCombo += other.m_iCurMissCombo;
iScore += other.iScore; m_iScore += other.m_iScore;
iMaxScore += other.iMaxScore; m_iMaxScore += other.m_iMaxScore;
iCurMaxScore += other.iCurMaxScore; m_iCurMaxScore += other.m_iCurMaxScore;
radarPossible += other.radarPossible; m_radarPossible += other.m_radarPossible;
radarActual += other.radarActual; m_radarActual += other.m_radarActual;
iSongsPassed += other.iSongsPassed; m_iSongsPassed += other.m_iSongsPassed;
iSongsPlayed += other.iSongsPlayed; m_iSongsPlayed += other.m_iSongsPlayed;
fCaloriesBurned += other.fCaloriesBurned; m_fCaloriesBurned += other.m_fCaloriesBurned;
fLifeRemainingSeconds = other.fLifeRemainingSeconds; // don't accumulate m_fLifeRemainingSeconds = other.m_fLifeRemainingSeconds; // don't accumulate
const float fOtherFirstSecond = other.fFirstSecond + fLastSecond; const float fOtherFirstSecond = other.m_fFirstSecond + m_fLastSecond;
const float fOtherLastSecond = other.fLastSecond + fLastSecond; const float fOtherLastSecond = other.m_fLastSecond + m_fLastSecond;
fLastSecond = fOtherLastSecond; m_fLastSecond = fOtherLastSecond;
map<float,float>::const_iterator it; map<float,float>::const_iterator it;
for( it = other.fLifeRecord.begin(); it != other.fLifeRecord.end(); ++it ) for( it = other.m_fLifeRecord.begin(); it != other.m_fLifeRecord.end(); ++it )
{ {
const float pos = it->first; const float pos = it->first;
const float life = it->second; const float life = it->second;
fLifeRecord[fOtherFirstSecond+pos] = life; m_fLifeRecord[fOtherFirstSecond+pos] = life;
} }
for( unsigned i=0; i<other.ComboList.size(); ++i ) for( unsigned i=0; i<other.m_ComboList.size(); ++i )
{ {
const Combo_t &combo = other.ComboList[i]; const Combo_t &combo = other.m_ComboList[i];
Combo_t newcombo(combo); Combo_t newcombo(combo);
newcombo.fStartSecond += fOtherFirstSecond; newcombo.m_fStartSecond += fOtherFirstSecond;
ComboList.push_back( newcombo ); m_ComboList.push_back( newcombo );
} }
/* Merge identical combos. This normally only happens in course mode, when a combo /* Merge identical combos. This normally only happens in course mode, when a combo
* continues between songs. */ * continues between songs. */
for( unsigned i=1; i<ComboList.size(); ++i ) for( unsigned i=1; i<m_ComboList.size(); ++i )
{ {
Combo_t &prevcombo = ComboList[i-1]; Combo_t &prevcombo = m_ComboList[i-1];
Combo_t &combo = ComboList[i]; Combo_t &combo = m_ComboList[i];
const float PrevComboEnd = prevcombo.fStartSecond + prevcombo.fSizeSeconds; const float PrevComboEnd = prevcombo.m_fStartSecond + prevcombo.m_fSizeSeconds;
const float ThisComboStart = combo.fStartSecond; const float ThisComboStart = combo.m_fStartSecond;
if( fabsf(PrevComboEnd - ThisComboStart) > 0.001 ) if( fabsf(PrevComboEnd - ThisComboStart) > 0.001 )
continue; continue;
/* These are really the same combo. */ /* These are really the same combo. */
prevcombo.fSizeSeconds += combo.fSizeSeconds; prevcombo.m_fSizeSeconds += combo.m_fSizeSeconds;
prevcombo.cnt += combo.cnt; prevcombo.m_cnt += combo.m_cnt;
ComboList.erase( ComboList.begin()+i ); m_ComboList.erase( m_ComboList.begin()+i );
--i; --i;
} }
} }
@@ -139,7 +148,7 @@ Grade GetGradeFromPercent( float fPercent, bool bMerciful )
Grade PlayerStageStats::GetGrade() const Grade PlayerStageStats::GetGrade() const
{ {
if( bFailed ) if( m_bFailed )
return Grade_Failed; return Grade_Failed;
/* XXX: This entire calculation should be in ScoreKeeper, but final evaluation /* XXX: This entire calculation should be in ScoreKeeper, but final evaluation
@@ -147,34 +156,34 @@ Grade PlayerStageStats::GetGrade() const
float fActual = 0; float fActual = 0;
bool bIsBeginner = false; bool bIsBeginner = false;
if( vpPlayedSteps.size() && !GAMESTATE->IsCourseMode() ) if( m_vpPlayedSteps.size() && !GAMESTATE->IsCourseMode() )
bIsBeginner = vpPlayedSteps[0]->GetDifficulty() == DIFFICULTY_BEGINNER; bIsBeginner = m_vpPlayedSteps[0]->GetDifficulty() == DIFFICULTY_BEGINNER;
FOREACH_TapNoteScore( tns ) FOREACH_TapNoteScore( tns )
{ {
int iTapScoreValue = ScoreKeeperNormal::TapNoteScoreToGradePoints( tns, bIsBeginner ); int iTapScoreValue = ScoreKeeperNormal::TapNoteScoreToGradePoints( tns, bIsBeginner );
fActual += iTapNoteScores[tns] * iTapScoreValue; fActual += m_iTapNoteScores[tns] * iTapScoreValue;
LOG->Trace( "GetGrade actual: %i * %i", iTapNoteScores[tns], iTapScoreValue ); LOG->Trace( "GetGrade actual: %i * %i", m_iTapNoteScores[tns], iTapScoreValue );
} }
FOREACH_HoldNoteScore( hns ) FOREACH_HoldNoteScore( hns )
{ {
int iHoldScoreValue = ScoreKeeperNormal::HoldNoteScoreToGradePoints( hns, bIsBeginner ); int iHoldScoreValue = ScoreKeeperNormal::HoldNoteScoreToGradePoints( hns, bIsBeginner );
fActual += iHoldNoteScores[hns] * iHoldScoreValue; fActual += m_iHoldNoteScores[hns] * iHoldScoreValue;
LOG->Trace( "GetGrade actual: %i * %i", iHoldNoteScores[hns], iHoldScoreValue ); LOG->Trace( "GetGrade actual: %i * %i", m_iHoldNoteScores[hns], iHoldScoreValue );
} }
LOG->Trace( "GetGrade: fActual: %f, fPossible: %d", fActual, iPossibleGradePoints ); LOG->Trace( "GetGrade: fActual: %f, fPossible: %d", fActual, m_iPossibleGradePoints );
float fPercent = (iPossibleGradePoints == 0) ? 0 : fActual / iPossibleGradePoints; float fPercent = (m_iPossibleGradePoints == 0) ? 0 : fActual / m_iPossibleGradePoints;
bool bMerciful = bool bMerciful =
vpPlayedSteps.size() > 0 && m_vpPlayedSteps.size() > 0 &&
GAMESTATE->m_PlayMode == PLAY_MODE_REGULAR && GAMESTATE->m_PlayMode == PLAY_MODE_REGULAR &&
PREFSMAN->m_bMercifulBeginner; PREFSMAN->m_bMercifulBeginner;
FOREACH_CONST( Steps*, vpPlayedSteps, s ) FOREACH_CONST( Steps*, m_vpPlayedSteps, s )
{ {
if( (*s)->GetDifficulty() != DIFFICULTY_BEGINNER ) if( (*s)->GetDifficulty() != DIFFICULTY_BEGINNER )
bMerciful = false; bMerciful = false;
@@ -185,23 +194,23 @@ Grade PlayerStageStats::GetGrade() const
LOG->Trace( "GetGrade: Grade: %s, %i", GradeToString(grade).c_str(), GRADE_TIER02_IS_ALL_W2S ); LOG->Trace( "GetGrade: Grade: %s, %i", GradeToString(grade).c_str(), GRADE_TIER02_IS_ALL_W2S );
if( GRADE_TIER02_IS_ALL_W2S ) if( GRADE_TIER02_IS_ALL_W2S )
{ {
if( iTapNoteScores[TNS_W1] > 0 && if( m_iTapNoteScores[TNS_W1] > 0 &&
iTapNoteScores[TNS_W2] == 0 && m_iTapNoteScores[TNS_W2] == 0 &&
iTapNoteScores[TNS_W3] == 0 && m_iTapNoteScores[TNS_W3] == 0 &&
iTapNoteScores[TNS_W4] == 0 && m_iTapNoteScores[TNS_W4] == 0 &&
iTapNoteScores[TNS_W5] == 0 && m_iTapNoteScores[TNS_W5] == 0 &&
iTapNoteScores[TNS_Miss] == 0 && m_iTapNoteScores[TNS_Miss] == 0 &&
iTapNoteScores[TNS_HitMine] == 0 && m_iTapNoteScores[TNS_HitMine] == 0 &&
iHoldNoteScores[HNS_LetGo] == 0 ) m_iHoldNoteScores[HNS_LetGo] == 0 )
return Grade_Tier01; return Grade_Tier01;
if( iTapNoteScores[TNS_W2] > 0 && if( m_iTapNoteScores[TNS_W2] > 0 &&
iTapNoteScores[TNS_W3] == 0 && m_iTapNoteScores[TNS_W3] == 0 &&
iTapNoteScores[TNS_W4] == 0 && m_iTapNoteScores[TNS_W4] == 0 &&
iTapNoteScores[TNS_W5] == 0 && m_iTapNoteScores[TNS_W5] == 0 &&
iTapNoteScores[TNS_Miss] == 0 && m_iTapNoteScores[TNS_Miss] == 0 &&
iTapNoteScores[TNS_HitMine] == 0 && m_iTapNoteScores[TNS_HitMine] == 0 &&
iHoldNoteScores[HNS_LetGo] == 0 ) m_iHoldNoteScores[HNS_LetGo] == 0 )
return Grade_Tier02; return Grade_Tier02;
return max( grade, Grade_Tier03 ); return max( grade, Grade_Tier03 );
@@ -212,29 +221,29 @@ Grade PlayerStageStats::GetGrade() const
float PlayerStageStats::GetPercentDancePoints() const float PlayerStageStats::GetPercentDancePoints() const
{ {
if( iPossibleDancePoints == 0 ) if( m_iPossibleDancePoints == 0 )
return 0; // div/0 return 0; // div/0
if( iActualDancePoints == iPossibleDancePoints ) if( m_iActualDancePoints == m_iPossibleDancePoints )
return 1; // correct for rounding error return 1; // correct for rounding error
/* This can happen in battle, with transform attacks. */ /* This can happen in battle, with transform attacks. */
//ASSERT_M( iActualDancePoints <= iPossibleDancePoints, ssprintf("%i/%i", iActualDancePoints, iPossibleDancePoints) ); //ASSERT_M( iActualDancePoints <= iPossibleDancePoints, ssprintf("%i/%i", iActualDancePoints, iPossibleDancePoints) );
float fPercentDancePoints = iActualDancePoints / (float)iPossibleDancePoints; float fPercentDancePoints = m_iActualDancePoints / (float)m_iPossibleDancePoints;
return fPercentDancePoints; return fPercentDancePoints;
} }
float PlayerStageStats::GetCurMaxPercentDancePoints() const float PlayerStageStats::GetCurMaxPercentDancePoints() const
{ {
if ( iPossibleDancePoints == 0 ) if ( m_iPossibleDancePoints == 0 )
return 0; // div/0 return 0; // div/0
if ( iCurPossibleDancePoints == iPossibleDancePoints ) if ( m_iCurPossibleDancePoints == m_iPossibleDancePoints )
return 1; // correct for rounding error return 1; // correct for rounding error
float fCurMaxPercentDancePoints = iCurPossibleDancePoints / (float)iPossibleDancePoints; float fCurMaxPercentDancePoints = m_iCurPossibleDancePoints / (float)m_iPossibleDancePoints;
return fCurMaxPercentDancePoints; return fCurMaxPercentDancePoints;
} }
@@ -253,7 +262,7 @@ int PlayerStageStats::GetLessonScoreActual() const
case TNS_W3: case TNS_W3:
case TNS_W2: case TNS_W2:
case TNS_W1: case TNS_W1:
iScore += iTapNoteScores[tns]; iScore += m_iTapNoteScores[tns];
break; break;
} }
} }
@@ -263,7 +272,7 @@ int PlayerStageStats::GetLessonScoreActual() const
switch( hns ) switch( hns )
{ {
case HNS_Held: case HNS_Held:
iScore += iHoldNoteScores[hns]; iScore += m_iHoldNoteScores[hns];
break; break;
} }
} }
@@ -275,7 +284,7 @@ int PlayerStageStats::GetLessonScoreNeeded() const
{ {
float fScore = 0; float fScore = 0;
FOREACH_CONST( Steps*, vpPossibleSteps, steps ) FOREACH_CONST( Steps*, m_vpPossibleSteps, steps )
fScore += (*steps)->GetRadarValues( PLAYER_1 ).m_Values.v.fNumTapsAndHolds; fScore += (*steps)->GetRadarValues( PLAYER_1 ).m_Values.v.fNumTapsAndHolds;
return lrintf( fScore * LESSON_PASS_THRESHOLD ); return lrintf( fScore * LESSON_PASS_THRESHOLD );
@@ -283,18 +292,18 @@ int PlayerStageStats::GetLessonScoreNeeded() const
void PlayerStageStats::ResetScoreForLesson() void PlayerStageStats::ResetScoreForLesson()
{ {
iCurPossibleDancePoints = 0; m_iCurPossibleDancePoints = 0;
iActualDancePoints = 0; m_iActualDancePoints = 0;
FOREACH_TapNoteScore( tns ) FOREACH_TapNoteScore( tns )
iTapNoteScores[tns] = 0; m_iTapNoteScores[tns] = 0;
FOREACH_HoldNoteScore( hns ) FOREACH_HoldNoteScore( hns )
iHoldNoteScores[hns] = 0; m_iHoldNoteScores[hns] = 0;
iCurCombo = 0; m_iCurCombo = 0;
iMaxCombo = 0; m_iMaxCombo = 0;
iCurMissCombo = 0; m_iCurMissCombo = 0;
iScore = 0; m_iScore = 0;
iCurMaxScore = 0; m_iCurMaxScore = 0;
iMaxScore = 0; m_iMaxScore = 0;
} }
void PlayerStageStats::SetLifeRecordAt( float fLife, float fStepsSecond ) void PlayerStageStats::SetLifeRecordAt( float fLife, float fStepsSecond )
@@ -306,12 +315,12 @@ void PlayerStageStats::SetLifeRecordAt( float fLife, float fStepsSecond )
if( fStepsSecond < 0 ) if( fStepsSecond < 0 )
return; return;
fFirstSecond = min( fStepsSecond, fFirstSecond ); m_fFirstSecond = min( fStepsSecond, m_fFirstSecond );
fLastSecond = max( fStepsSecond, fLastSecond ); m_fLastSecond = max( fStepsSecond, m_fLastSecond );
//LOG->Trace( "fLastSecond = %f", fLastSecond ); //LOG->Trace( "fLastSecond = %f", m_fLastSecond );
// fSecond will always be greater than any value already in the map. // fSecond will always be greater than any value already in the map.
fLifeRecord[fStepsSecond] = fLife; m_fLifeRecord[fStepsSecond] = fLife;
// //
// Memory optimization: // Memory optimization:
@@ -320,33 +329,33 @@ void PlayerStageStats::SetLifeRecordAt( float fLife, float fStepsSecond )
// records in the map since we're only inserting at the end, and we know all // records in the map since we're only inserting at the end, and we know all
// earlier redundant records have already been removed. // earlier redundant records have already been removed.
// //
map<float,float>::iterator C = fLifeRecord.end(); map<float,float>::iterator C = m_fLifeRecord.end();
--C; --C;
if( C == fLifeRecord.begin() ) // no earlier records left if( C == m_fLifeRecord.begin() ) // no earlier records left
return; return;
map<float,float>::iterator B = C; map<float,float>::iterator B = C;
--B; --B;
if( B == fLifeRecord.begin() ) // no earlier records left if( B == m_fLifeRecord.begin() ) // no earlier records left
return; return;
map<float,float>::iterator A = B; map<float,float>::iterator A = B;
--A; --A;
if( A->second == B->second && B->second == C->second ) if( A->second == B->second && B->second == C->second )
fLifeRecord.erase(B); m_fLifeRecord.erase(B);
} }
float PlayerStageStats::GetLifeRecordAt( float fStepsSecond ) const float PlayerStageStats::GetLifeRecordAt( float fStepsSecond ) const
{ {
if( fLifeRecord.empty() ) if( m_fLifeRecord.empty() )
return 0; return 0;
/* Find the first element whose key is greater than k. */ /* Find the first element whose key is greater than k. */
map<float,float>::const_iterator it = fLifeRecord.upper_bound( fStepsSecond ); map<float,float>::const_iterator it = m_fLifeRecord.upper_bound( fStepsSecond );
/* Find the last element whose key is less than or equal to k. */ /* Find the last element whose key is less than or equal to k. */
if( it != fLifeRecord.begin() ) if( it != m_fLifeRecord.begin() )
--it; --it;
return it->second; return it->second;
@@ -355,18 +364,18 @@ float PlayerStageStats::GetLifeRecordAt( float fStepsSecond ) const
float PlayerStageStats::GetLifeRecordLerpAt( float fStepsSecond ) const float PlayerStageStats::GetLifeRecordLerpAt( float fStepsSecond ) const
{ {
if( fLifeRecord.empty() ) if( m_fLifeRecord.empty() )
return 0; return 0;
/* Find the first element whose key is greater than k. */ /* Find the first element whose key is greater than k. */
map<float,float>::const_iterator later = fLifeRecord.upper_bound( fStepsSecond ); map<float,float>::const_iterator later = m_fLifeRecord.upper_bound( fStepsSecond );
/* Find the last element whose key is less than or equal to k. */ /* Find the last element whose key is less than or equal to k. */
map<float,float>::const_iterator earlier = later; map<float,float>::const_iterator earlier = later;
if( earlier != fLifeRecord.begin() ) if( earlier != m_fLifeRecord.begin() )
--earlier; --earlier;
if( later == fLifeRecord.end() ) if( later == m_fLifeRecord.end() )
return earlier->second; return earlier->second;
if( earlier->first == later->first ) // two samples from the same time. Don't divide by zero in SCALE if( earlier->first == later->first ) // two samples from the same time. Don't divide by zero in SCALE
@@ -399,21 +408,21 @@ void PlayerStageStats::UpdateComboList( float fSecond, bool bRollover )
if( !bRollover ) if( !bRollover )
{ {
fFirstSecond = min( fSecond, fFirstSecond ); m_fFirstSecond = min( fSecond, m_fFirstSecond );
fLastSecond = max( fSecond, fLastSecond ); m_fLastSecond = max( fSecond, m_fLastSecond );
//LOG->Trace( "fLastSecond = %f", fLastSecond ); //LOG->Trace( "fLastSecond = %f", fLastSecond );
} }
int cnt = iCurCombo; int cnt = m_iCurCombo;
if( !cnt ) if( !cnt )
return; /* no combo */ return; /* no combo */
if( ComboList.size() == 0 || ComboList.back().cnt >= cnt ) if( m_ComboList.size() == 0 || m_ComboList.back().m_cnt >= cnt )
{ {
/* If the previous combo (if any) starts on -9999, then we rolled over some /* If the previous combo (if any) starts on -9999, then we rolled over some
* combo, but missed the first step. Remove it. */ * combo, but missed the first step. Remove it. */
if( ComboList.size() && ComboList.back().fStartSecond == -9999 ) if( m_ComboList.size() && m_ComboList.back().m_fStartSecond == -9999 )
ComboList.erase( ComboList.begin()+ComboList.size()-1, ComboList.end() ); m_ComboList.erase( m_ComboList.begin()+m_ComboList.size()-1, m_ComboList.end() );
/* This is a new combo. */ /* This is a new combo. */
Combo_t NewCombo; Combo_t NewCombo;
@@ -422,46 +431,46 @@ void PlayerStageStats::UpdateComboList( float fSecond, bool bRollover )
* a placeholder in and set it on the next call. (Otherwise, start will be less * a placeholder in and set it on the next call. (Otherwise, start will be less
* than fFirstPos.) */ * than fFirstPos.) */
if( bRollover ) if( bRollover )
NewCombo.fStartSecond = -9999; NewCombo.m_fStartSecond = -9999;
else else
NewCombo.fStartSecond = fSecond; NewCombo.m_fStartSecond = fSecond;
ComboList.push_back( NewCombo ); m_ComboList.push_back( NewCombo );
} }
Combo_t &combo = ComboList.back(); Combo_t &combo = m_ComboList.back();
if( !bRollover && combo.fStartSecond == -9999 ) if( !bRollover && combo.m_fStartSecond == -9999 )
combo.fStartSecond = 0; combo.m_fStartSecond = 0;
combo.fSizeSeconds = fSecond - combo.fStartSecond; combo.m_fSizeSeconds = fSecond - combo.m_fStartSecond;
combo.cnt = cnt; combo.m_cnt = cnt;
if( bRollover ) if( bRollover )
combo.rollover = cnt; combo.m_rollover = cnt;
} }
/* This returns the largest combo contained within the song, as if /* This returns the largest combo contained within the song, as if
* m_bComboContinuesBetweenSongs is turned off. */ * m_bComboContinuesBetweenSongs is turned off. */
PlayerStageStats::Combo_t PlayerStageStats::GetMaxCombo() const PlayerStageStats::Combo_t PlayerStageStats::GetMaxCombo() const
{ {
if( ComboList.size() == 0 ) if( m_ComboList.size() == 0 )
return Combo_t(); return Combo_t();
int m = 0; int m = 0;
for( unsigned i = 1; i < ComboList.size(); ++i ) for( unsigned i = 1; i < m_ComboList.size(); ++i )
{ {
if( ComboList[i].cnt > ComboList[m].cnt ) if( m_ComboList[i].m_cnt > m_ComboList[m].m_cnt )
m = i; m = i;
} }
return ComboList[m]; return m_ComboList[m];
} }
int PlayerStageStats::GetComboAtStartOfStage() const int PlayerStageStats::GetComboAtStartOfStage() const
{ {
if( ComboList.empty() ) if( m_ComboList.empty() )
return 0; return 0;
else else
return ComboList[0].rollover; return m_ComboList[0].m_rollover;
} }
bool PlayerStageStats::FullComboOfScore( TapNoteScore tnsAllGreaterOrEqual ) const bool PlayerStageStats::FullComboOfScore( TapNoteScore tnsAllGreaterOrEqual ) const
@@ -470,20 +479,20 @@ bool PlayerStageStats::FullComboOfScore( TapNoteScore tnsAllGreaterOrEqual ) con
ASSERT( tnsAllGreaterOrEqual <= TNS_W1 ); ASSERT( tnsAllGreaterOrEqual <= TNS_W1 );
// If missed any holds, then it's not a full combo // If missed any holds, then it's not a full combo
if( iHoldNoteScores[HNS_LetGo] > 0 ) if( m_iHoldNoteScores[HNS_LetGo] > 0 )
return false; return false;
// If has any of the judgments below, then not a full combo // If has any of the judgments below, then not a full combo
for( int i=TNS_Miss; i<tnsAllGreaterOrEqual; i++ ) for( int i=TNS_Miss; i<tnsAllGreaterOrEqual; i++ )
{ {
if( iTapNoteScores[i] > 0 ) if( m_iTapNoteScores[i] > 0 )
return false; return false;
} }
// If has at least one of the judgments equal to or above, then is a full combo. // If has at least one of the judgments equal to or above, then is a full combo.
for( int i=tnsAllGreaterOrEqual; i<NUM_TapNoteScore; i++ ) for( int i=tnsAllGreaterOrEqual; i<NUM_TapNoteScore; i++ )
{ {
if( iTapNoteScores[i] > 0 ) if( m_iTapNoteScores[i] > 0 )
return true; return true;
} }
@@ -493,13 +502,13 @@ bool PlayerStageStats::FullComboOfScore( TapNoteScore tnsAllGreaterOrEqual ) con
bool PlayerStageStats::SingleDigitsOfScore( TapNoteScore tnsAllGreaterOrEqual ) const bool PlayerStageStats::SingleDigitsOfScore( TapNoteScore tnsAllGreaterOrEqual ) const
{ {
return FullComboOfScore( tnsAllGreaterOrEqual ) && return FullComboOfScore( tnsAllGreaterOrEqual ) &&
iTapNoteScores[tnsAllGreaterOrEqual] < 10; m_iTapNoteScores[tnsAllGreaterOrEqual] < 10;
} }
bool PlayerStageStats::OneOfScore( TapNoteScore tnsAllGreaterOrEqual ) const bool PlayerStageStats::OneOfScore( TapNoteScore tnsAllGreaterOrEqual ) const
{ {
return FullComboOfScore( tnsAllGreaterOrEqual ) && return FullComboOfScore( tnsAllGreaterOrEqual ) &&
iTapNoteScores[tnsAllGreaterOrEqual] == 1; m_iTapNoteScores[tnsAllGreaterOrEqual] == 1;
} }
int PlayerStageStats::GetTotalTaps() const int PlayerStageStats::GetTotalTaps() const
@@ -507,7 +516,7 @@ int PlayerStageStats::GetTotalTaps() const
int iTotalTaps = 0; int iTotalTaps = 0;
for( int i=TNS_Miss; i<NUM_TapNoteScore; i++ ) for( int i=TNS_Miss; i<NUM_TapNoteScore; i++ )
{ {
iTotalTaps += iTapNoteScores[i]; iTotalTaps += m_iTapNoteScores[i];
} }
return iTotalTaps; return iTotalTaps;
} }
@@ -517,9 +526,9 @@ float PlayerStageStats::GetPercentageOfTaps( TapNoteScore tns ) const
int iTotalTaps = 0; int iTotalTaps = 0;
for( int i=TNS_Miss; i<NUM_TapNoteScore; i++ ) for( int i=TNS_Miss; i<NUM_TapNoteScore; i++ )
{ {
iTotalTaps += iTapNoteScores[i]; iTotalTaps += m_iTapNoteScores[i];
} }
return iTapNoteScores[tns] / (float)iTotalTaps; return m_iTapNoteScores[tns] / (float)iTotalTaps;
} }
void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutoplay ) void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutoplay )
@@ -577,7 +586,7 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
// DO give peak combo awards if using easy mods // DO give peak combo awards if using easy mods
int iComboAtStartOfStage = GetComboAtStartOfStage(); int iComboAtStartOfStage = GetComboAtStartOfStage();
int iPeakCombo = GetMaxCombo().cnt; int iPeakCombo = GetMaxCombo().m_cnt;
FOREACH_PeakComboAward( pca ) FOREACH_PeakComboAward( pca )
{ {
@@ -607,11 +616,11 @@ LuaFunction( GetGradeFromPercent, GetGradeFromPercent( FArg(1), false ) )
class LunaPlayerStageStats: public Luna<PlayerStageStats> class LunaPlayerStageStats: public Luna<PlayerStageStats>
{ {
public: public:
DEFINE_METHOD( GetCaloriesBurned, fCaloriesBurned ) DEFINE_METHOD( GetCaloriesBurned, m_fCaloriesBurned )
DEFINE_METHOD( GetLifeRemainingSeconds, fLifeRemainingSeconds ) DEFINE_METHOD( GetLifeRemainingSeconds, m_fLifeRemainingSeconds )
DEFINE_METHOD( GetSurvivalSeconds, GetSurvivalSeconds() ) DEFINE_METHOD( GetSurvivalSeconds, GetSurvivalSeconds() )
DEFINE_METHOD( FullCombo, FullCombo() ) DEFINE_METHOD( FullCombo, FullCombo() )
DEFINE_METHOD( MaxCombo, GetMaxCombo().cnt ) DEFINE_METHOD( MaxCombo, GetMaxCombo().m_cnt )
DEFINE_METHOD( GetGrade, GetGrade() ) DEFINE_METHOD( GetGrade, GetGrade() )
DEFINE_METHOD( GetLessonScoreActual, GetLessonScoreActual() ) DEFINE_METHOD( GetLessonScoreActual, GetLessonScoreActual() )
DEFINE_METHOD( GetLessonScoreNeeded, GetLessonScoreNeeded() ) DEFINE_METHOD( GetLessonScoreNeeded, GetLessonScoreNeeded() )
+36 -36
View File
@@ -26,42 +26,42 @@ public:
int GetLessonScoreNeeded() const; int GetLessonScoreNeeded() const;
void ResetScoreForLesson(); void ResetScoreForLesson();
vector<Steps*> vpPlayedSteps; vector<Steps*> m_vpPlayedSteps;
vector<Steps*> vpPossibleSteps; vector<Steps*> m_vpPossibleSteps;
float fAliveSeconds; // how far into the music did they last before failing? Updated by Gameplay, scaled by music rate. float m_fAliveSeconds; // how far into the music did they last before failing? Updated by Gameplay, scaled by music rate.
/* Set if the player actually failed at any point during the song. This is always /* Set if the player actually failed at any point during the song. This is always
* false in FAIL_OFF. If recovery is enabled and two players are playing, * false in FAIL_OFF. If recovery is enabled and two players are playing,
* this is only set if both players were failing at the same time. */ * this is only set if both players were failing at the same time. */
bool bFailed; bool m_bFailed;
int iPossibleDancePoints; int m_iPossibleDancePoints;
int iCurPossibleDancePoints; int m_iCurPossibleDancePoints;
int iActualDancePoints; int m_iActualDancePoints;
int iPossibleGradePoints; int m_iPossibleGradePoints;
int iTapNoteScores[NUM_TapNoteScore]; int m_iTapNoteScores[NUM_TapNoteScore];
int iHoldNoteScores[NUM_HoldNoteScore]; int m_iHoldNoteScores[NUM_HoldNoteScore];
int iCurCombo; int m_iCurCombo;
int iMaxCombo; int m_iMaxCombo;
int iCurMissCombo; int m_iCurMissCombo;
int iScore; int m_iScore;
int iCurMaxScore; int m_iCurMaxScore;
int iMaxScore; int m_iMaxScore;
int iBonus; // bonus to be added on screeneval int m_iBonus; // bonus to be added on screeneval
RadarValues radarPossible; // filled in by ScreenGameplay on start of notes RadarValues m_radarPossible; // filled in by ScreenGameplay on start of notes
RadarValues radarActual; RadarValues m_radarActual;
/* The number of songs played and passed, respectively. */ /* The number of songs played and passed, respectively. */
int iSongsPassed; int m_iSongsPassed;
int iSongsPlayed; int m_iSongsPlayed;
float fLifeRemainingSeconds; // used in survival float m_fLifeRemainingSeconds; // used in survival
// workout // workout
float fCaloriesBurned; float m_fCaloriesBurned;
TapNoteScore tnsLast; TapNoteScore m_tnsLast;
HoldNoteScore hnsLast; HoldNoteScore m_hnsLast;
map<float,float> fLifeRecord; map<float,float> m_fLifeRecord;
void SetLifeRecordAt( float fLife, float fStepsSecond ); void SetLifeRecordAt( float fLife, float fStepsSecond );
void GetLifeRecord( float *fLifeOut, int iNumSamples, float fStepsEndSecond ) const; void GetLifeRecord( float *fLifeOut, int iNumSamples, float fStepsEndSecond ) const;
float GetLifeRecordAt( float fStepsSecond ) const; float GetLifeRecordAt( float fStepsSecond ) const;
@@ -71,24 +71,24 @@ public:
{ {
/* Start and size of this combo, in the same scale as the combo list mapping and /* Start and size of this combo, in the same scale as the combo list mapping and
* the life record. */ * the life record. */
float fStartSecond, fSizeSeconds; float m_fStartSecond, m_fSizeSeconds;
/* Combo size, in steps. */ /* Combo size, in steps. */
int cnt; int m_cnt;
/* Size of the combo that didn't come from this stage (rollover from the last song). /* Size of the combo that didn't come from this stage (rollover from the last song).
* (This is a subset of cnt.) */ * (This is a subset of cnt.) */
int rollover; int m_rollover;
/* Get the size of the combo that came from this song. */ /* Get the size of the combo that came from this song. */
int GetStageCnt() const { return cnt - rollover; } int GetStageCnt() const { return m_cnt - m_rollover; }
Combo_t(): fStartSecond(0), fSizeSeconds(0), cnt(0), rollover(0) { } Combo_t(): m_fStartSecond(0), m_fSizeSeconds(0), m_cnt(0), m_rollover(0) { }
bool IsZero() const { return fStartSecond < 0; } bool IsZero() const { return m_fStartSecond < 0; }
}; };
vector<Combo_t> ComboList; vector<Combo_t> m_ComboList;
float fFirstSecond; float m_fFirstSecond;
float fLastSecond; float m_fLastSecond;
int GetComboAtStartOfStage() const; int GetComboAtStartOfStage() const;
bool FullComboOfScore( TapNoteScore tnsAllGreaterOrEqual ) const; bool FullComboOfScore( TapNoteScore tnsAllGreaterOrEqual ) const;
@@ -100,7 +100,7 @@ public:
void UpdateComboList( float fSecond, bool rollover ); void UpdateComboList( float fSecond, bool rollover );
Combo_t GetMaxCombo() const; Combo_t GetMaxCombo() const;
float GetSurvivalSeconds() const { return fAliveSeconds + fLifeRemainingSeconds; } float GetSurvivalSeconds() const { return m_fAliveSeconds + m_fLifeRemainingSeconds; }
// Final results: // Final results:
void CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutoplay ); void CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutoplay );
+2 -2
View File
@@ -53,8 +53,8 @@ void ScoreDisplayAliveTime::UpdateNumber()
ASSERT( m_PlayerNumber != PLAYER_INVALID ); ASSERT( m_PlayerNumber != PLAYER_INVALID );
if( GAMESTATE->IsPlayerEnabled(m_PlayerNumber) ) if( GAMESTATE->IsPlayerEnabled(m_PlayerNumber) )
fSecsIntoPlay = fSecsIntoPlay =
STATSMAN->GetAccumPlayedStageStats().m_player[m_PlayerNumber].fAliveSeconds + STATSMAN->GetAccumPlayedStageStats().m_player[m_PlayerNumber].m_fAliveSeconds +
STATSMAN->m_CurStageStats.m_player[m_PlayerNumber].fAliveSeconds; STATSMAN->m_CurStageStats.m_player[m_PlayerNumber].m_fAliveSeconds;
SetText( SecondsToMMSSMsMs(fSecsIntoPlay) ); SetText( SecondsToMMSSMsMs(fSecsIntoPlay) );
} }
+2 -2
View File
@@ -62,8 +62,8 @@ void ScoreDisplayCalories::PlayCommand( const RString &sCommandName )
void ScoreDisplayCalories::UpdateNumber() void ScoreDisplayCalories::UpdateNumber()
{ {
float fCals = float fCals =
STATSMAN->GetAccumPlayedStageStats().m_player[m_PlayerNumber].fCaloriesBurned + STATSMAN->GetAccumPlayedStageStats().m_player[m_PlayerNumber].m_fCaloriesBurned +
STATSMAN->m_CurStageStats.m_player[m_PlayerNumber].fCaloriesBurned; STATSMAN->m_CurStageStats.m_player[m_PlayerNumber].m_fCaloriesBurned;
SetTargetNumber( fCals ); SetTargetNumber( fCals );
} }
+4 -4
View File
@@ -65,7 +65,7 @@ void ScoreDisplayLifeTime::Update( float fDelta )
{ {
ScoreDisplay::Update( fDelta ); ScoreDisplay::Update( fDelta );
float fSecs = m_pPlayerStageStats->fLifeRemainingSeconds; float fSecs = m_pPlayerStageStats->m_fLifeRemainingSeconds;
RString s = SecondsToMSSMsMs(fSecs); RString s = SecondsToMSSMsMs(fSecs);
m_textTimeRemaining.SetText( s ); m_textTimeRemaining.SetText( s );
@@ -73,7 +73,7 @@ void ScoreDisplayLifeTime::Update( float fDelta )
void ScoreDisplayLifeTime::OnLoadSong() void ScoreDisplayLifeTime::OnLoadSong()
{ {
if( STATSMAN->m_CurStageStats.m_player[m_pPlayerState->m_PlayerNumber].bFailed ) if( STATSMAN->m_CurStageStats.m_player[m_pPlayerState->m_PlayerNumber].m_bFailed )
return; return;
Course* pCourse = GAMESTATE->m_pCurCourse; Course* pCourse = GAMESTATE->m_pCurCourse;
@@ -85,7 +85,7 @@ void ScoreDisplayLifeTime::OnLoadSong()
void ScoreDisplayLifeTime::OnJudgment( TapNoteScore tns ) void ScoreDisplayLifeTime::OnJudgment( TapNoteScore tns )
{ {
if( STATSMAN->m_CurStageStats.m_player[m_pPlayerState->m_PlayerNumber].bFailed ) if( STATSMAN->m_CurStageStats.m_player[m_pPlayerState->m_PlayerNumber].m_bFailed )
return; return;
float fMeterChange = 0; float fMeterChange = 0;
@@ -106,7 +106,7 @@ void ScoreDisplayLifeTime::OnJudgment( TapNoteScore tns )
void ScoreDisplayLifeTime::OnJudgment( HoldNoteScore hns, TapNoteScore tns ) void ScoreDisplayLifeTime::OnJudgment( HoldNoteScore hns, TapNoteScore tns )
{ {
if( STATSMAN->m_CurStageStats.m_player[m_pPlayerState->m_PlayerNumber].bFailed ) if( STATSMAN->m_CurStageStats.m_player[m_pPlayerState->m_PlayerNumber].m_bFailed )
return; return;
float fMeterChange = 0; float fMeterChange = 0;
+2 -2
View File
@@ -45,8 +45,8 @@ void ScoreDisplayNormal::SetScore( int iNewScore )
// score for subtracrive is MaxScore - score). // score for subtracrive is MaxScore - score).
int iMaxScore = STATSMAN->m_CurStageStats.m_player[pn].iMaxScore; int iMaxScore = STATSMAN->m_CurStageStats.m_player[pn].m_iMaxScore;
int iCurMaxScore = STATSMAN->m_CurStageStats.m_player[pn].iCurMaxScore; int iCurMaxScore = STATSMAN->m_CurStageStats.m_player[pn].m_iCurMaxScore;
switch( m_pPlayerState->m_PlayerOptions.GetCurrent().m_ScoreDisplay ) switch( m_pPlayerState->m_PlayerOptions.GetCurrent().m_ScoreDisplay )
{ {
+1 -1
View File
@@ -42,7 +42,7 @@ void ScoreDisplayOni::Update( float fDelta )
float fSecsIntoPlay = 0; float fSecsIntoPlay = 0;
if( GAMESTATE->IsPlayerEnabled(pn) ) if( GAMESTATE->IsPlayerEnabled(pn) )
fSecsIntoPlay = STATSMAN->m_CurStageStats.m_player[pn].fAliveSeconds; fSecsIntoPlay = STATSMAN->m_CurStageStats.m_player[pn].m_fAliveSeconds;
m_text.SetText( SecondsToMMSSMsMs(fSecsIntoPlay) ); m_text.SetText( SecondsToMMSSMsMs(fSecsIntoPlay) );
} }
+31 -31
View File
@@ -82,8 +82,8 @@ void ScoreKeeperNormal::Load(
iTotalPossibleGradePoints += this->GetPossibleGradePoints( rvPre, rvPost ); iTotalPossibleGradePoints += this->GetPossibleGradePoints( rvPre, rvPost );
} }
m_pPlayerStageStats->iPossibleDancePoints = iTotalPossibleDancePoints; m_pPlayerStageStats->m_iPossibleDancePoints = iTotalPossibleDancePoints;
m_pPlayerStageStats->iPossibleGradePoints = iTotalPossibleGradePoints; m_pPlayerStageStats->m_iPossibleGradePoints = iTotalPossibleGradePoints;
m_iScoreRemainder = 0; m_iScoreRemainder = 0;
m_iCurToastyCombo = 0; m_iCurToastyCombo = 0;
@@ -183,7 +183,7 @@ void ScoreKeeperNormal::OnNextSong( int iSongInCourseIndex, const Steps* pSteps,
m_iNumTapsAndHolds = pNoteData->GetNumRowsWithTapOrHoldHead() + pNoteData->GetNumHoldNotes(); m_iNumTapsAndHolds = pNoteData->GetNumRowsWithTapOrHoldHead() + pNoteData->GetNumHoldNotes();
m_iPointBonus = m_iMaxPossiblePoints; m_iPointBonus = m_iMaxPossiblePoints;
m_pPlayerStageStats->iMaxScore = m_iMaxScoreSoFar; m_pPlayerStageStats->m_iMaxScore = m_iMaxScoreSoFar;
/* MercifulBeginner shouldn't clamp weights in course mode, even if a beginner song /* MercifulBeginner shouldn't clamp weights in course mode, even if a beginner song
* is in a course, since that makes PlayerStageStats::GetGrade hard. */ * is in a course, since that makes PlayerStageStats::GetGrade hard. */
@@ -222,8 +222,8 @@ static int GetScore(int p, int Z, int S, int n)
void ScoreKeeperNormal::AddScore( TapNoteScore score ) void ScoreKeeperNormal::AddScore( TapNoteScore score )
{ {
int &iScore = m_pPlayerStageStats->iScore; int &iScore = m_pPlayerStageStats->m_iScore;
int &iCurMaxScore = m_pPlayerStageStats->iCurMaxScore; int &iCurMaxScore = m_pPlayerStageStats->m_iCurMaxScore;
/* /*
Regular scoring: Regular scoring:
@@ -281,7 +281,7 @@ void ScoreKeeperNormal::AddScore( TapNoteScore score )
const int Z = m_iMaxPossiblePoints/10; const int Z = m_iMaxPossiblePoints/10;
// Don't use a multiplier if the player has failed // Don't use a multiplier if the player has failed
if( m_pPlayerStageStats->bFailed ) if( m_pPlayerStageStats->m_bFailed )
{ {
iScore += p; iScore += p;
// make score evenly divisible by 5 // make score evenly divisible by 5
@@ -294,8 +294,8 @@ void ScoreKeeperNormal::AddScore( TapNoteScore score )
else else
{ {
iScore += GetScore(p, Z, sum, m_iTapNotesHit); iScore += GetScore(p, Z, sum, m_iTapNotesHit);
const int &iCurrentCombo = m_pPlayerStageStats->iCurCombo; const int &iCurrentCombo = m_pPlayerStageStats->m_iCurCombo;
m_pPlayerStageStats->iBonus += m_ComboBonusFactor[score] * iCurrentCombo; m_pPlayerStageStats->m_iBonus += m_ComboBonusFactor[score] * iCurrentCombo;
} }
/* Subtract the maximum this step could have been worth from the bonus. */ /* Subtract the maximum this step could have been worth from the bonus. */
@@ -305,7 +305,7 @@ void ScoreKeeperNormal::AddScore( TapNoteScore score )
if ( m_iTapNotesHit == m_iNumTapsAndHolds && score >= TNS_W2 ) if ( m_iTapNotesHit == m_iNumTapsAndHolds && score >= TNS_W2 )
{ {
if( !m_pPlayerStageStats->bFailed ) if( !m_pPlayerStageStats->m_bFailed )
iScore += m_iPointBonus; iScore += m_iPointBonus;
if ( m_bIsLastSongInCourse ) if ( m_bIsLastSongInCourse )
{ {
@@ -338,14 +338,14 @@ void ScoreKeeperNormal::HandleTapScore( const TapNote &tn )
TapNoteScore score = tn.result.tns; TapNoteScore score = tn.result.tns;
if( score == TNS_HitMine ) if( score == TNS_HitMine )
{ {
if( !m_pPlayerStageStats->bFailed ) if( !m_pPlayerStageStats->m_bFailed )
m_pPlayerStageStats->iActualDancePoints += TapNoteScoreToDancePoints( TNS_HitMine ); m_pPlayerStageStats->m_iActualDancePoints += TapNoteScoreToDancePoints( TNS_HitMine );
m_pPlayerStageStats->iTapNoteScores[TNS_HitMine] += 1; m_pPlayerStageStats->m_iTapNoteScores[TNS_HitMine] += 1;
} }
NSMAN->ReportScore( m_pPlayerState->m_PlayerNumber, score, NSMAN->ReportScore( m_pPlayerState->m_PlayerNumber, score,
m_pPlayerStageStats->iScore, m_pPlayerStageStats->m_iScore,
m_pPlayerStageStats->iCurCombo, m_pPlayerStageStats->m_iCurCombo,
tn.result.fTapNoteOffset ); tn.result.fTapNoteOffset );
} }
} }
@@ -363,14 +363,14 @@ void ScoreKeeperNormal::HandleTapRowScore( const NoteData &nd, int iRow, bool &b
return; return;
// Update dance points. // Update dance points.
if( !m_pPlayerStageStats->bFailed ) if( !m_pPlayerStageStats->m_bFailed )
m_pPlayerStageStats->iActualDancePoints += TapNoteScoreToDancePoints( scoreOfLastTap ); m_pPlayerStageStats->m_iActualDancePoints += TapNoteScoreToDancePoints( scoreOfLastTap );
// update judged row totals // update judged row totals
m_pPlayerStageStats->iTapNoteScores[scoreOfLastTap] += 1; m_pPlayerStageStats->m_iTapNoteScores[scoreOfLastTap] += 1;
// increment the current total possible dance score // increment the current total possible dance score
m_pPlayerStageStats->iCurPossibleDancePoints += TapNoteScoreToDancePoints( TNS_W1 ); m_pPlayerStageStats->m_iCurPossibleDancePoints += TapNoteScoreToDancePoints( TNS_W1 );
// //
// Regular combo // Regular combo
@@ -379,16 +379,16 @@ void ScoreKeeperNormal::HandleTapRowScore( const NoteData &nd, int iRow, bool &b
if( scoreOfLastTap >= m_MinScoreToMaintainCombo ) if( scoreOfLastTap >= m_MinScoreToMaintainCombo )
{ {
bMissComboStopped = true; bMissComboStopped = true;
m_pPlayerStageStats->iCurMissCombo = 0; m_pPlayerStageStats->m_iCurMissCombo = 0;
if( scoreOfLastTap >= m_MinScoreToContinueCombo ) if( scoreOfLastTap >= m_MinScoreToContinueCombo )
m_pPlayerStageStats->iCurCombo += iComboCountIfHit; m_pPlayerStageStats->m_iCurCombo += iComboCountIfHit;
} }
else if( scoreOfLastTap < m_MinScoreToMaintainCombo ) else if( scoreOfLastTap < m_MinScoreToMaintainCombo )
{ {
bComboStopped = true; bComboStopped = true;
m_pPlayerStageStats->iCurCombo = 0; m_pPlayerStageStats->m_iCurCombo = 0;
if( scoreOfLastTap == TNS_Miss ) if( scoreOfLastTap == TNS_Miss )
++m_pPlayerStageStats->iCurMissCombo; ++m_pPlayerStageStats->m_iCurMissCombo;
} }
AddScore( scoreOfLastTap ); // only score once per row AddScore( scoreOfLastTap ); // only score once per row
@@ -433,8 +433,8 @@ void ScoreKeeperNormal::HandleTapRowScore( const NoteData &nd, int iRow, bool &b
PlayerNumber pn = m_pPlayerState->m_PlayerNumber; PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
float offset = NoteDataWithScoring::LastTapNoteWithResult( nd, iRow, pn ).result.fTapNoteOffset; float offset = NoteDataWithScoring::LastTapNoteWithResult( nd, iRow, pn ).result.fTapNoteOffset;
NSMAN->ReportScore( pn, scoreOfLastTap, NSMAN->ReportScore( pn, scoreOfLastTap,
m_pPlayerStageStats->iScore, m_pPlayerStageStats->m_iScore,
m_pPlayerStageStats->iCurCombo, offset ); m_pPlayerStageStats->m_iCurCombo, offset );
} }
@@ -443,14 +443,14 @@ void ScoreKeeperNormal::HandleHoldScore( const TapNote &tn )
HoldNoteScore holdScore = tn.HoldResult.hns; HoldNoteScore holdScore = tn.HoldResult.hns;
// update dance points totals // update dance points totals
if( !m_pPlayerStageStats->bFailed ) if( !m_pPlayerStageStats->m_bFailed )
m_pPlayerStageStats->iActualDancePoints += HoldNoteScoreToDancePoints( holdScore ); m_pPlayerStageStats->m_iActualDancePoints += HoldNoteScoreToDancePoints( holdScore );
m_pPlayerStageStats->iCurPossibleDancePoints += HoldNoteScoreToDancePoints( HNS_Held ); m_pPlayerStageStats->m_iCurPossibleDancePoints += HoldNoteScoreToDancePoints( HNS_Held );
m_pPlayerStageStats->iHoldNoteScores[holdScore] ++; m_pPlayerStageStats->m_iHoldNoteScores[holdScore] ++;
// increment the current total possible dance score // increment the current total possible dance score
m_pPlayerStageStats->iCurPossibleDancePoints += HoldNoteScoreToDancePoints( HNS_Held ); m_pPlayerStageStats->m_iCurPossibleDancePoints += HoldNoteScoreToDancePoints( HNS_Held );
if( holdScore == HNS_Held ) if( holdScore == HNS_Held )
AddScore( TNS_W1 ); AddScore( TNS_W1 );
@@ -462,8 +462,8 @@ void ScoreKeeperNormal::HandleHoldScore( const TapNote &tn )
NSMAN->ReportScore( NSMAN->ReportScore(
pn, pn,
holdScore+TNS_W1, holdScore+TNS_W1,
m_pPlayerStageStats->iScore, m_pPlayerStageStats->m_iScore,
m_pPlayerStageStats->iCurCombo, m_pPlayerStageStats->m_iCurCombo,
tn.result.fTapNoteOffset ); tn.result.fTapNoteOffset );
} }
+16 -16
View File
@@ -37,8 +37,8 @@ ScreenEnding::ScreenEnding() : ScreenAttract( false/*dont reset GAMESTATE*/ )
GAMESTATE->m_pCurCourse.Set( SONGMAN->GetRandomCourse() ); GAMESTATE->m_pCurCourse.Set( SONGMAN->GetRandomCourse() );
GAMESTATE->m_pCurSteps[PLAYER_1].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] ); GAMESTATE->m_pCurSteps[PLAYER_1].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] );
GAMESTATE->m_pCurSteps[PLAYER_2].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] ); GAMESTATE->m_pCurSteps[PLAYER_2].Set( GAMESTATE->m_pCurSong->GetAllSteps()[0] );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] );
STATSMAN->m_CurStageStats.m_player[PLAYER_2].vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_2] ); STATSMAN->m_CurStageStats.m_player[PLAYER_2].m_vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_2] );
PO_GROUP_ASSIGN( GAMESTATE->m_pPlayerState[PLAYER_1]->m_PlayerOptions, ModsLevel_Stage, m_fScrollSpeed, 2.0f ); PO_GROUP_ASSIGN( GAMESTATE->m_pPlayerState[PLAYER_1]->m_PlayerOptions, ModsLevel_Stage, m_fScrollSpeed, 2.0f );
PO_GROUP_ASSIGN( GAMESTATE->m_pPlayerState[PLAYER_2]->m_PlayerOptions, ModsLevel_Stage, m_fScrollSpeed, 2.0f ); PO_GROUP_ASSIGN( GAMESTATE->m_pPlayerState[PLAYER_2]->m_PlayerOptions, ModsLevel_Stage, m_fScrollSpeed, 2.0f );
GAMESTATE->m_iCurrentStageIndex = 0; GAMESTATE->m_iCurrentStageIndex = 0;
@@ -52,25 +52,25 @@ ScreenEnding::ScreenEnding() : ScreenAttract( false/*dont reset GAMESTATE*/ )
STATSMAN->m_CurStageStats.m_player[PLAYER_2].SetLifeRecordAt( 1-fP1, f ); STATSMAN->m_CurStageStats.m_player[PLAYER_2].SetLifeRecordAt( 1-fP1, f );
} }
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iActualDancePoints = RandomInt( 3 ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_iActualDancePoints = RandomInt( 3 );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iPossibleDancePoints = 2; STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_iPossibleDancePoints = 2;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iActualDancePoints = RandomInt( 2 ); STATSMAN->m_CurStageStats.m_player[PLAYER_2].m_iActualDancePoints = RandomInt( 2 );
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iPossibleDancePoints = 1; STATSMAN->m_CurStageStats.m_player[PLAYER_2].m_iPossibleDancePoints = 1;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iCurCombo = 0; STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_iCurCombo = 0;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].UpdateComboList( 0, false ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].UpdateComboList( 0, false );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iCurCombo = 1; STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_iCurCombo = 1;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].UpdateComboList( 1, false ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].UpdateComboList( 1, false );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iCurCombo = 50; STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_iCurCombo = 50;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].UpdateComboList( 25, false ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].UpdateComboList( 25, false );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iCurCombo = 250; STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_iCurCombo = 250;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].UpdateComboList( 100, false ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].UpdateComboList( 100, false );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iTapNoteScores[TNS_W1] = RandomInt( 2 ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_iTapNoteScores[TNS_W1] = RandomInt( 2 );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iTapNoteScores[TNS_W2] = RandomInt( 2 ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_iTapNoteScores[TNS_W2] = RandomInt( 2 );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iTapNoteScores[TNS_W3] = RandomInt( 2 ); STATSMAN->m_CurStageStats.m_player[PLAYER_1].m_iTapNoteScores[TNS_W3] = RandomInt( 2 );
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iTapNoteScores[TNS_W1] = RandomInt( 2 ); STATSMAN->m_CurStageStats.m_player[PLAYER_2].m_iTapNoteScores[TNS_W1] = RandomInt( 2 );
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iTapNoteScores[TNS_W2] = RandomInt( 2 ); STATSMAN->m_CurStageStats.m_player[PLAYER_2].m_iTapNoteScores[TNS_W2] = RandomInt( 2 );
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iTapNoteScores[TNS_W3] = RandomInt( 2 ); STATSMAN->m_CurStageStats.m_player[PLAYER_2].m_iTapNoteScores[TNS_W3] = RandomInt( 2 );
STATSMAN->m_vPlayedStageStats.clear(); STATSMAN->m_vPlayedStageStats.clear();
} }
+52 -52
View File
@@ -92,13 +92,13 @@ ScreenEvaluation::ScreenEvaluation()
GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR ); GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR );
GAMESTATE->SetCurrentStyle( GAMEMAN->GameAndStringToStyle(GAMEMAN->GetDefaultGame(),"versus") ); GAMESTATE->SetCurrentStyle( GAMEMAN->GameAndStringToStyle(GAMEMAN->GetDefaultGame(),"versus") );
STATSMAN->m_CurStageStats.playMode = GAMESTATE->m_PlayMode; STATSMAN->m_CurStageStats.m_playMode = GAMESTATE->m_PlayMode;
STATSMAN->m_CurStageStats.pStyle = GAMESTATE->GetCurrentStyle(); STATSMAN->m_CurStageStats.m_pStyle = GAMESTATE->GetCurrentStyle();
STATSMAN->m_CurStageStats.StageType = StageStats::STAGE_NORMAL; STATSMAN->m_CurStageStats.m_StageType = StageStats::STAGE_NORMAL;
GAMESTATE->m_MasterPlayerNumber = PLAYER_1; GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() ); GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() );
STATSMAN->m_CurStageStats.vpPlayedSongs.push_back( GAMESTATE->m_pCurSong ); STATSMAN->m_CurStageStats.m_vpPlayedSongs.push_back( GAMESTATE->m_pCurSong );
STATSMAN->m_CurStageStats.vpPossibleSongs.push_back( GAMESTATE->m_pCurSong ); STATSMAN->m_CurStageStats.m_vpPossibleSongs.push_back( GAMESTATE->m_pCurSong );
GAMESTATE->m_pCurCourse.Set( SONGMAN->GetRandomCourse() ); GAMESTATE->m_pCurCourse.Set( SONGMAN->GetRandomCourse() );
GAMESTATE->m_iCurrentStageIndex = 0; GAMESTATE->m_iCurrentStageIndex = 0;
@@ -113,8 +113,8 @@ ScreenEvaluation::ScreenEvaluation()
GAMESTATE->m_pCurCourse->GetAllTrails( apTrails ); GAMESTATE->m_pCurCourse->GetAllTrails( apTrails );
if( apTrails.size() ) if( apTrails.size() )
GAMESTATE->m_pCurTrail[p].Set( apTrails[0] ); GAMESTATE->m_pCurTrail[p].Set( apTrails[0] );
STATSMAN->m_CurStageStats.m_player[p].vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] ); STATSMAN->m_CurStageStats.m_player[p].m_vpPlayedSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] );
STATSMAN->m_CurStageStats.m_player[p].vpPossibleSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] ); STATSMAN->m_CurStageStats.m_player[p].m_vpPossibleSteps.push_back( GAMESTATE->m_pCurSteps[PLAYER_1] );
PO_GROUP_ASSIGN( GAMESTATE->m_pPlayerState[p]->m_PlayerOptions, ModsLevel_Stage, m_fScrollSpeed, 2.0f ); PO_GROUP_ASSIGN( GAMESTATE->m_pPlayerState[p]->m_PlayerOptions, ModsLevel_Stage, m_fScrollSpeed, 2.0f );
@@ -131,38 +131,38 @@ ScreenEvaluation::ScreenEvaluation()
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
{ {
float fSeconds = GAMESTATE->m_pCurSong->GetStepsSeconds(); float fSeconds = GAMESTATE->m_pCurSong->GetStepsSeconds();
STATSMAN->m_CurStageStats.m_player[p].iActualDancePoints = RandomInt( 3 ); STATSMAN->m_CurStageStats.m_player[p].m_iActualDancePoints = RandomInt( 3 );
STATSMAN->m_CurStageStats.m_player[p].iPossibleDancePoints = 2; STATSMAN->m_CurStageStats.m_player[p].m_iPossibleDancePoints = 2;
if( RandomInt(2) ) if( RandomInt(2) )
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 11000; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = 11000;
else else
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 0; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = 0;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0, true ); STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0, true );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo += 50; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo += 50;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.10f * fSeconds, false ); STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.10f * fSeconds, false );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 0; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = 0;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.15f * fSeconds, false ); STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.15f * fSeconds, false );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 1; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = 1;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.25f * fSeconds, false ); STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.25f * fSeconds, false );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 50; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = 50;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.35f * fSeconds, false ); STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.35f * fSeconds, false );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 0; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = 0;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.45f * fSeconds, false ); STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.45f * fSeconds, false );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 1; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = 1;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.50f * fSeconds, false ); STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0.50f * fSeconds, false );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 100; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = 100;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 1.00f * fSeconds, false ); STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 1.00f * fSeconds, false );
if( RandomInt(5) == 0 ) if( RandomInt(5) == 0 )
{ {
STATSMAN->m_CurStageStats.m_player[p].bFailed = true; STATSMAN->m_CurStageStats.m_player[p].m_bFailed = true;
} }
STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_W1] = RandomInt( 3 ); STATSMAN->m_CurStageStats.m_player[p].m_iTapNoteScores[TNS_W1] = RandomInt( 3 );
STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_W2] = RandomInt( 3 ); STATSMAN->m_CurStageStats.m_player[p].m_iTapNoteScores[TNS_W2] = RandomInt( 3 );
STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_W3] = RandomInt( 3 ); STATSMAN->m_CurStageStats.m_player[p].m_iTapNoteScores[TNS_W3] = RandomInt( 3 );
STATSMAN->m_CurStageStats.m_player[p].iPossibleGradePoints = 4*ScoreKeeperNormal::TapNoteScoreToGradePoints(TNS_W1, false); STATSMAN->m_CurStageStats.m_player[p].m_iPossibleGradePoints = 4*ScoreKeeperNormal::TapNoteScoreToGradePoints(TNS_W1, false);
STATSMAN->m_CurStageStats.m_player[p].fLifeRemainingSeconds = randomf( 90, 580 ); STATSMAN->m_CurStageStats.m_player[p].m_fLifeRemainingSeconds = randomf( 90, 580 );
} }
STATSMAN->m_vPlayedStageStats.clear(); STATSMAN->m_vPlayedStageStats.clear();
@@ -217,8 +217,8 @@ void ScreenEvaluation::Init()
Grade g = STATSMAN->m_CurStageStats.m_player[p].GetGrade(); Grade g = STATSMAN->m_CurStageStats.m_player[p].GetGrade();
if( g < (int) ARRAYLEN(ScoreBonuses) ) if( g < (int) ARRAYLEN(ScoreBonuses) )
{ {
STATSMAN->m_CurStageStats.m_player[p].iBonus += ScoreBonuses[(int)g]; STATSMAN->m_CurStageStats.m_player[p].m_iBonus += ScoreBonuses[(int)g];
STATSMAN->m_CurStageStats.m_player[p].iBonus += ScoreBonuses[(int)g]; STATSMAN->m_CurStageStats.m_player[p].m_iBonus += ScoreBonuses[(int)g];
} }
} }
} }
@@ -230,7 +230,7 @@ void ScreenEvaluation::Init()
STATSMAN->m_CurStageStats.CommitScores( SUMMARY ); STATSMAN->m_CurStageStats.CommitScores( SUMMARY );
FOREACH_HumanPlayer( p ) FOREACH_HumanPlayer( p )
STATSMAN->m_CurStageStats.m_player[p].CalcAwards( p, STATSMAN->m_CurStageStats.bGaveUp, STATSMAN->m_CurStageStats.bUsedAutoplay ); STATSMAN->m_CurStageStats.m_player[p].CalcAwards( p, STATSMAN->m_CurStageStats.m_bGaveUp, STATSMAN->m_CurStageStats.m_bUsedAutoplay );
// Run this here, so STATSMAN->m_CurStageStats is available to overlays. // Run this here, so STATSMAN->m_CurStageStats is available to overlays.
ScreenWithMenuElements::Init(); ScreenWithMenuElements::Init();
@@ -267,9 +267,9 @@ void ScreenEvaluation::Init()
{ {
if( SUMMARY ) if( SUMMARY )
{ {
for( unsigned i=0; i<STATSMAN->m_CurStageStats.vpPlayedSongs.size(); i++ ) for( unsigned i=0; i<STATSMAN->m_CurStageStats.m_vpPlayedSongs.size(); i++ )
{ {
Song *pSong = STATSMAN->m_CurStageStats.vpPlayedSongs[i]; Song *pSong = STATSMAN->m_CurStageStats.m_vpPlayedSongs[i];
m_SmallBanner[i].LoadFromSong( pSong ); m_SmallBanner[i].LoadFromSong( pSong );
m_SmallBanner[i].ScaleToClipped( BANNER_WIDTH, BANNER_HEIGHT ); m_SmallBanner[i].ScaleToClipped( BANNER_WIDTH, BANNER_HEIGHT );
@@ -404,7 +404,7 @@ void ScreenEvaluation::Init()
for( int r=0; r<NUM_SHOWN_RADAR_CATEGORIES; r++ ) // foreach line for( int r=0; r<NUM_SHOWN_RADAR_CATEGORIES; r++ ) // foreach line
{ {
m_sprPossibleBar[p][r].Load( THEME->GetPathG(m_sName,ssprintf("bar possible p%d",p+1)) ); m_sprPossibleBar[p][r].Load( THEME->GetPathG(m_sName,ssprintf("bar possible p%d",p+1)) );
m_sprPossibleBar[p][r].SetWidth( m_sprPossibleBar[p][r].GetUnzoomedWidth() * STATSMAN->m_CurStageStats.m_player[p].radarPossible[r] ); m_sprPossibleBar[p][r].SetWidth( m_sprPossibleBar[p][r].GetUnzoomedWidth() * STATSMAN->m_CurStageStats.m_player[p].m_radarPossible[r] );
m_sprPossibleBar[p][r].SetName( ssprintf("BarPossible%dP%d",r+1,p+1) ); m_sprPossibleBar[p][r].SetName( ssprintf("BarPossible%dP%d",r+1,p+1) );
ActorUtil::LoadAllCommands( m_sprPossibleBar[p][r], m_sName ); ActorUtil::LoadAllCommands( m_sprPossibleBar[p][r], m_sName );
SET_XY( m_sprPossibleBar[p][r] ); SET_XY( m_sprPossibleBar[p][r] );
@@ -412,7 +412,7 @@ void ScreenEvaluation::Init()
m_sprActualBar[p][r].Load( THEME->GetPathG(m_sName,ssprintf("bar actual p%d",p+1)) ); m_sprActualBar[p][r].Load( THEME->GetPathG(m_sName,ssprintf("bar actual p%d",p+1)) );
// should be out of the possible bar, not actual (whatever value that is at) // should be out of the possible bar, not actual (whatever value that is at)
m_sprActualBar[p][r].SetWidth( m_sprPossibleBar[p][r].GetUnzoomedWidth() * STATSMAN->m_CurStageStats.m_player[p].radarActual[r] ); m_sprActualBar[p][r].SetWidth( m_sprPossibleBar[p][r].GetUnzoomedWidth() * STATSMAN->m_CurStageStats.m_player[p].m_radarActual[r] );
float value = (float)100 * m_sprActualBar[p][r].GetUnzoomedWidth() / m_sprPossibleBar[p][r].GetUnzoomedWidth(); float value = (float)100 * m_sprActualBar[p][r].GetUnzoomedWidth() / m_sprPossibleBar[p][r].GetUnzoomedWidth();
LOG->Trace("Radar bar %d of 5 - %f percent", r, value); LOG->Trace("Radar bar %d of 5 - %f percent", r, value);
@@ -422,7 +422,7 @@ void ScreenEvaluation::Init()
SET_XY( m_sprActualBar[p][r] ); SET_XY( m_sprActualBar[p][r] );
// .99999 is fairly close to 1.00, so we use that // .99999 is fairly close to 1.00, so we use that
if( STATSMAN->m_CurStageStats.m_player[p].radarActual[r] > 0.99999f ) if( STATSMAN->m_CurStageStats.m_player[p].m_radarActual[r] > 0.99999f )
m_sprActualBar[p][r].RunCommands( BAR_ACTUAL_MAX_COMMAND ); m_sprActualBar[p][r].RunCommands( BAR_ACTUAL_MAX_COMMAND );
this->AddChild( &m_sprActualBar[p][r] ); this->AddChild( &m_sprActualBar[p][r] );
} }
@@ -446,7 +446,7 @@ void ScreenEvaluation::Init()
m_textSurvivedNumber[p].SetShadowLength( 0 ); m_textSurvivedNumber[p].SetShadowLength( 0 );
// curewater: edited the "# stages cleared" text so it deducts one if you failed. // curewater: edited the "# stages cleared" text so it deducts one if you failed.
// Should be accurate, but I'm not sure if its "standard" that (bool)true = 1. (assumption) // Should be accurate, but I'm not sure if its "standard" that (bool)true = 1. (assumption)
m_textSurvivedNumber[p].SetText( ssprintf("%02d", STATSMAN->m_CurStageStats.m_player[p].iSongsPassed) ); m_textSurvivedNumber[p].SetText( ssprintf("%02d", STATSMAN->m_CurStageStats.m_player[p].m_iSongsPassed) );
m_textSurvivedNumber[p].SetName( ssprintf("SurvivedNumberP%d",p+1) ); m_textSurvivedNumber[p].SetName( ssprintf("SurvivedNumberP%d",p+1) );
ActorUtil::LoadAllCommands( m_textSurvivedNumber[p], m_sName ); ActorUtil::LoadAllCommands( m_textSurvivedNumber[p], m_sName );
SET_XY( m_textSurvivedNumber[p] ); SET_XY( m_textSurvivedNumber[p] );
@@ -512,14 +512,14 @@ void ScreenEvaluation::Init()
int iValue; int iValue;
switch( l ) switch( l )
{ {
case JudgeLine_W1: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_W1]; break; case JudgeLine_W1: iValue = STATSMAN->m_CurStageStats.m_player[p].m_iTapNoteScores[TNS_W1]; break;
case JudgeLine_W2: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_W2]; break; case JudgeLine_W2: iValue = STATSMAN->m_CurStageStats.m_player[p].m_iTapNoteScores[TNS_W2]; break;
case JudgeLine_W3: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_W3]; break; case JudgeLine_W3: iValue = STATSMAN->m_CurStageStats.m_player[p].m_iTapNoteScores[TNS_W3]; break;
case JudgeLine_W4: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_W4]; break; case JudgeLine_W4: iValue = STATSMAN->m_CurStageStats.m_player[p].m_iTapNoteScores[TNS_W4]; break;
case JudgeLine_W5: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_W5]; break; case JudgeLine_W5: iValue = STATSMAN->m_CurStageStats.m_player[p].m_iTapNoteScores[TNS_W5]; break;
case JudgeLine_Miss: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Miss]; break; case JudgeLine_Miss: iValue = STATSMAN->m_CurStageStats.m_player[p].m_iTapNoteScores[TNS_Miss]; break;
case JudgeLine_Held: iValue = STATSMAN->m_CurStageStats.m_player[p].iHoldNoteScores[HNS_Held]; break; case JudgeLine_Held: iValue = STATSMAN->m_CurStageStats.m_player[p].m_iHoldNoteScores[HNS_Held]; break;
case JudgeLine_MaxCombo: iValue = STATSMAN->m_CurStageStats.m_player[p].GetMaxCombo().cnt; break; case JudgeLine_MaxCombo: iValue = STATSMAN->m_CurStageStats.m_player[p].GetMaxCombo().m_cnt; break;
DEFAULT_FAIL( l ); DEFAULT_FAIL( l );
} }
@@ -559,8 +559,8 @@ void ScreenEvaluation::Init()
RadarCategory_Jumps, RadarCategory_Holds, RadarCategory_Mines, RadarCategory_Hands, RadarCategory_Rolls RadarCategory_Jumps, RadarCategory_Holds, RadarCategory_Mines, RadarCategory_Hands, RadarCategory_Rolls
}; };
const int ind = indeces[l]; const int ind = indeces[l];
const int iActual = (int) roundf(STATSMAN->m_CurStageStats.m_player[p].radarActual[ind]); const int iActual = (int) roundf(STATSMAN->m_CurStageStats.m_player[p].m_radarActual[ind]);
const int iPossible = (int) roundf(STATSMAN->m_CurStageStats.m_player[p].radarPossible[ind]); const int iPossible = (int) roundf(STATSMAN->m_CurStageStats.m_player[p].m_radarPossible[ind]);
m_textStatsText[l][p].SetText( ssprintf("%3d/%3d",iActual,iPossible) ); m_textStatsText[l][p].SetText( ssprintf("%3d/%3d",iActual,iPossible) );
} }
@@ -585,7 +585,7 @@ void ScreenEvaluation::Init()
m_textScore[p].SetName( ssprintf("ScoreNumberP%d",p+1) ); m_textScore[p].SetName( ssprintf("ScoreNumberP%d",p+1) );
ActorUtil::LoadAllCommands( m_textScore[p], m_sName ); ActorUtil::LoadAllCommands( m_textScore[p], m_sName );
SET_XY( m_textScore[p] ); SET_XY( m_textScore[p] );
m_textScore[p].SetText( ssprintf("%*.0i", NUM_SCORE_DIGITS, STATSMAN->m_CurStageStats.m_player[p].iScore) ); m_textScore[p].SetText( ssprintf("%*.0i", NUM_SCORE_DIGITS, STATSMAN->m_CurStageStats.m_player[p].m_iScore) );
this->AddChild( &m_textScore[p] ); this->AddChild( &m_textScore[p] );
} }
} }
@@ -602,7 +602,7 @@ void ScreenEvaluation::Init()
{ {
int iTotalScore=0; int iTotalScore=0;
for( unsigned i=0; i<STATSMAN->m_vPlayedStageStats.size(); i++ ) for( unsigned i=0; i<STATSMAN->m_vPlayedStageStats.size(); i++ )
iTotalScore += STATSMAN->m_vPlayedStageStats[i].m_player[p].iScore; iTotalScore += STATSMAN->m_vPlayedStageStats[i].m_player[p].m_iScore;
//iTotalScore += STATSMAN->m_CurStageStats.m_player[p].iScore; //iTotalScore += STATSMAN->m_CurStageStats.m_player[p].iScore;
@@ -637,7 +637,7 @@ void ScreenEvaluation::Init()
m_textTime[p].SetName( ssprintf("TimeNumberP%d",p+1) ); m_textTime[p].SetName( ssprintf("TimeNumberP%d",p+1) );
ActorUtil::LoadAllCommands( m_textTime[p], m_sName ); ActorUtil::LoadAllCommands( m_textTime[p], m_sName );
SET_XY( m_textTime[p] ); SET_XY( m_textTime[p] );
m_textTime[p].SetText( SecondsToMMSSMsMs(STATSMAN->m_CurStageStats.m_player[p].fAliveSeconds) ); m_textTime[p].SetText( SecondsToMMSSMsMs(STATSMAN->m_CurStageStats.m_player[p].m_fAliveSeconds) );
this->AddChild( &m_textTime[p] ); this->AddChild( &m_textTime[p] );
} }
} }
@@ -794,21 +794,21 @@ void ScreenEvaluation::HandleScreenMessage( const ScreenMessage SM )
{ {
FOREACH_EnabledPlayer( p ) FOREACH_EnabledPlayer( p )
{ {
if( STATSMAN->m_CurStageStats.m_player[p].iBonus == 0 ) if( STATSMAN->m_CurStageStats.m_player[p].m_iBonus == 0 )
continue; continue;
if( GAMESTATE->IsCourseMode() ) if( GAMESTATE->IsCourseMode() )
continue; continue;
int increment = STATSMAN->m_CurStageStats.m_player[p].iBonus/10; int increment = STATSMAN->m_CurStageStats.m_player[p].m_iBonus/10;
if( increment < 1 ) if( increment < 1 )
increment = min( 1024, STATSMAN->m_CurStageStats.m_player[p].iBonus ); increment = min( 1024, STATSMAN->m_CurStageStats.m_player[p].m_iBonus );
STATSMAN->m_CurStageStats.m_player[p].iBonus -= increment; STATSMAN->m_CurStageStats.m_player[p].m_iBonus -= increment;
STATSMAN->m_CurStageStats.m_player[p].iScore += increment; STATSMAN->m_CurStageStats.m_player[p].m_iScore += increment;
if( SHOW_SCORE_AREA ) if( SHOW_SCORE_AREA )
m_textScore[p].SetText( ssprintf("%*.0i", NUM_SCORE_DIGITS, STATSMAN->m_CurStageStats.m_player[p].iScore) ); m_textScore[p].SetText( ssprintf("%*.0i", NUM_SCORE_DIGITS, STATSMAN->m_CurStageStats.m_player[p].m_iScore) );
} }
} }
+34 -34
View File
@@ -398,19 +398,19 @@ void ScreenGameplay::Init()
FOREACH_EnabledPlayer(p) FOREACH_EnabledPlayer(p)
PROFILEMAN->IncrementCoursePlayCount( GAMESTATE->m_pCurCourse, GAMESTATE->m_pCurTrail[p], p ); PROFILEMAN->IncrementCoursePlayCount( GAMESTATE->m_pCurCourse, GAMESTATE->m_pCurTrail[p], p );
STATSMAN->m_CurStageStats.playMode = GAMESTATE->m_PlayMode; STATSMAN->m_CurStageStats.m_playMode = GAMESTATE->m_PlayMode;
STATSMAN->m_CurStageStats.pStyle = GAMESTATE->GetCurrentStyle(); STATSMAN->m_CurStageStats.m_pStyle = GAMESTATE->GetCurrentStyle();
/* Record combo rollover. */ /* Record combo rollover. */
FOREACH_EnabledPlayerInfoNotDummy( m_vPlayerInfo, pi ) FOREACH_EnabledPlayerInfoNotDummy( m_vPlayerInfo, pi )
pi->GetPlayerStageStats()->UpdateComboList( 0, true ); pi->GetPlayerStageStats()->UpdateComboList( 0, true );
if( GAMESTATE->IsExtraStage() ) if( GAMESTATE->IsExtraStage() )
STATSMAN->m_CurStageStats.StageType = StageStats::STAGE_EXTRA; STATSMAN->m_CurStageStats.m_StageType = StageStats::STAGE_EXTRA;
else if( GAMESTATE->IsExtraStage2() ) else if( GAMESTATE->IsExtraStage2() )
STATSMAN->m_CurStageStats.StageType = StageStats::STAGE_EXTRA2; STATSMAN->m_CurStageStats.m_StageType = StageStats::STAGE_EXTRA2;
else else
STATSMAN->m_CurStageStats.StageType = StageStats::STAGE_NORMAL; STATSMAN->m_CurStageStats.m_StageType = StageStats::STAGE_NORMAL;
m_DancingState = STATE_INTRO; m_DancingState = STATE_INTRO;
@@ -588,7 +588,7 @@ void ScreenGameplay::Init()
m_MaxCombo.SetName( "MaxCombo" ); m_MaxCombo.SetName( "MaxCombo" );
ActorUtil::LoadAllCommands( m_MaxCombo, m_sName ); ActorUtil::LoadAllCommands( m_MaxCombo, m_sName );
SET_XY( m_MaxCombo ); SET_XY( m_MaxCombo );
m_MaxCombo.SetText( ssprintf("%d", m_vPlayerInfo[0].GetPlayerStageStats()->iMaxCombo) ); // TODO: Make this work for both players m_MaxCombo.SetText( ssprintf("%d", m_vPlayerInfo[0].GetPlayerStageStats()->m_iMaxCombo) ); // TODO: Make this work for both players
this->AddChild( &m_MaxCombo ); this->AddChild( &m_MaxCombo );
@@ -879,11 +879,11 @@ void ScreenGameplay::InitSongQueues()
} }
// Fill StageStats // Fill StageStats
STATSMAN->m_CurStageStats.vpPossibleSongs = m_apSongsQueue; STATSMAN->m_CurStageStats.m_vpPossibleSongs = m_apSongsQueue;
FOREACH( PlayerInfo, m_vPlayerInfo, pi ) FOREACH( PlayerInfo, m_vPlayerInfo, pi )
{ {
if( pi->GetPlayerStageStats() ) if( pi->GetPlayerStageStats() )
pi->GetPlayerStageStats()->vpPossibleSteps = pi->m_vpStepsQueue; pi->GetPlayerStageStats()->m_vpPossibleSteps = pi->m_vpStepsQueue;
} }
} }
@@ -1017,7 +1017,7 @@ void ScreenGameplay::LoadCourseSongNumber( int iSongNumber )
void ScreenGameplay::ReloadCurrentSong() void ScreenGameplay::ReloadCurrentSong()
{ {
FOREACH_EnabledPlayerInfoNotDummy( m_vPlayerInfo, pi ) FOREACH_EnabledPlayerInfoNotDummy( m_vPlayerInfo, pi )
pi->GetPlayerStageStats()->iSongsPlayed--; pi->GetPlayerStageStats()->m_iSongsPlayed--;
LoadNextSong(); LoadNextSong();
} }
@@ -1028,21 +1028,21 @@ void ScreenGameplay::LoadNextSong()
FOREACH_EnabledPlayerInfoNotDummy( m_vPlayerInfo, pi ) FOREACH_EnabledPlayerInfoNotDummy( m_vPlayerInfo, pi )
{ {
pi->GetPlayerStageStats()->iSongsPlayed++; pi->GetPlayerStageStats()->m_iSongsPlayed++;
if( pi->m_ptextCourseSongNumber ) if( pi->m_ptextCourseSongNumber )
pi->m_ptextCourseSongNumber->SetText( ssprintf("%d", pi->GetPlayerStageStats()->iSongsPassed+1) ); pi->m_ptextCourseSongNumber->SetText( ssprintf("%d", pi->GetPlayerStageStats()->m_iSongsPassed+1) );
} }
// super hack // super hack
if( GAMESTATE->m_bMultiplayer ) if( GAMESTATE->m_bMultiplayer )
STATSMAN->m_CurStageStats.m_player[GAMESTATE->m_MasterPlayerNumber].iSongsPlayed++; STATSMAN->m_CurStageStats.m_player[GAMESTATE->m_MasterPlayerNumber].m_iSongsPlayed++;
LoadCourseSongNumber( GAMESTATE->GetCourseSongIndex() ); LoadCourseSongNumber( GAMESTATE->GetCourseSongIndex() );
int iPlaySongIndex = GAMESTATE->GetCourseSongIndex(); int iPlaySongIndex = GAMESTATE->GetCourseSongIndex();
iPlaySongIndex %= m_apSongsQueue.size(); iPlaySongIndex %= m_apSongsQueue.size();
GAMESTATE->m_pCurSong.Set( m_apSongsQueue[iPlaySongIndex] ); GAMESTATE->m_pCurSong.Set( m_apSongsQueue[iPlaySongIndex] );
STATSMAN->m_CurStageStats.vpPlayedSongs.push_back( GAMESTATE->m_pCurSong ); STATSMAN->m_CurStageStats.m_vpPlayedSongs.push_back( GAMESTATE->m_pCurSong );
// No need to do this here. We do it in SongFinished(). // No need to do this here. We do it in SongFinished().
//GAMESTATE->RemoveAllActiveAttacks(); //GAMESTATE->RemoveAllActiveAttacks();
@@ -1060,7 +1060,7 @@ void ScreenGameplay::LoadNextSong()
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi ) FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
{ {
Steps* pSteps = GAMESTATE->m_pCurSteps[ pi->GetStepsAndTrailIndex() ]; Steps* pSteps = GAMESTATE->m_pCurSteps[ pi->GetStepsAndTrailIndex() ];
pi->GetPlayerStageStats()->vpPlayedSteps.push_back( pSteps ); pi->GetPlayerStageStats()->m_vpPlayedSteps.push_back( pSteps );
ASSERT( GAMESTATE->m_pCurSteps[ pi->GetStepsAndTrailIndex() ] ); ASSERT( GAMESTATE->m_pCurSteps[ pi->GetStepsAndTrailIndex() ] );
if( pi->m_ptextStepsDescription ) if( pi->m_ptextStepsDescription )
@@ -1082,7 +1082,7 @@ void ScreenGameplay::LoadNextSong()
// reset oni game over graphic // reset oni game over graphic
SET_XY_AND_ON_COMMAND( pi->m_sprOniGameOver ); SET_XY_AND_ON_COMMAND( pi->m_sprOniGameOver );
if( GAMESTATE->m_SongOptions.GetCurrent().m_LifeType==SongOptions::LIFE_BATTERY && pi->GetPlayerStageStats()->bFailed ) // already failed if( GAMESTATE->m_SongOptions.GetCurrent().m_LifeType==SongOptions::LIFE_BATTERY && pi->GetPlayerStageStats()->m_bFailed ) // already failed
pi->ShowOniGameOver(); pi->ShowOniGameOver();
if( GAMESTATE->m_SongOptions.GetCurrent().m_LifeType==SongOptions::LIFE_BAR && pi->m_pLifeMeter ) if( GAMESTATE->m_SongOptions.GetCurrent().m_LifeType==SongOptions::LIFE_BAR && pi->m_pLifeMeter )
@@ -1218,7 +1218,7 @@ void ScreenGameplay::LoadNextSong()
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi ) FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
{ {
if( !pi->GetPlayerStageStats()->bFailed ) if( !pi->GetPlayerStageStats()->m_bFailed )
{ {
// give a little life back between stages // give a little life back between stages
if( pi->m_pLifeMeter ) if( pi->m_pLifeMeter )
@@ -1557,7 +1557,7 @@ void ScreenGameplay::Update( float fDeltaTime )
return; return;
if( GAMESTATE->m_MasterPlayerNumber != PLAYER_INVALID && !m_MaxCombo.GetHidden() ) if( GAMESTATE->m_MasterPlayerNumber != PLAYER_INVALID && !m_MaxCombo.GetHidden() )
m_MaxCombo.SetText( ssprintf("%d", STATSMAN->m_CurStageStats.m_player[GAMESTATE->m_MasterPlayerNumber].iMaxCombo) ); /* MAKE THIS WORK FOR BOTH PLAYERS! */ m_MaxCombo.SetText( ssprintf("%d", STATSMAN->m_CurStageStats.m_player[GAMESTATE->m_MasterPlayerNumber].m_iMaxCombo) ); /* MAKE THIS WORK FOR BOTH PLAYERS! */
//LOG->Trace( "m_fOffsetInBeats = %f, m_fBeatsPerSecond = %f, m_Music.GetPositionSeconds = %f", m_fOffsetInBeats, m_fBeatsPerSecond, m_Music.GetPositionSeconds() ); //LOG->Trace( "m_fOffsetInBeats = %f, m_fBeatsPerSecond = %f, m_Music.GetPositionSeconds = %f", m_fOffsetInBeats, m_fBeatsPerSecond, m_Music.GetPositionSeconds() );
@@ -1607,11 +1607,11 @@ void ScreenGameplay::Update( float fDeltaTime )
// check for individual fail // check for individual fail
if( pi->m_pLifeMeter == NULL || !pi->m_pLifeMeter->IsFailing() ) if( pi->m_pLifeMeter == NULL || !pi->m_pLifeMeter->IsFailing() )
continue; /* isn't failing */ continue; /* isn't failing */
if( pi->GetPlayerStageStats()->bFailed ) if( pi->GetPlayerStageStats()->m_bFailed )
continue; /* failed and is already dead */ continue; /* failed and is already dead */
LOG->Trace("Player %d failed", (int)pn); LOG->Trace("Player %d failed", (int)pn);
pi->GetPlayerStageStats()->bFailed = true; // fail pi->GetPlayerStageStats()->m_bFailed = true; // fail
// //
// Check for and do Oni die. // Check for and do Oni die.
@@ -1669,13 +1669,13 @@ void ScreenGameplay::Update( float fDeltaTime )
float fUnscaledDeltaTime = m_timerGameplaySeconds.GetDeltaTime(); float fUnscaledDeltaTime = m_timerGameplaySeconds.GetDeltaTime();
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi ) FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
if( !pi->GetPlayerStageStats()->bFailed ) if( !pi->GetPlayerStageStats()->m_bFailed )
pi->GetPlayerStageStats()->fAliveSeconds += fUnscaledDeltaTime * GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate; pi->GetPlayerStageStats()->m_fAliveSeconds += fUnscaledDeltaTime * GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate;
// update fGameplaySeconds // update fGameplaySeconds
STATSMAN->m_CurStageStats.fGameplaySeconds += fUnscaledDeltaTime; STATSMAN->m_CurStageStats.m_fGameplaySeconds += fUnscaledDeltaTime;
if( GAMESTATE->m_fSongBeat >= GAMESTATE->m_pCurSong->m_fFirstBeat && GAMESTATE->m_fSongBeat < GAMESTATE->m_pCurSong->m_fLastBeat ) if( GAMESTATE->m_fSongBeat >= GAMESTATE->m_pCurSong->m_fFirstBeat && GAMESTATE->m_fSongBeat < GAMESTATE->m_pCurSong->m_fLastBeat )
STATSMAN->m_CurStageStats.fStepsSeconds += fUnscaledDeltaTime; STATSMAN->m_CurStageStats.m_fStepsSeconds += fUnscaledDeltaTime;
// //
// Check for end of song // Check for end of song
@@ -1787,10 +1787,10 @@ void ScreenGameplay::Update( float fDeltaTime )
{ {
// Give up // Give up
STATSMAN->m_CurStageStats.bGaveUp = true; STATSMAN->m_CurStageStats.m_bGaveUp = true;
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi ) FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
{ {
pi->GetPlayerStageStats()->bFailed |= GAMESTATE->AllHumanHaveComboOf30OrMoreMisses(); pi->GetPlayerStageStats()->m_bFailed |= GAMESTATE->AllHumanHaveComboOf30OrMoreMisses();
} }
AbortGiveUp( false ); AbortGiveUp( false );
@@ -2244,10 +2244,10 @@ void ScreenGameplay::SaveStats()
const NoteData &nd = pi->m_pPlayer->GetNoteData(); const NoteData &nd = pi->m_pPlayer->GetNoteData();
NoteDataUtil::CalculateRadarValues( nd, fMusicLen, rv ); NoteDataUtil::CalculateRadarValues( nd, fMusicLen, rv );
pss.radarPossible += rv; pss.m_radarPossible += rv;
NoteDataWithScoring::GetActualRadarValues( nd, pss, fMusicLen, rv ); NoteDataWithScoring::GetActualRadarValues( nd, pss, fMusicLen, rv );
pss.radarActual += rv; pss.m_radarActual += rv;
} }
} }
@@ -2317,14 +2317,14 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
/* Mark failure. */ /* Mark failure. */
if( GAMESTATE->GetPlayerFailType(pi->GetPlayerState()) != SongOptions::FAIL_OFF && if( GAMESTATE->GetPlayerFailType(pi->GetPlayerState()) != SongOptions::FAIL_OFF &&
(pi->m_pLifeMeter && pi->m_pLifeMeter->IsFailing()) ) (pi->m_pLifeMeter && pi->m_pLifeMeter->IsFailing()) )
pi->GetPlayerStageStats()->bFailed = true; pi->GetPlayerStageStats()->m_bFailed = true;
if( !pi->GetPlayerStageStats()->bFailed ) if( !pi->GetPlayerStageStats()->m_bFailed )
pi->GetPlayerStageStats()->iSongsPassed++; pi->GetPlayerStageStats()->m_iSongsPassed++;
// set a life record at the point of failure // set a life record at the point of failure
if( pi->GetPlayerStageStats()->bFailed ) if( pi->GetPlayerStageStats()->m_bFailed )
pi->GetPlayerStageStats()->SetLifeRecordAt( 0, STATSMAN->m_CurStageStats.fGameplaySeconds ); pi->GetPlayerStageStats()->SetLifeRecordAt( 0, STATSMAN->m_CurStageStats.m_fGameplaySeconds );
} }
/* If all players have *really* failed (bFailed, not the life meter or /* If all players have *really* failed (bFailed, not the life meter or
@@ -2363,7 +2363,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi ) FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
{ {
/* XXX: In battle modes, switch( GAMESTATE->GetStageResult(p) ). */ /* XXX: In battle modes, switch( GAMESTATE->GetStageResult(p) ). */
if( pi->GetPlayerStageStats()->bFailed ) if( pi->GetPlayerStageStats()->m_bFailed )
pDancers->Change2DAnimState( pi->m_pn, AS2D_FAIL ); // fail anim pDancers->Change2DAnimState( pi->m_pn, AS2D_FAIL ); // fail anim
else if( pi->m_pLifeMeter && pi->GetPlayerState()->m_HealthState == PlayerState::HOT ) else if( pi->m_pLifeMeter && pi->GetPlayerState()->m_HealthState == PlayerState::HOT )
pDancers->Change2DAnimState( pi->m_pn, AS2D_WINFEVER ); // full life pass anim pDancers->Change2DAnimState( pi->m_pn, AS2D_WINFEVER ); // full life pass anim
@@ -2526,7 +2526,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
{ {
float fMaxSurviveSeconds = 0; float fMaxSurviveSeconds = 0;
FOREACH_EnabledPlayer(p) FOREACH_EnabledPlayer(p)
fMaxSurviveSeconds = max( fMaxSurviveSeconds, STATSMAN->m_CurStageStats.m_player[p].fAliveSeconds ); fMaxSurviveSeconds = max( fMaxSurviveSeconds, STATSMAN->m_CurStageStats.m_player[p].m_fAliveSeconds );
m_textSurviveTime.SetText( "TIME: " + SecondsToMMSSMsMs(fMaxSurviveSeconds) ); m_textSurviveTime.SetText( "TIME: " + SecondsToMMSSMsMs(fMaxSurviveSeconds) );
SET_XY_AND_ON_COMMAND( m_textSurviveTime ); SET_XY_AND_ON_COMMAND( m_textSurviveTime );
} }
+1 -1
View File
@@ -213,7 +213,7 @@ void ScreenJukebox::Init()
FOREACH_EnabledPlayer( p ) FOREACH_EnabledPlayer( p )
{ {
/* Reset the combo, in case ComboContinuesBetweenSongs is enabled. */ /* Reset the combo, in case ComboContinuesBetweenSongs is enabled. */
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 0; STATSMAN->m_CurStageStats.m_player[p].m_iCurCombo = 0;
if( GAMESTATE->m_bJukeboxUsesModifiers ) if( GAMESTATE->m_bJukeboxUsesModifiers )
{ {
+19 -19
View File
@@ -129,36 +129,36 @@ ScreenNameEntry::ScreenNameEntry()
StageStats ss; StageStats ss;
for( int z = 0; z < 3; ++z ) for( int z = 0; z < 3; ++z )
{ {
ss.vpPlayedSongs.push_back( SONGMAN->GetRandomSong() ); ss.m_vpPlayedSongs.push_back( SONGMAN->GetRandomSong() );
ss.vpPossibleSongs = ss.vpPlayedSongs; ss.m_vpPossibleSongs = ss.m_vpPlayedSongs;
ss.pStyle = GAMESTATE->GetCurrentStyle(); ss.m_pStyle = GAMESTATE->GetCurrentStyle();
ss.playMode = GAMESTATE->m_PlayMode; ss.m_playMode = GAMESTATE->m_PlayMode;
ASSERT( ss.vpPlayedSongs[0]->GetAllSteps().size() ); ASSERT( ss.m_vpPlayedSongs[0]->GetAllSteps().size() );
StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType; StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType;
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
{ {
Steps *pSteps = ss.vpPlayedSongs[0]->GetAllSteps()[0]; Steps *pSteps = ss.m_vpPlayedSongs[0]->GetAllSteps()[0];
ss.m_player[p].vpPlayedSteps.push_back( pSteps ); ss.m_player[p].m_vpPlayedSteps.push_back( pSteps );
GAMESTATE->m_pCurSteps[p].Set( pSteps ); GAMESTATE->m_pCurSteps[p].Set( pSteps );
ss.m_player[p].iPossibleDancePoints = 100; ss.m_player[p].m_iPossibleDancePoints = 100;
ss.m_player[p].iActualDancePoints = 100; ss.m_player[p].m_iActualDancePoints = 100;
ss.m_player[p].iScore = 100; ss.m_player[p].m_iScore = 100;
ss.m_player[p].iPossibleDancePoints = 1000; ss.m_player[p].m_iPossibleDancePoints = 1000;
ss.m_player[p].iActualDancePoints = 985; ss.m_player[p].m_iActualDancePoints = 985;
ss.m_player[p].vpPossibleSteps.push_back( pSteps ); ss.m_player[p].m_vpPossibleSteps.push_back( pSteps );
HighScore hs; HighScore hs;
hs.SetGrade( Grade_Tier03 ); hs.SetGrade( Grade_Tier03 );
hs.SetPercentDP( ss.m_player[p].GetPercentDancePoints() ); hs.SetPercentDP( ss.m_player[p].GetPercentDancePoints() );
hs.SetScore( ss.m_player[p].iScore ); hs.SetScore( ss.m_player[p].m_iScore );
hs.SetDateTime( DateTime::GetNowDateTime() ); hs.SetDateTime( DateTime::GetNowDateTime() );
int a, b; int a, b;
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddCategoryScore( st, RANKING_A, p, hs, a, b ); PROFILEMAN->AddCategoryScore( st, RANKING_A, p, hs, a, b );
} }
+22 -22
View File
@@ -144,36 +144,36 @@ ScreenNameEntryTraditional::ScreenNameEntryTraditional()
StageStats ss; StageStats ss;
for( int z = 0; z < 3; ++z ) for( int z = 0; z < 3; ++z )
{ {
ss.vpPlayedSongs.push_back( SONGMAN->GetRandomSong() ); ss.m_vpPlayedSongs.push_back( SONGMAN->GetRandomSong() );
ss.vpPossibleSongs = ss.vpPlayedSongs; ss.m_vpPossibleSongs = ss.m_vpPlayedSongs;
ss.pStyle = GAMESTATE->GetCurrentStyle(); ss.m_pStyle = GAMESTATE->GetCurrentStyle();
ss.playMode = GAMESTATE->m_PlayMode; ss.m_playMode = GAMESTATE->m_PlayMode;
ASSERT( ss.vpPlayedSongs[0]->GetAllSteps().size() ); ASSERT( ss.m_vpPlayedSongs[0]->GetAllSteps().size() );
StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType; StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType;
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
{ {
Steps *pSteps = ss.vpPlayedSongs[0]->GetAllSteps()[0]; Steps *pSteps = ss.m_vpPlayedSongs[0]->GetAllSteps()[0];
ss.m_player[p].vpPlayedSteps.push_back( pSteps ); ss.m_player[p].m_vpPlayedSteps.push_back( pSteps );
GAMESTATE->m_pCurSteps[p].Set( pSteps ); GAMESTATE->m_pCurSteps[p].Set( pSteps );
ss.m_player[p].iPossibleDancePoints = 100; ss.m_player[p].m_iPossibleDancePoints = 100;
ss.m_player[p].iActualDancePoints = 100; ss.m_player[p].m_iActualDancePoints = 100;
ss.m_player[p].iScore = 100; ss.m_player[p].m_iScore = 100;
ss.m_player[p].iPossibleDancePoints = 1000; ss.m_player[p].m_iPossibleDancePoints = 1000;
ss.m_player[p].iActualDancePoints = 985; ss.m_player[p].m_iActualDancePoints = 985;
ss.m_player[p].vpPossibleSteps.push_back( pSteps ); ss.m_player[p].m_vpPossibleSteps.push_back( pSteps );
HighScore hs; HighScore hs;
hs.SetGrade( Grade_Tier03 ); hs.SetGrade( Grade_Tier03 );
hs.SetPercentDP( ss.m_player[p].GetPercentDancePoints() ); hs.SetPercentDP( ss.m_player[p].GetPercentDancePoints() );
hs.SetScore( ss.m_player[p].iScore ); hs.SetScore( ss.m_player[p].m_iScore );
hs.SetDateTime( DateTime::GetNowDateTime() ); hs.SetDateTime( DateTime::GetNowDateTime() );
int a, b; int a, b;
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddStepsScore( ss.vpPlayedSongs[0], pSteps, p, hs, a, b ); PROFILEMAN->AddStepsScore( ss.m_vpPlayedSongs[0], pSteps, p, hs, a, b );
PROFILEMAN->AddCategoryScore( st, RANKING_A, p, hs, a, b ); PROFILEMAN->AddCategoryScore( st, RANKING_A, p, hs, a, b );
} }
@@ -334,14 +334,14 @@ void ScreenNameEntryTraditional::Init()
for( unsigned i = 0; i < STATSMAN->m_vPlayedStageStats.size(); ++i ) for( unsigned i = 0; i < STATSMAN->m_vPlayedStageStats.size(); ++i )
{ {
StageStats &ss = STATSMAN->m_vPlayedStageStats[i]; StageStats &ss = STATSMAN->m_vPlayedStageStats[i];
Song* pSong = ss.vpPlayedSongs[0]; Song* pSong = ss.m_vpPlayedSongs[0];
Steps* pSteps = ss.m_player[p].vpPlayedSteps[0]; Steps* pSteps = ss.m_player[p].m_vpPlayedSteps[0];
Course* pCourse = GAMESTATE->m_pCurCourse; Course* pCourse = GAMESTATE->m_pCurCourse;
Trail* pTrail = GAMESTATE->m_pCurTrail[p]; Trail* pTrail = GAMESTATE->m_pCurTrail[p];
int iHighScoreIndex = -1; // -1 means "out of ranking" int iHighScoreIndex = -1; // -1 means "out of ranking"
Grade grade = ss.m_player[p].GetGrade(); Grade grade = ss.m_player[p].GetGrade();
int iScore = ss.m_player[p].iScore; int iScore = ss.m_player[p].m_iScore;
float fPercentDP = ss.m_player[p].GetPercentDancePoints(); float fPercentDP = ss.m_player[p].GetPercentDancePoints();
// If this is a SHOW_NEVER song, then it's probably a training. // If this is a SHOW_NEVER song, then it's probably a training.
+1 -1
View File
@@ -652,7 +652,7 @@ void ScreenSelectMusic::MenuStart( const InputEventPlus &input )
if( GAMESTATE->IsEventMode() ) if( GAMESTATE->IsEventMode() )
i = max( 0, int(STATSMAN->m_vPlayedStageStats.size())-5 ); i = max( 0, int(STATSMAN->m_vPlayedStageStats.size())-5 );
for( ; i < (int)STATSMAN->m_vPlayedStageStats.size(); ++i ) for( ; i < (int)STATSMAN->m_vPlayedStageStats.size(); ++i )
if( STATSMAN->m_vPlayedStageStats[i].vpPlayedSongs.back() == m_MusicWheel.GetSelectedSong() ) if( STATSMAN->m_vPlayedStageStats[i].m_vpPlayedSongs.back() == m_MusicWheel.GetSelectedSong() )
bIsRepeat = true; bIsRepeat = true;
/* Don't complain about repeats if the user didn't get to pick. */ /* Don't complain about repeats if the user didn't get to pick. */
+58 -58
View File
@@ -18,16 +18,16 @@
StageStats::StageStats() StageStats::StageStats()
{ {
playMode = PlayMode_Invalid; m_playMode = PlayMode_Invalid;
pStyle = NULL; m_pStyle = NULL;
vpPlayedSongs.clear(); m_vpPlayedSongs.clear();
vpPossibleSongs.clear(); m_vpPossibleSongs.clear();
StageType = Stage_Invalid; m_StageType = Stage_Invalid;
bGaveUp = false; m_bGaveUp = false;
bUsedAutoplay = false; m_bUsedAutoplay = false;
fGameplaySeconds = 0; m_fGameplaySeconds = 0;
fStepsSeconds = 0; m_fStepsSeconds = 0;
fMusicRate = 1; m_fMusicRate = 1;
} }
void StageStats::Init() void StageStats::Init()
@@ -37,32 +37,32 @@ void StageStats::Init()
void StageStats::AssertValid( PlayerNumber pn ) const void StageStats::AssertValid( PlayerNumber pn ) const
{ {
ASSERT( vpPlayedSongs.size() != 0 ); ASSERT( m_vpPlayedSongs.size() != 0 );
ASSERT( vpPossibleSongs.size() != 0 ); ASSERT( m_vpPossibleSongs.size() != 0 );
if( vpPlayedSongs[0] ) if( m_vpPlayedSongs[0] )
CHECKPOINT_M( vpPlayedSongs[0]->GetTranslitFullTitle() ); CHECKPOINT_M( m_vpPlayedSongs[0]->GetTranslitFullTitle() );
ASSERT( m_player[pn].vpPlayedSteps.size() != 0 ); ASSERT( m_player[pn].m_vpPlayedSteps.size() != 0 );
ASSERT( m_player[pn].vpPlayedSteps[0] ); ASSERT( m_player[pn].m_vpPlayedSteps[0] );
ASSERT_M( playMode < NUM_PlayMode, ssprintf("playmode %i", playMode) ); ASSERT_M( m_playMode < NUM_PlayMode, ssprintf("playmode %i", m_playMode) );
ASSERT( pStyle != NULL ); ASSERT( m_pStyle != NULL );
ASSERT_M( m_player[pn].vpPlayedSteps[0]->GetDifficulty() < NUM_Difficulty, ssprintf("difficulty %i", m_player[pn].vpPlayedSteps[0]->GetDifficulty()) ); ASSERT_M( m_player[pn].m_vpPlayedSteps[0]->GetDifficulty() < NUM_Difficulty, ssprintf("difficulty %i", m_player[pn].m_vpPlayedSteps[0]->GetDifficulty()) );
ASSERT( vpPlayedSongs.size() == m_player[pn].vpPlayedSteps.size() ); ASSERT( m_vpPlayedSongs.size() == m_player[pn].m_vpPlayedSteps.size() );
ASSERT( vpPossibleSongs.size() == m_player[pn].vpPossibleSteps.size() ); ASSERT( m_vpPossibleSongs.size() == m_player[pn].m_vpPossibleSteps.size() );
} }
void StageStats::AssertValid( MultiPlayer pn ) const void StageStats::AssertValid( MultiPlayer pn ) const
{ {
ASSERT( vpPlayedSongs.size() != 0 ); ASSERT( m_vpPlayedSongs.size() != 0 );
ASSERT( vpPossibleSongs.size() != 0 ); ASSERT( m_vpPossibleSongs.size() != 0 );
if( vpPlayedSongs[0] ) if( m_vpPlayedSongs[0] )
CHECKPOINT_M( vpPlayedSongs[0]->GetTranslitFullTitle() ); CHECKPOINT_M( m_vpPlayedSongs[0]->GetTranslitFullTitle() );
ASSERT( m_multiPlayer[pn].vpPlayedSteps.size() != 0 ); ASSERT( m_multiPlayer[pn].m_vpPlayedSteps.size() != 0 );
ASSERT( m_multiPlayer[pn].vpPlayedSteps[0] ); ASSERT( m_multiPlayer[pn].m_vpPlayedSteps[0] );
ASSERT_M( playMode < NUM_PlayMode, ssprintf("playmode %i", playMode) ); ASSERT_M( m_playMode < NUM_PlayMode, ssprintf("playmode %i", m_playMode) );
ASSERT( pStyle != NULL ); ASSERT( m_pStyle != NULL );
ASSERT_M( m_player[pn].vpPlayedSteps[0]->GetDifficulty() < NUM_Difficulty, ssprintf("difficulty %i", m_player[pn].vpPlayedSteps[0]->GetDifficulty()) ); ASSERT_M( m_player[pn].m_vpPlayedSteps[0]->GetDifficulty() < NUM_Difficulty, ssprintf("difficulty %i", m_player[pn].m_vpPlayedSteps[0]->GetDifficulty()) );
ASSERT( vpPlayedSongs.size() == m_player[pn].vpPlayedSteps.size() ); ASSERT( m_vpPlayedSongs.size() == m_player[pn].m_vpPlayedSteps.size() );
ASSERT( vpPossibleSongs.size() == m_player[pn].vpPossibleSteps.size() ); ASSERT( m_vpPossibleSongs.size() == m_player[pn].m_vpPossibleSteps.size() );
} }
@@ -74,28 +74,28 @@ int StageStats::GetAverageMeter( PlayerNumber pn ) const
int iTotalMeter = 0; int iTotalMeter = 0;
for( unsigned i=0; i<vpPlayedSongs.size(); i++ ) for( unsigned i=0; i<m_vpPlayedSongs.size(); i++ )
{ {
const Steps* pSteps = m_player[pn].vpPlayedSteps[i]; const Steps* pSteps = m_player[pn].m_vpPlayedSteps[i];
iTotalMeter += pSteps->GetMeter(); iTotalMeter += pSteps->GetMeter();
} }
return iTotalMeter / vpPlayedSongs.size(); // round down return iTotalMeter / m_vpPlayedSongs.size(); // round down
} }
void StageStats::AddStats( const StageStats& other ) void StageStats::AddStats( const StageStats& other )
{ {
ASSERT( !other.vpPlayedSongs.empty() ); ASSERT( !other.m_vpPlayedSongs.empty() );
FOREACH_CONST( Song*, other.vpPlayedSongs, s ) FOREACH_CONST( Song*, other.m_vpPlayedSongs, s )
vpPlayedSongs.push_back( *s ); m_vpPlayedSongs.push_back( *s );
FOREACH_CONST( Song*, other.vpPossibleSongs, s ) FOREACH_CONST( Song*, other.m_vpPossibleSongs, s )
vpPossibleSongs.push_back( *s ); m_vpPossibleSongs.push_back( *s );
StageType = Stage_Invalid; // meaningless m_StageType = Stage_Invalid; // meaningless
bGaveUp |= other.bGaveUp; m_bGaveUp |= other.m_bGaveUp;
bUsedAutoplay |= other.bUsedAutoplay; m_bUsedAutoplay |= other.m_bUsedAutoplay;
fGameplaySeconds += other.fGameplaySeconds; m_fGameplaySeconds += other.m_fGameplaySeconds;
fStepsSeconds += other.fStepsSeconds; m_fStepsSeconds += other.m_fStepsSeconds;
FOREACH_EnabledPlayer( p ) FOREACH_EnabledPlayer( p )
m_player[p].AddStats( other.m_player[p] ); m_player[p].AddStats( other.m_player[p] );
@@ -104,7 +104,7 @@ void StageStats::AddStats( const StageStats& other )
bool StageStats::OnePassed() const bool StageStats::OnePassed() const
{ {
FOREACH_EnabledPlayer( p ) FOREACH_EnabledPlayer( p )
if( !m_player[p].bFailed ) if( !m_player[p].m_bFailed )
return true; return true;
return false; return false;
} }
@@ -112,7 +112,7 @@ bool StageStats::OnePassed() const
bool StageStats::AllFailed() const bool StageStats::AllFailed() const
{ {
FOREACH_EnabledPlayer( p ) FOREACH_EnabledPlayer( p )
if( !m_player[p].bFailed ) if( !m_player[p].m_bFailed )
return false; return false;
return true; return true;
} }
@@ -120,9 +120,9 @@ bool StageStats::AllFailed() const
float StageStats::GetTotalPossibleStepsSeconds() const float StageStats::GetTotalPossibleStepsSeconds() const
{ {
float fSecs = 0; float fSecs = 0;
FOREACH_CONST( Song*, vpPossibleSongs, s ) FOREACH_CONST( Song*, m_vpPossibleSongs, s )
fSecs += (*s)->GetStepsSeconds(); fSecs += (*s)->GetStepsSeconds();
return fSecs / fMusicRate; return fSecs / m_fMusicRate;
} }
void StageStats::CommitScores( bool bSummary ) void StageStats::CommitScores( bool bSummary )
@@ -162,20 +162,20 @@ void StageStats::CommitScores( bool bSummary )
HighScore &hs = m_player[p].m_HighScore; HighScore &hs = m_player[p].m_HighScore;
hs.SetName( RANKING_TO_FILL_IN_MARKER[p] ); hs.SetName( RANKING_TO_FILL_IN_MARKER[p] );
hs.SetGrade( m_player[p].GetGrade() ); hs.SetGrade( m_player[p].GetGrade() );
hs.SetScore( m_player[p].iScore ); hs.SetScore( m_player[p].m_iScore );
hs.SetPercentDP( m_player[p].GetPercentDancePoints() ); hs.SetPercentDP( m_player[p].GetPercentDancePoints() );
hs.SetSurviveSeconds( m_player[p].fAliveSeconds ); hs.SetSurviveSeconds( m_player[p].m_fAliveSeconds );
hs.SetModifiers( GAMESTATE->m_pPlayerState[p]->m_PlayerOptions.GetStage().GetString() ); hs.SetModifiers( GAMESTATE->m_pPlayerState[p]->m_PlayerOptions.GetStage().GetString() );
hs.SetDateTime( DateTime::GetNowDateTime() ); hs.SetDateTime( DateTime::GetNowDateTime() );
hs.SetPlayerGuid( PROFILEMAN->IsPersistentProfile(p) ? PROFILEMAN->GetProfile(p)->m_sGuid : RString("") ); hs.SetPlayerGuid( PROFILEMAN->IsPersistentProfile(p) ? PROFILEMAN->GetProfile(p)->m_sGuid : RString("") );
hs.SetMachineGuid( PROFILEMAN->GetMachineProfile()->m_sGuid ); hs.SetMachineGuid( PROFILEMAN->GetMachineProfile()->m_sGuid );
hs.SetProductID( PREFSMAN->m_iProductID ); hs.SetProductID( PREFSMAN->m_iProductID );
FOREACH_TapNoteScore( tns ) FOREACH_TapNoteScore( tns )
hs.SetTapNoteScore( tns, m_player[p].iTapNoteScores[tns] ); hs.SetTapNoteScore( tns, m_player[p].m_iTapNoteScores[tns] );
FOREACH_HoldNoteScore( hns ) FOREACH_HoldNoteScore( hns )
hs.SetHoldNoteScore( hns, m_player[p].iHoldNoteScores[hns] ); hs.SetHoldNoteScore( hns, m_player[p].m_iHoldNoteScores[hns] );
hs.SetRadarValues( m_player[p].radarActual ); hs.SetRadarValues( m_player[p].m_radarActual );
hs.SetLifeRemainingSeconds( m_player[p].fLifeRemainingSeconds ); hs.SetLifeRemainingSeconds( m_player[p].m_fLifeRemainingSeconds );
} }
FOREACH_HumanPlayer( p ) FOREACH_HumanPlayer( p )
@@ -189,7 +189,7 @@ void StageStats::CommitScores( bool bSummary )
if( bSummary ) if( bSummary )
{ {
// don't save scores if any stage was failed // don't save scores if any stage was failed
if( m_player[p].bFailed ) if( m_player[p].m_bFailed )
continue; continue;
int iAverageMeter = GetAverageMeter(p); int iAverageMeter = GetAverageMeter(p);
@@ -211,7 +211,7 @@ void StageStats::CommitScores( bool bSummary )
else else
{ {
// don't save scores for a failed song // don't save scores for a failed song
if( m_player[p].bFailed ) if( m_player[p].m_bFailed )
continue; continue;
ASSERT( pSteps ); ASSERT( pSteps );
@@ -272,7 +272,7 @@ class LunaStageStats: public Luna<StageStats>
public: public:
static int GetPlayerStageStats( T* p, lua_State *L ) { p->m_player[Enum::Check<PlayerNumber>(L, 1)].PushSelf(L); return 1; } static int GetPlayerStageStats( T* p, lua_State *L ) { p->m_player[Enum::Check<PlayerNumber>(L, 1)].PushSelf(L); return 1; }
static int GetMultiPlayerStageStats( T* p, lua_State *L ) { p->m_multiPlayer[Enum::Check<MultiPlayer>(L, 1)].PushSelf(L); return 1; } static int GetMultiPlayerStageStats( T* p, lua_State *L ) { p->m_multiPlayer[Enum::Check<MultiPlayer>(L, 1)].PushSelf(L); return 1; }
static int GetGameplaySeconds( T* p, lua_State *L ) { lua_pushnumber(L, p->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; }
+10 -10
View File
@@ -26,20 +26,20 @@ public:
int GetAverageMeter( PlayerNumber pn ) const; int GetAverageMeter( PlayerNumber pn ) const;
PlayMode playMode; PlayMode m_playMode;
const Style* pStyle; const Style* m_pStyle;
vector<Song*> vpPlayedSongs; vector<Song*> m_vpPlayedSongs;
vector<Song*> vpPossibleSongs; vector<Song*> m_vpPossibleSongs;
enum { Stage_Invalid, STAGE_NORMAL, STAGE_EXTRA, STAGE_EXTRA2 } StageType; enum { Stage_Invalid, STAGE_NORMAL, STAGE_EXTRA, STAGE_EXTRA2 } m_StageType;
bool bGaveUp; // exited gameplay by giving up bool m_bGaveUp; // exited gameplay by giving up
bool bUsedAutoplay; // used autoplay at any point during gameplay bool m_bUsedAutoplay; // used autoplay at any point during gameplay
// TODO: These are updated in ScreenGameplay::Update based on fDelta. // TODO: These are updated in ScreenGameplay::Update based on fDelta.
// They should be made more accurate. // They should be made more accurate.
float fGameplaySeconds; // how many seconds before gameplay ended. Updated by Gameplay, not scaled by music rate. float m_fGameplaySeconds; // how many seconds before gameplay ended. Updated by Gameplay, not scaled by music rate.
float fStepsSeconds; // this is <= fGameplaySeconds unless the song has steps past the end float m_fStepsSeconds; // this is <= fGameplaySeconds unless the song has steps past the end
float fMusicRate; float m_fMusicRate;
// Total number of seconds between first beat and last beat for every song. // Total number of seconds between first beat and last beat for every song.
float GetTotalPossibleStepsSeconds() const; float GetTotalPossibleStepsSeconds() const;
+30 -30
View File
@@ -45,14 +45,14 @@ static StageStats AccumPlayedStageStats( const vector<StageStats>& vss )
if( !vss.empty() ) if( !vss.empty() )
{ {
ssreturn.pStyle = vss[0].pStyle; ssreturn.m_pStyle = vss[0].m_pStyle;
ssreturn.playMode = vss[0].playMode; ssreturn.m_playMode = vss[0].m_playMode;
} }
FOREACH_CONST( StageStats, vss, ss ) FOREACH_CONST( StageStats, vss, ss )
ssreturn.AddStats( *ss ); ssreturn.AddStats( *ss );
unsigned uNumSongs = ssreturn.vpPlayedSongs.size(); unsigned uNumSongs = ssreturn.m_vpPlayedSongs.size();
if( uNumSongs == 0 ) if( uNumSongs == 0 )
return ssreturn; // don't divide by 0 below return ssreturn; // don't divide by 0 below
@@ -65,16 +65,16 @@ static StageStats AccumPlayedStageStats( const vector<StageStats>& vss )
{ {
for( int r = 0; r < RadarCategory_TapsAndHolds; r++) for( int r = 0; r < RadarCategory_TapsAndHolds; r++)
{ {
ssreturn.m_player[p].radarPossible[r] /= uNumSongs; ssreturn.m_player[p].m_radarPossible[r] /= uNumSongs;
ssreturn.m_player[p].radarActual[r] /= uNumSongs; ssreturn.m_player[p].m_radarActual[r] /= uNumSongs;
} }
} }
FOREACH_EnabledMultiPlayer( p ) FOREACH_EnabledMultiPlayer( p )
{ {
for( int r = 0; r < RadarCategory_TapsAndHolds; r++) for( int r = 0; r < RadarCategory_TapsAndHolds; r++)
{ {
ssreturn.m_multiPlayer[p].radarPossible[r] /= uNumSongs; ssreturn.m_multiPlayer[p].m_radarPossible[r] /= uNumSongs;
ssreturn.m_multiPlayer[p].radarActual[r] /= uNumSongs; ssreturn.m_multiPlayer[p].m_radarActual[r] /= uNumSongs;
} }
} }
return ssreturn; return ssreturn;
@@ -95,7 +95,7 @@ void StatsManager::GetFinalEvalStageStats( StageStats& statsOut ) const
if( !ss.OnePassed() ) if( !ss.OnePassed() )
continue; continue;
if( ss.StageType == StageStats::STAGE_NORMAL ) if( ss.m_StageType == StageStats::STAGE_NORMAL )
{ {
if( PassedRegularSongsLeft == 0 ) if( PassedRegularSongsLeft == 0 )
break; break;
@@ -122,14 +122,14 @@ void AddPlayerStatsToProfile( Profile *pProfile, const StageStats &ss, PlayerNum
CHECKPOINT; CHECKPOINT;
StyleID sID; StyleID sID;
sID.FromStyle( ss.pStyle ); sID.FromStyle( ss.m_pStyle );
ASSERT( ss.vpPlayedSongs.size() == ss.m_player[pn].vpPlayedSteps.size() ); ASSERT( ss.m_vpPlayedSongs.size() == ss.m_player[pn].m_vpPlayedSteps.size() );
for( unsigned i=0; i<ss.vpPlayedSongs.size(); i++ ) for( unsigned i=0; i<ss.m_vpPlayedSongs.size(); i++ )
{ {
Steps *pSteps = ss.m_player[pn].vpPlayedSteps[i]; Steps *pSteps = ss.m_player[pn].m_vpPlayedSteps[i];
pProfile->m_iNumSongsPlayedByPlayMode[ss.playMode]++; pProfile->m_iNumSongsPlayedByPlayMode[ss.m_playMode]++;
pProfile->m_iNumSongsPlayedByStyle[sID] ++; pProfile->m_iNumSongsPlayedByStyle[sID] ++;
pProfile->m_iNumSongsPlayedByDifficulty[pSteps->GetDifficulty()] ++; pProfile->m_iNumSongsPlayedByDifficulty[pSteps->GetDifficulty()] ++;
@@ -137,11 +137,11 @@ void AddPlayerStatsToProfile( Profile *pProfile, const StageStats &ss, PlayerNum
pProfile->m_iNumSongsPlayedByMeter[iMeter] ++; pProfile->m_iNumSongsPlayedByMeter[iMeter] ++;
} }
pProfile->m_iTotalDancePoints += ss.m_player[pn].iActualDancePoints; pProfile->m_iTotalDancePoints += ss.m_player[pn].m_iActualDancePoints;
if( ss.StageType == StageStats::STAGE_EXTRA || ss.StageType == StageStats::STAGE_EXTRA2 ) if( ss.m_StageType == StageStats::STAGE_EXTRA || ss.m_StageType == StageStats::STAGE_EXTRA2 )
{ {
if( ss.m_player[pn].bFailed ) if( ss.m_player[pn].m_bFailed )
++pProfile->m_iNumExtraStagesFailed; ++pProfile->m_iNumExtraStagesFailed;
else else
++pProfile->m_iNumExtraStagesPassed; ++pProfile->m_iNumExtraStagesPassed;
@@ -149,9 +149,9 @@ void AddPlayerStatsToProfile( Profile *pProfile, const StageStats &ss, PlayerNum
// If you fail in a course, you passed all but the final song. // If you fail in a course, you passed all but the final song.
// FIXME: Not true. If playing with 2 players, one player could have failed earlier. // FIXME: Not true. If playing with 2 players, one player could have failed earlier.
if( !ss.m_player[pn].bFailed ) if( !ss.m_player[pn].m_bFailed )
{ {
pProfile->m_iNumStagesPassedByPlayMode[ss.playMode] ++; pProfile->m_iNumStagesPassedByPlayMode[ss.m_playMode] ++;
pProfile->m_iNumStagesPassedByGrade[ss.m_player[pn].GetGrade()] ++; pProfile->m_iNumStagesPassedByGrade[ss.m_player[pn].GetGrade()] ++;
} }
} }
@@ -166,24 +166,24 @@ void StatsManager::CommitStatsToProfiles()
// //
FOREACH_HumanPlayer( pn ) FOREACH_HumanPlayer( pn )
{ {
int iNumTapsAndHolds = (int) m_CurStageStats.m_player[pn].radarActual[RadarCategory_TapsAndHolds]; int iNumTapsAndHolds = (int) m_CurStageStats.m_player[pn].m_radarActual[RadarCategory_TapsAndHolds];
int iNumJumps = (int) m_CurStageStats.m_player[pn].radarActual[RadarCategory_Jumps]; int iNumJumps = (int) m_CurStageStats.m_player[pn].m_radarActual[RadarCategory_Jumps];
int iNumHolds = (int) m_CurStageStats.m_player[pn].radarActual[RadarCategory_Holds]; int iNumHolds = (int) m_CurStageStats.m_player[pn].m_radarActual[RadarCategory_Holds];
int iNumRolls = (int) m_CurStageStats.m_player[pn].radarActual[RadarCategory_Rolls]; int iNumRolls = (int) m_CurStageStats.m_player[pn].m_radarActual[RadarCategory_Rolls];
int iNumMines = (int) m_CurStageStats.m_player[pn].radarActual[RadarCategory_Mines]; int iNumMines = (int) m_CurStageStats.m_player[pn].m_radarActual[RadarCategory_Mines];
int iNumHands = (int) m_CurStageStats.m_player[pn].radarActual[RadarCategory_Hands]; int iNumHands = (int) m_CurStageStats.m_player[pn].m_radarActual[RadarCategory_Hands];
float fCaloriesBurned = m_CurStageStats.m_player[pn].fCaloriesBurned; float fCaloriesBurned = m_CurStageStats.m_player[pn].m_fCaloriesBurned;
PROFILEMAN->AddStepTotals( pn, iNumTapsAndHolds, iNumJumps, iNumHolds, iNumRolls, iNumMines, iNumHands, fCaloriesBurned ); PROFILEMAN->AddStepTotals( pn, iNumTapsAndHolds, iNumJumps, iNumHolds, iNumRolls, iNumMines, iNumHands, fCaloriesBurned );
} }
// Update profile stats // Update profile stats
Profile* pMachineProfile = PROFILEMAN->GetMachineProfile(); Profile* pMachineProfile = PROFILEMAN->GetMachineProfile();
int iGameplaySeconds = (int)truncf(m_CurStageStats.fGameplaySeconds); int iGameplaySeconds = (int)truncf(m_CurStageStats.m_fGameplaySeconds);
pMachineProfile->m_iTotalGameplaySeconds += iGameplaySeconds; pMachineProfile->m_iTotalGameplaySeconds += iGameplaySeconds;
pMachineProfile->m_iCurrentCombo = 0; pMachineProfile->m_iCurrentCombo = 0;
pMachineProfile->m_iNumTotalSongsPlayed += m_CurStageStats.vpPlayedSongs.size(); pMachineProfile->m_iNumTotalSongsPlayed += m_CurStageStats.m_vpPlayedSongs.size();
CHECKPOINT; CHECKPOINT;
FOREACH_HumanPlayer( pn ) FOREACH_HumanPlayer( pn )
@@ -196,9 +196,9 @@ void StatsManager::CommitStatsToProfiles()
pPlayerProfile->m_iTotalGameplaySeconds += iGameplaySeconds; pPlayerProfile->m_iTotalGameplaySeconds += iGameplaySeconds;
pPlayerProfile->m_iCurrentCombo = pPlayerProfile->m_iCurrentCombo =
PREFSMAN->m_bComboContinuesBetweenSongs ? PREFSMAN->m_bComboContinuesBetweenSongs ?
m_CurStageStats.m_player[pn].iCurCombo : m_CurStageStats.m_player[pn].m_iCurCombo :
0; 0;
pPlayerProfile->m_iNumTotalSongsPlayed += m_CurStageStats.vpPlayedSongs.size(); pPlayerProfile->m_iNumTotalSongsPlayed += m_CurStageStats.m_vpPlayedSongs.size();
} }
AddPlayerStatsToProfile( pMachineProfile, m_CurStageStats, pn ); AddPlayerStatsToProfile( pMachineProfile, m_CurStageStats, pn );
@@ -265,7 +265,7 @@ public:
bool bPlayerFailedOneStage = false; bool bPlayerFailedOneStage = false;
FOREACH_CONST( StageStats, STATSMAN->m_vPlayedStageStats, ss ) FOREACH_CONST( StageStats, STATSMAN->m_vPlayedStageStats, ss )
{ {
if( ss->m_player[p].bFailed ) if( ss->m_player[p].m_bFailed )
{ {
bPlayerFailedOneStage = true; bPlayerFailedOneStage = true;
break; break;
+2 -2
View File
@@ -43,7 +43,7 @@ void WorkoutGraph::LoadFromNode( const XNode* pNode )
void WorkoutGraph::SetFromGameState() void WorkoutGraph::SetFromGameState()
{ {
SetFromGameStateInternal( STATSMAN->m_CurStageStats.vpPlayedSongs.size() ); SetFromGameStateInternal( STATSMAN->m_CurStageStats.m_vpPlayedSongs.size() );
} }
void WorkoutGraph::SetFromGameStateInternal( int iNumSongsToShowForCurrentStage ) void WorkoutGraph::SetFromGameStateInternal( int iNumSongsToShowForCurrentStage )
@@ -56,7 +56,7 @@ void WorkoutGraph::SetFromGameStateInternal( int iNumSongsToShowForCurrentStage
m_vpBars.clear(); m_vpBars.clear();
int iTotalSongsPlayed = int iTotalSongsPlayed =
STATSMAN->GetAccumPlayedStageStats().vpPlayedSongs.size() + STATSMAN->GetAccumPlayedStageStats().m_vpPlayedSongs.size() +
iNumSongsToShowForCurrentStage; iNumSongsToShowForCurrentStage;
int iWorkoutEstimatedSongs = WORKOUTMAN->m_pCurWorkout->GetEstimatedNumSongs(); int iWorkoutEstimatedSongs = WORKOUTMAN->m_pCurWorkout->GetEstimatedNumSongs();
int iNumSongsToShow = max( iTotalSongsPlayed, iWorkoutEstimatedSongs ); int iNumSongsToShow = max( iTotalSongsPlayed, iWorkoutEstimatedSongs );