Bring default's changes in.
Hopefully I also handled mac's arch_setup right.
This commit is contained in:
@@ -572,6 +572,7 @@ MinScoreToMaintainCombo=ComboMaintain()
|
|||||||
MaxScoreToIncrementMissCombo='TapNoteScore_Miss'
|
MaxScoreToIncrementMissCombo='TapNoteScore_Miss'
|
||||||
MineHitIncrementsMissCombo=false
|
MineHitIncrementsMissCombo=false
|
||||||
AvoidMineIncrementsCombo=false
|
AvoidMineIncrementsCombo=false
|
||||||
|
UseInternalScoring=true
|
||||||
# When you hit it, you know.
|
# When you hit it, you know.
|
||||||
ToastyTriggersAt=250
|
ToastyTriggersAt=250
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -741,8 +741,6 @@ void Font::Load( const RString &sIniPath, RString sChars )
|
|||||||
{
|
{
|
||||||
const RString &sTexturePath = asTexturePaths[i];
|
const RString &sTexturePath = asTexturePaths[i];
|
||||||
|
|
||||||
FontPage *pPage = new FontPage;
|
|
||||||
|
|
||||||
// Grab the page name, eg "foo" from "Normal [foo].png".
|
// Grab the page name, eg "foo" from "Normal [foo].png".
|
||||||
RString sPagename = GetPageNameFromFileName( sTexturePath );
|
RString sPagename = GetPageNameFromFileName( sTexturePath );
|
||||||
|
|
||||||
@@ -750,6 +748,9 @@ void Font::Load( const RString &sIniPath, RString sChars )
|
|||||||
if( sTexturePath.find("-stroke") != string::npos )
|
if( sTexturePath.find("-stroke") != string::npos )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// Create this down here so it doesn't leak if the continue gets triggered.
|
||||||
|
FontPage *pPage = new FontPage;
|
||||||
|
|
||||||
// Load settings for this page from the INI.
|
// Load settings for this page from the INI.
|
||||||
FontPageSettings cfg;
|
FontPageSettings cfg;
|
||||||
LoadFontPageSettings( cfg, ini, sTexturePath, "common", sChars );
|
LoadFontPageSettings( cfg, ini, sTexturePath, "common", sChars );
|
||||||
|
|||||||
@@ -48,6 +48,12 @@ LifeMeterTime::LifeMeterTime()
|
|||||||
{
|
{
|
||||||
m_fLifeTotalGainedSeconds = 0;
|
m_fLifeTotalGainedSeconds = 0;
|
||||||
m_fLifeTotalLostSeconds = 0;
|
m_fLifeTotalLostSeconds = 0;
|
||||||
|
m_pStream = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
LifeMeterTime::~LifeMeterTime()
|
||||||
|
{
|
||||||
|
delete m_pStream;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LifeMeterTime::Load( const PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats )
|
void LifeMeterTime::Load( const PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats )
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ class LifeMeterTime : public LifeMeter
|
|||||||
public:
|
public:
|
||||||
LifeMeterTime();
|
LifeMeterTime();
|
||||||
|
|
||||||
|
virtual ~LifeMeterTime();
|
||||||
|
|
||||||
virtual void Load( const PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats );
|
virtual void Load( const PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats );
|
||||||
|
|
||||||
virtual void Update( float fDeltaTime );
|
virtual void Update( float fDeltaTime );
|
||||||
|
|||||||
@@ -22,6 +22,11 @@ MenuTimer::MenuTimer()
|
|||||||
WARNING_COMMAND = NULL;
|
WARNING_COMMAND = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MenuTimer::~MenuTimer()
|
||||||
|
{
|
||||||
|
delete WARNING_COMMAND;
|
||||||
|
}
|
||||||
|
|
||||||
void MenuTimer::Load( RString sMetricsGroup )
|
void MenuTimer::Load( RString sMetricsGroup )
|
||||||
{
|
{
|
||||||
m_sprFrame.Load( THEME->GetPathG(sMetricsGroup, "Frame") );
|
m_sprFrame.Load( THEME->GetPathG(sMetricsGroup, "Frame") );
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ class MenuTimer : public ActorFrame
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MenuTimer();
|
MenuTimer();
|
||||||
|
virtual ~MenuTimer();
|
||||||
void Load( RString sMetricsGroup );
|
void Load( RString sMetricsGroup );
|
||||||
|
|
||||||
virtual void Update( float fDeltaTime );
|
virtual void Update( float fDeltaTime );
|
||||||
|
|||||||
+68
-63
@@ -89,6 +89,7 @@ void ScoreKeeperNormal::Load(
|
|||||||
m_MaxScoreToIncrementMissCombo.Load( "Gameplay", "MaxScoreToIncrementMissCombo" );
|
m_MaxScoreToIncrementMissCombo.Load( "Gameplay", "MaxScoreToIncrementMissCombo" );
|
||||||
m_MineHitIncrementsMissCombo.Load( "Gameplay", "MineHitIncrementsMissCombo" );
|
m_MineHitIncrementsMissCombo.Load( "Gameplay", "MineHitIncrementsMissCombo" );
|
||||||
m_AvoidMineIncrementsCombo.Load( "Gameplay", "AvoidMineIncrementsCombo" );
|
m_AvoidMineIncrementsCombo.Load( "Gameplay", "AvoidMineIncrementsCombo" );
|
||||||
|
m_UseInternalScoring.Load( "Gameplay", "UseInternalScoring" );
|
||||||
|
|
||||||
// Toasty triggers (idea from 3.9+)
|
// Toasty triggers (idea from 3.9+)
|
||||||
// Multiple toasty support doesn't seem to be working right now.
|
// Multiple toasty support doesn't seem to be working right now.
|
||||||
@@ -299,76 +300,80 @@ void ScoreKeeperNormal::HandleTapScoreNone()
|
|||||||
|
|
||||||
void ScoreKeeperNormal::AddScoreInternal( TapNoteScore score )
|
void ScoreKeeperNormal::AddScoreInternal( TapNoteScore score )
|
||||||
{
|
{
|
||||||
int &iScore = m_pPlayerStageStats->m_iScore;
|
if( m_UseInternalScoring )
|
||||||
int &iCurMaxScore = m_pPlayerStageStats->m_iCurMaxScore;
|
|
||||||
|
|
||||||
// See Aaron In Japan for more details about the scoring formulas.
|
|
||||||
// Note: this assumes no custom scoring systems are in use.
|
|
||||||
int p = 0; // score multiplier
|
|
||||||
|
|
||||||
switch( score )
|
|
||||||
{
|
{
|
||||||
case TNS_W1: p = 10; break;
|
|
||||||
case TNS_W2: p = GAMESTATE->ShowW1()? 9:10; break;
|
|
||||||
case TNS_W3: p = 5; break;
|
|
||||||
default: p = 0; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_iTapNotesHit++;
|
int &iScore = m_pPlayerStageStats->m_iScore;
|
||||||
|
int &iCurMaxScore = m_pPlayerStageStats->m_iCurMaxScore;
|
||||||
|
|
||||||
const int N = m_iNumTapsAndHolds;
|
// See Aaron In Japan for more details about the scoring formulas.
|
||||||
const int sum = (N * (N + 1)) / 2;
|
// Note: this assumes no custom scoring systems are in use.
|
||||||
const int Z = m_iMaxPossiblePoints/10;
|
int p = 0; // score multiplier
|
||||||
|
|
||||||
// Don't use a multiplier if the player has failed
|
switch( score )
|
||||||
if( m_pPlayerStageStats->m_bFailed )
|
|
||||||
{
|
|
||||||
iScore += p;
|
|
||||||
// make score evenly divisible by 5
|
|
||||||
// only update this on the next step, to make it less *obvious*
|
|
||||||
/* Round to the nearest 5, instead of always rounding down, so a base score
|
|
||||||
* of 9 will round to 10, not 5. */
|
|
||||||
if (p > 0)
|
|
||||||
iScore = ((iScore+2) / 5) * 5;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iScore += GetScore(p, Z, sum, m_iTapNotesHit);
|
|
||||||
const int &iCurrentCombo = m_pPlayerStageStats->m_iCurCombo;
|
|
||||||
iScore += m_ComboBonusFactor[score] * iCurrentCombo;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Subtract the maximum this step could have been worth from the bonus.
|
|
||||||
m_iPointBonus -= GetScore(10, Z, sum, m_iTapNotesHit);
|
|
||||||
// And add the maximum this step could have been worth to the max score up to now.
|
|
||||||
iCurMaxScore += GetScore(10, Z, sum, m_iTapNotesHit);
|
|
||||||
|
|
||||||
if ( m_iTapNotesHit == m_iNumTapsAndHolds && score >= TNS_W2 )
|
|
||||||
{
|
|
||||||
if( !m_pPlayerStageStats->m_bFailed )
|
|
||||||
iScore += m_iPointBonus;
|
|
||||||
if ( m_bIsLastSongInCourse )
|
|
||||||
{
|
{
|
||||||
iScore += 100000000 - m_iMaxScoreSoFar;
|
case TNS_W1: p = 10; break;
|
||||||
iCurMaxScore += 100000000 - m_iMaxScoreSoFar;
|
case TNS_W2: p = GAMESTATE->ShowW1()? 9:10; break;
|
||||||
|
case TNS_W3: p = 5; break;
|
||||||
/* If we're in Endless mode, we'll come around here again, so reset
|
default: p = 0; break;
|
||||||
* the bonus counter. */
|
|
||||||
m_iMaxScoreSoFar = 0;
|
|
||||||
}
|
}
|
||||||
iCurMaxScore += m_iPointBonus;
|
|
||||||
|
m_iTapNotesHit++;
|
||||||
|
|
||||||
|
const int N = m_iNumTapsAndHolds;
|
||||||
|
const int sum = (N * (N + 1)) / 2;
|
||||||
|
const int Z = m_iMaxPossiblePoints/10;
|
||||||
|
|
||||||
|
// Don't use a multiplier if the player has failed
|
||||||
|
if( m_pPlayerStageStats->m_bFailed )
|
||||||
|
{
|
||||||
|
iScore += p;
|
||||||
|
// make score evenly divisible by 5
|
||||||
|
// only update this on the next step, to make it less *obvious*
|
||||||
|
/* Round to the nearest 5, instead of always rounding down, so a base score
|
||||||
|
* of 9 will round to 10, not 5. */
|
||||||
|
if (p > 0)
|
||||||
|
iScore = ((iScore+2) / 5) * 5;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iScore += GetScore(p, Z, sum, m_iTapNotesHit);
|
||||||
|
const int &iCurrentCombo = m_pPlayerStageStats->m_iCurCombo;
|
||||||
|
iScore += m_ComboBonusFactor[score] * iCurrentCombo;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subtract the maximum this step could have been worth from the bonus.
|
||||||
|
m_iPointBonus -= GetScore(10, Z, sum, m_iTapNotesHit);
|
||||||
|
// And add the maximum this step could have been worth to the max score up to now.
|
||||||
|
iCurMaxScore += GetScore(10, Z, sum, m_iTapNotesHit);
|
||||||
|
|
||||||
|
if ( m_iTapNotesHit == m_iNumTapsAndHolds && score >= TNS_W2 )
|
||||||
|
{
|
||||||
|
if( !m_pPlayerStageStats->m_bFailed )
|
||||||
|
iScore += m_iPointBonus;
|
||||||
|
if ( m_bIsLastSongInCourse )
|
||||||
|
{
|
||||||
|
iScore += 100000000 - m_iMaxScoreSoFar;
|
||||||
|
iCurMaxScore += 100000000 - m_iMaxScoreSoFar;
|
||||||
|
|
||||||
|
/* If we're in Endless mode, we'll come around here again, so reset
|
||||||
|
* the bonus counter. */
|
||||||
|
m_iMaxScoreSoFar = 0;
|
||||||
|
}
|
||||||
|
iCurMaxScore += m_iPointBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSERT_M( iScore >= 0, "iScore < 0 before re-rounding" );
|
||||||
|
|
||||||
|
// Undo rounding from the last tap, and re-round.
|
||||||
|
iScore += m_iScoreRemainder;
|
||||||
|
m_iScoreRemainder = (iScore % m_iRoundTo);
|
||||||
|
iScore = iScore - m_iScoreRemainder;
|
||||||
|
|
||||||
|
ASSERT_M( iScore >= 0, "iScore < 0 after re-rounding" );
|
||||||
|
|
||||||
|
// LOG->Trace( "score: %i", iScore );
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT_M( iScore >= 0, "iScore < 0 before re-rounding" );
|
|
||||||
|
|
||||||
// Undo rounding from the last tap, and re-round.
|
|
||||||
iScore += m_iScoreRemainder;
|
|
||||||
m_iScoreRemainder = (iScore % m_iRoundTo);
|
|
||||||
iScore = iScore - m_iScoreRemainder;
|
|
||||||
|
|
||||||
ASSERT_M( iScore >= 0, "iScore < 0 after re-rounding" );
|
|
||||||
|
|
||||||
// LOG->Trace( "score: %i", iScore );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScoreKeeperNormal::HandleTapScore( const TapNote &tn )
|
void ScoreKeeperNormal::HandleTapScore( const TapNote &tn )
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ class ScoreKeeperNormal: public ScoreKeeper
|
|||||||
ThemeMetric<TapNoteScore> m_MaxScoreToIncrementMissCombo;
|
ThemeMetric<TapNoteScore> m_MaxScoreToIncrementMissCombo;
|
||||||
ThemeMetric<bool> m_MineHitIncrementsMissCombo;
|
ThemeMetric<bool> m_MineHitIncrementsMissCombo;
|
||||||
ThemeMetric<bool> m_AvoidMineIncrementsCombo;
|
ThemeMetric<bool> m_AvoidMineIncrementsCombo;
|
||||||
|
ThemeMetric<bool> m_UseInternalScoring;
|
||||||
|
|
||||||
//ThemeMetric<LuaReference> m_vToastyTriggers;
|
//ThemeMetric<LuaReference> m_vToastyTriggers;
|
||||||
ThemeMetric<int> m_ToastyTrigger;
|
ThemeMetric<int> m_ToastyTrigger;
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ StreamDisplay::StreamDisplay()
|
|||||||
m_fPassingAlpha = 0;
|
m_fPassingAlpha = 0;
|
||||||
m_fHotAlpha = 0;
|
m_fHotAlpha = 0;
|
||||||
m_bAlwaysBounce = false;
|
m_bAlwaysBounce = false;
|
||||||
|
|
||||||
|
m_bDeleteChildren = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StreamDisplay::Load( const RString & /* unreferenced: _sMetricsGroup */)
|
void StreamDisplay::Load( const RString & /* unreferenced: _sMetricsGroup */)
|
||||||
|
|||||||
Reference in New Issue
Block a user