save survival life seconds remaining in HighScore

show SurvivalLifeTime in Ranking
This commit is contained in:
Chris Danford
2005-05-08 22:03:41 +00:00
parent 504011ac3f
commit 1cc8d4a859
12 changed files with 66 additions and 45 deletions
+4
View File
@@ -509,6 +509,8 @@ public:
static int zoomto( T* p, lua_State *L ) { p->ZoomTo(FArg(1), FArg(2)); return 0; }
static int zoomtowidth( T* p, lua_State *L ) { p->ZoomToWidth(FArg(1)); return 0; }
static int zoomtoheight( T* p, lua_State *L ) { p->ZoomToHeight(FArg(1)); return 0; }
static int basezoomx( T* p, lua_State *L ) { p->SetBaseZoomX(FArg(1)); return 0; }
static int basezoomy( T* p, lua_State *L ) { p->SetBaseZoomY(FArg(1)); return 0; }
static int stretchto( T* p, lua_State *L ) { p->StretchTo( RectF(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; }
static int cropleft( T* p, lua_State *L ) { p->SetCropLeft(FArg(1)); return 0; }
static int croptop( T* p, lua_State *L ) { p->SetCropTop(FArg(1)); return 0; }
@@ -628,6 +630,8 @@ public:
ADD_METHOD( zoomto )
ADD_METHOD( zoomtowidth )
ADD_METHOD( zoomtoheight )
ADD_METHOD( basezoomx )
ADD_METHOD( basezoomy )
ADD_METHOD( stretchto )
ADD_METHOD( cropleft )
ADD_METHOD( croptop )
+2 -1
View File
@@ -58,7 +58,7 @@ XNode* HighScore::CreateNode() const
if( hns != HNS_NONE ) // HACK: don't save meaningless "none" count
pHoldNoteScores->AppendChild( HoldNoteScoreToString(hns), iHoldNoteScores[hns] );
pNode->AppendChild( radarValues.CreateNode() );
pNode->AppendChild( "LifeRemainingSeconds", fLifeRemainingSeconds );
return pNode;
}
@@ -94,6 +94,7 @@ void HighScore::LoadFromNode( const XNode* pNode )
const XNode* pRadarValues = pNode->GetChild( "RadarValues" );
if( pRadarValues )
radarValues.LoadFromNode( pRadarValues );
pNode->GetChildValue( "LifeRemainingSeconds", fLifeRemainingSeconds );
/* Validate input. */
grade = clamp( grade, GRADE_TIER01, GRADE_FAILED );
+5
View File
@@ -25,6 +25,7 @@ struct HighScore
int iTapNoteScores[NUM_TAP_NOTE_SCORES];
int iHoldNoteScores[NUM_HOLD_NOTE_SCORES];
RadarValues radarValues;
float fLifeRemainingSeconds;
HighScore() { Unset(); }
void Unset()
@@ -42,6 +43,7 @@ struct HighScore
ZERO( iTapNoteScores );
ZERO( iHoldNoteScores );
radarValues.MakeUnknown();
fLifeRemainingSeconds = 0;
}
bool operator>=( const HighScore& other ) const;
@@ -63,10 +65,13 @@ struct HighScore
FOREACH_HoldNoteScore( hns )
COMPARE( iHoldNoteScores[hns] );
COMPARE( radarValues );
COMPARE( fLifeRemainingSeconds );
#undef COMPARE
return true;
}
float GetSurvivalSeconds() { return fSurviveSeconds + fLifeRemainingSeconds; }
XNode* CreateNode() const;
void LoadFromNode( const XNode* pNode );
+5 -1
View File
@@ -466,11 +466,15 @@ class LunaPlayerStageStats : public Luna<T>
public:
LunaPlayerStageStats() { LUA->Register( Register ); }
static int GetCaloriesBurned( T* p, lua_State *L ) { lua_pushnumber(L, p->fCaloriesBurned ); return 1; }
static int GetCaloriesBurned( T* p, lua_State *L ) { lua_pushnumber(L, p->fCaloriesBurned ); return 1; }
static int GetLifeRemainingSeconds( T* p, lua_State *L ) { lua_pushnumber(L, p->fLifeRemainingSeconds); return 1; }
static int GetSurvivalSeconds( T* p, lua_State *L ) { lua_pushnumber(L, p->GetSurvivalSeconds()); return 1; }
static void Register(lua_State *L)
{
ADD_METHOD( GetCaloriesBurned )
ADD_METHOD( GetLifeRemainingSeconds )
ADD_METHOD( GetSurvivalSeconds )
Luna<T>::Register( L );
}
};
+2
View File
@@ -96,6 +96,8 @@ struct PlayerStageStats
void UpdateComboList( float fSecond, bool rollover );
Combo_t GetMaxCombo() const;
float GetSurvivalSeconds() { return fAliveSeconds + fLifeRemainingSeconds; }
// Lua
void PushSelf( lua_State *L );
};
+13
View File
@@ -138,6 +138,19 @@ CString SecondsToMMSSMsMs( float fSecs )
return sReturn;
}
CString SecondsToMSSMsMs( float fSecs )
{
const int iMinsDisplay = (int)fSecs/60;
const int iSecsDisplay = (int)fSecs - iMinsDisplay*60;
const int iLeftoverDisplay = (int) ( (fSecs - iMinsDisplay*60 - iSecsDisplay) * 100 );
CString sReturn = ssprintf( "%01d:%02d.%02d", iMinsDisplay, iSecsDisplay, min(99,iLeftoverDisplay) );
return sReturn;
}
#include "LuaFunctions.h"
#include "LuaManager.h"
LuaFunction_Float( SecondsToMSSMsMs, SecondsToMSSMsMs(a1) )
CString SecondsToMMSSMsMsMs( float fSecs )
{
const int iMinsDisplay = (int)fSecs/60;
+1
View File
@@ -213,6 +213,7 @@ bool IsAnInt( const CString &s );
bool IsHexVal( const CString &s );
float HHMMSSToSeconds( const CString &sHMS );
CString SecondsToHHMMSS( float fSecs );
CString SecondsToMSSMsMs( float fSecs );
CString SecondsToMMSSMsMs( float fSecs );
CString SecondsToMMSSMsMsMs( float fSecs );
CString PrettyPercent( float fNumerator, float fDenominator );
+1 -2
View File
@@ -67,8 +67,7 @@ void ScoreDisplayLifeTime::Update( float fDelta )
float fSecs = STATSMAN->m_CurStageStats.m_player[m_pPlayerState->m_PlayerNumber].fLifeRemainingSeconds;
CString s = SecondsToMMSSMsMs(fSecs);
s.erase( s.begin() ); // erase first digit
CString s = SecondsToMSSMsMs(fSecs);
m_textTimeRemaining.SetText( s );
}
+26 -40
View File
@@ -136,48 +136,32 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName ) : ScreenWithMenuElement
STATSMAN->m_CurStageStats.m_player[PLAYER_2].SetLifeRecordAt( 1-fP1, f );
}
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iActualDancePoints = rand()%3;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iPossibleDancePoints = 2;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iActualDancePoints = rand()%2;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iPossibleDancePoints = 1;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iCurCombo = 0;
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].UpdateComboList( 1, false );
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iCurCombo = 50;
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].UpdateComboList( 100, false );
if( rand()%2 )
FOREACH_PlayerNumber( p )
{
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iCurCombo = rand()%11000;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].UpdateComboList( 110, false );
STATSMAN->m_CurStageStats.m_player[p].iActualDancePoints = rand()%3;
STATSMAN->m_CurStageStats.m_player[p].iPossibleDancePoints = 2;
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 0;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 0, false );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 1;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 1, false );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 50;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 25, false );
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = 250;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 100, false );
if( rand()%2 )
{
STATSMAN->m_CurStageStats.m_player[p].iCurCombo = rand()%11000;
STATSMAN->m_CurStageStats.m_player[p].UpdateComboList( 110, false );
}
if( rand()%5 == 0 )
{
STATSMAN->m_CurStageStats.m_player[p].bFailedEarlier = true;
}
STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_MARVELOUS] = rand()%3;
STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_PERFECT] = rand()%3;
STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_GREAT] = rand()%3;
STATSMAN->m_CurStageStats.m_player[p].fLifeRemainingSeconds = randomf( 90, 580 );
}
if( rand()%5 == 0 )
{
STATSMAN->m_CurStageStats.m_player[PLAYER_1].bFailedEarlier = true;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].bFailedEarlier = true;
}
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iCurCombo = 0;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].UpdateComboList( 0, false );
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iCurCombo = 1;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].UpdateComboList( 1, false );
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iCurCombo = 50;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].UpdateComboList( 25, false );
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iCurCombo = 250;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].UpdateComboList( 100, false );
if( rand()%2 )
{
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iCurCombo = rand()%11000;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].UpdateComboList( 110, false );
}
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iTapNoteScores[TNS_MARVELOUS] = rand()%3;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iTapNoteScores[TNS_PERFECT] = rand()%3;
STATSMAN->m_CurStageStats.m_player[PLAYER_1].iTapNoteScores[TNS_GREAT] = rand()%3;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iTapNoteScores[TNS_MARVELOUS] = rand()%3;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iTapNoteScores[TNS_PERFECT] = rand()%3;
STATSMAN->m_CurStageStats.m_player[PLAYER_2].iTapNoteScores[TNS_GREAT] = rand()%3;
STATSMAN->m_vPlayedStageStats.clear();
}
@@ -938,6 +922,8 @@ void ScreenEvaluation::CommitScores(
memcpy( hs.iTapNoteScores, stageStats.m_player[p].iTapNoteScores, sizeof(hs.iTapNoteScores) );
memcpy( hs.iHoldNoteScores, stageStats.m_player[p].iHoldNoteScores, sizeof(hs.iHoldNoteScores) );
hs.radarValues = stageStats.m_player[p].radarActual;
hs.fLifeRemainingSeconds = stageStats.m_player[p].fLifeRemainingSeconds;
StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType;
+1 -1
View File
@@ -2375,7 +2375,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
}
else if( SM == SM_StartLoadingNextSong )
{
{
m_pSoundMusic->Stop();
/* Next song. */
+5
View File
@@ -119,6 +119,7 @@ ScreenRanking::ScreenRanking( CString sClassName ) : ScreenAttract( sClassName )
SONG_SCORE_ROWS_TO_SHOW (m_sName,"SongScoreRowsToShow"),
SONG_SCORE_SECONDS_PER_ROW (m_sName,"SongScoreSecondsPerRow"),
MANUAL_SCROLLING (m_sName,"ManualScroling"),
SHOW_SURVIVAL_TIME (m_sName,"ShowSurvivalTime"),
BULLET_START_X (m_sName,"BulletStartX"),
BULLET_START_Y (m_sName,"BulletStartY"),
@@ -871,6 +872,8 @@ float ScreenRanking::SetPage( PageToShow pts )
}
CString s = hs.GetDisplayName() + "\n" + PercentageDisplay::FormatPercentScore( hs.fPercentDP );
if( SHOW_SURVIVAL_TIME )
s += " " + SecondsToMSSMsMs(hs.GetSurvivalSeconds());
pTextStepsScore->SetText( s );
}
}
@@ -914,6 +917,8 @@ float ScreenRanking::SetPage( PageToShow pts )
}
CString s = hs.GetDisplayName() + "\n" + PercentageDisplay::FormatPercentScore( hs.fPercentDP );
if( SHOW_SURVIVAL_TIME )
s += " " + SecondsToMSSMsMs(hs.GetSurvivalSeconds());
pTextStepsScore->SetText( s );
}
}
+1
View File
@@ -126,6 +126,7 @@ protected:
ThemeMetric<int> SONG_SCORE_ROWS_TO_SHOW;
ThemeMetric<float> SONG_SCORE_SECONDS_PER_ROW;
ThemeMetric<bool> MANUAL_SCROLLING;
ThemeMetric<bool> SHOW_SURVIVAL_TIME;
ThemeMetric<float> BULLET_START_X;
ThemeMetric<float> BULLET_START_Y;