add HandleTapScoreNone() for letting LifeMeters and ScoreKeepers handle TNS_None steps
This commit is contained in:
@@ -19,6 +19,7 @@ public:
|
|||||||
/* Change life after receiving a hold note grade. tscore is the score
|
/* Change life after receiving a hold note grade. tscore is the score
|
||||||
* received for the initial tap note. */
|
* received for the initial tap note. */
|
||||||
virtual void ChangeLife( PlayerNumber pn, HoldNoteScore hns, TapNoteScore tns ) = 0;
|
virtual void ChangeLife( PlayerNumber pn, HoldNoteScore hns, TapNoteScore tns ) = 0;
|
||||||
|
virtual void HandleTapScoreNone( PlayerNumber pn ) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -79,6 +79,11 @@ void CombinedLifeMeterTug::ChangeLife( PlayerNumber pn, TapNoteScore score )
|
|||||||
ChangeLife( pn, fPercentToMove );
|
ChangeLife( pn, fPercentToMove );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CombinedLifeMeterTug::HandleTapScoreNone( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void CombinedLifeMeterTug::ChangeLife( PlayerNumber pn, HoldNoteScore score, TapNoteScore tscore )
|
void CombinedLifeMeterTug::ChangeLife( PlayerNumber pn, HoldNoteScore score, TapNoteScore tscore )
|
||||||
{
|
{
|
||||||
float fPercentToMove = 0;
|
float fPercentToMove = 0;
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ public:
|
|||||||
|
|
||||||
virtual void ChangeLife( PlayerNumber pn, TapNoteScore score );
|
virtual void ChangeLife( PlayerNumber pn, TapNoteScore score );
|
||||||
virtual void ChangeLife( PlayerNumber pn, HoldNoteScore score, TapNoteScore tscore );
|
virtual void ChangeLife( PlayerNumber pn, HoldNoteScore score, TapNoteScore tscore );
|
||||||
|
virtual void HandleTapScoreNone( PlayerNumber pn );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void ChangeLife( PlayerNumber pn, float fPercentToMove );
|
void ChangeLife( PlayerNumber pn, float fPercentToMove );
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ public:
|
|||||||
/* Change life after receiving a hold note grade. tscore is the score
|
/* Change life after receiving a hold note grade. tscore is the score
|
||||||
* received for the initial tap note. */
|
* received for the initial tap note. */
|
||||||
virtual void ChangeLife( HoldNoteScore hns, TapNoteScore tns ) = 0;
|
virtual void ChangeLife( HoldNoteScore hns, TapNoteScore tns ) = 0;
|
||||||
|
virtual void HandleTapScoreNone() = 0;
|
||||||
virtual bool IsInDanger() const = 0;
|
virtual bool IsInDanger() const = 0;
|
||||||
virtual bool IsHot() const = 0;
|
virtual bool IsHot() const = 0;
|
||||||
virtual bool IsFailing() const = 0;
|
virtual bool IsFailing() const = 0;
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ void LifeMeterBar::ChangeLife( TapNoteScore score )
|
|||||||
case TNS_W5: fDeltaLife = g_fLifePercentChange.GetValue(SE_W5); break;
|
case TNS_W5: fDeltaLife = g_fLifePercentChange.GetValue(SE_W5); break;
|
||||||
case TNS_Miss: fDeltaLife = g_fLifePercentChange.GetValue(SE_Miss); break;
|
case TNS_Miss: fDeltaLife = g_fLifePercentChange.GetValue(SE_Miss); break;
|
||||||
case TNS_HitMine: fDeltaLife = g_fLifePercentChange.GetValue(SE_HitMine); break;
|
case TNS_HitMine: fDeltaLife = g_fLifePercentChange.GetValue(SE_HitMine); break;
|
||||||
|
case TNS_None: fDeltaLife = g_fLifePercentChange.GetValue(SE_Miss); break;
|
||||||
}
|
}
|
||||||
if( IsHot() && score < TNS_W4 )
|
if( IsHot() && score < TNS_W4 )
|
||||||
fDeltaLife = -0.10f; // make it take a while to get back to "hot"
|
fDeltaLife = -0.10f; // make it take a while to get back to "hot"
|
||||||
@@ -240,6 +241,13 @@ void LifeMeterBar::ChangeLife( float fDeltaLife )
|
|||||||
AfterLifeChanged();
|
AfterLifeChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern ThemeMetric<bool> PENALIZE_TAP_SCORE_NONE;
|
||||||
|
void LifeMeterBar::HandleTapScoreNone()
|
||||||
|
{
|
||||||
|
if( PENALIZE_TAP_SCORE_NONE )
|
||||||
|
ChangeLife( TNS_None );
|
||||||
|
}
|
||||||
|
|
||||||
void LifeMeterBar::AfterLifeChanged()
|
void LifeMeterBar::AfterLifeChanged()
|
||||||
{
|
{
|
||||||
m_pStream->SetPercent( m_fLifePercentage );
|
m_pStream->SetPercent( m_fLifePercentage );
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public:
|
|||||||
virtual void ChangeLife( TapNoteScore score );
|
virtual void ChangeLife( TapNoteScore score );
|
||||||
virtual void ChangeLife( HoldNoteScore score, TapNoteScore tscore );
|
virtual void ChangeLife( HoldNoteScore score, TapNoteScore tscore );
|
||||||
virtual void ChangeLife( float fDeltaLifePercent );
|
virtual void ChangeLife( float fDeltaLifePercent );
|
||||||
|
virtual void HandleTapScoreNone();
|
||||||
virtual void AfterLifeChanged();
|
virtual void AfterLifeChanged();
|
||||||
virtual bool IsInDanger() const;
|
virtual bool IsInDanger() const;
|
||||||
virtual bool IsHot() const;
|
virtual bool IsHot() const;
|
||||||
|
|||||||
@@ -133,6 +133,11 @@ void LifeMeterBattery::ChangeLife( HoldNoteScore score, TapNoteScore tscore )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LifeMeterBattery::HandleTapScoreNone()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void LifeMeterBattery::ChangeLife( float fDeltaLifePercent )
|
void LifeMeterBattery::ChangeLife( float fDeltaLifePercent )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ public:
|
|||||||
virtual void ChangeLife( TapNoteScore score );
|
virtual void ChangeLife( TapNoteScore score );
|
||||||
virtual void ChangeLife( HoldNoteScore score, TapNoteScore tscore );
|
virtual void ChangeLife( HoldNoteScore score, TapNoteScore tscore );
|
||||||
virtual void ChangeLife( float fDeltaLifePercent );
|
virtual void ChangeLife( float fDeltaLifePercent );
|
||||||
|
virtual void HandleTapScoreNone();
|
||||||
virtual bool IsInDanger() const;
|
virtual bool IsInDanger() const;
|
||||||
virtual bool IsHot() const;
|
virtual bool IsHot() const;
|
||||||
virtual bool IsFailing() const;
|
virtual bool IsFailing() const;
|
||||||
|
|||||||
@@ -154,6 +154,11 @@ void LifeMeterTime::ChangeLife( HoldNoteScore hns, TapNoteScore tns )
|
|||||||
SendLifeChangedMessage( fOldLife, tns, hns );
|
SendLifeChangedMessage( fOldLife, tns, hns );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LifeMeterTime::HandleTapScoreNone()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void LifeMeterTime::SendLifeChangedMessage( float fOldLife, TapNoteScore tns, HoldNoteScore hns )
|
void LifeMeterTime::SendLifeChangedMessage( float fOldLife, TapNoteScore tns, HoldNoteScore hns )
|
||||||
{
|
{
|
||||||
Message msg( "LifeChanged" );
|
Message msg( "LifeChanged" );
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public:
|
|||||||
virtual void OnLoadSong();
|
virtual void OnLoadSong();
|
||||||
virtual void ChangeLife( TapNoteScore score );
|
virtual void ChangeLife( TapNoteScore score );
|
||||||
virtual void ChangeLife( HoldNoteScore score, TapNoteScore tscore );
|
virtual void ChangeLife( HoldNoteScore score, TapNoteScore tscore );
|
||||||
|
virtual void HandleTapScoreNone();
|
||||||
virtual bool IsInDanger() const;
|
virtual bool IsInDanger() const;
|
||||||
virtual bool IsHot() const;
|
virtual bool IsHot() const;
|
||||||
virtual bool IsFailing() const;
|
virtual bool IsFailing() const;
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ protected:
|
|||||||
void HandleHoldScore( const TapNote &tn );
|
void HandleHoldScore( const TapNote &tn );
|
||||||
void DrawTapJudgments();
|
void DrawTapJudgments();
|
||||||
void DrawHoldJudgments();
|
void DrawHoldJudgments();
|
||||||
void SendComboMessage( int iOldCombo, int iOldMissCombo );
|
void SendComboMessages( int iOldCombo, int iOldMissCombo );
|
||||||
|
|
||||||
void SetJudgment( TapNoteScore tns, bool bEarly );
|
void SetJudgment( TapNoteScore tns, bool bEarly );
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ public:
|
|||||||
virtual void HandleTapScore( const TapNote &tn ) = 0;
|
virtual void HandleTapScore( const TapNote &tn ) = 0;
|
||||||
virtual void HandleTapRowScore( const NoteData &nd, int iRow ) = 0;
|
virtual void HandleTapRowScore( const NoteData &nd, int iRow ) = 0;
|
||||||
virtual void HandleHoldScore( const TapNote &tn ) = 0;
|
virtual void HandleHoldScore( const TapNote &tn ) = 0;
|
||||||
|
virtual void HandleTapScoreNone() = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void GetScoreOfLastTapInRow( const NoteData &nd, int iRow, TapNoteScore &tnsOut, int &iNumTapsInRowOut );
|
void GetScoreOfLastTapInRow( const NoteData &nd, int iRow, TapNoteScore &tnsOut, int &iNumTapsInRowOut );
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ void ScoreKeeperNormal::Load(
|
|||||||
ASSERT( apSongs.size() == asModifiers.size() );
|
ASSERT( apSongs.size() == asModifiers.size() );
|
||||||
|
|
||||||
/* True if a jump is one to combo, false if combo is purely based on tap count. */
|
/* True if a jump is one to combo, false if combo is purely based on tap count. */
|
||||||
m_bComboIsPerRow = THEME->GetMetricB( "Gameplay", "ComboIsPerRow" );
|
m_ComboIsPerRow.Load( "Gameplay", "ComboIsPerRow" );
|
||||||
m_MinScoreToContinueCombo.Load( "Gameplay", "MinScoreToContinueCombo" );
|
m_MinScoreToContinueCombo.Load( "Gameplay", "MinScoreToContinueCombo" );
|
||||||
m_MinScoreToMaintainCombo.Load( "Gameplay", "MinScoreToMaintainCombo" );
|
m_MinScoreToMaintainCombo.Load( "Gameplay", "MinScoreToMaintainCombo" );
|
||||||
|
|
||||||
@@ -279,6 +279,23 @@ void ScoreKeeperNormal::AddTapRowScore( TapNoteScore score, const NoteData &nd,
|
|||||||
AddScoreInternal( score );
|
AddScoreInternal( score );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern ThemeMetric<bool> PENALIZE_TAP_SCORE_NONE;
|
||||||
|
void ScoreKeeperNormal::HandleTapScoreNone()
|
||||||
|
{
|
||||||
|
if( PENALIZE_TAP_SCORE_NONE )
|
||||||
|
{
|
||||||
|
m_pPlayerStageStats->m_iCurCombo = 0;
|
||||||
|
|
||||||
|
if( m_pPlayerState->m_PlayerNumber != PLAYER_INVALID )
|
||||||
|
MESSAGEMAN->Broadcast( enum_add2(Message_CurrentComboChangedP1,m_pPlayerState->m_PlayerNumber) );
|
||||||
|
|
||||||
|
AddScoreInternal( TNS_Miss );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: networking code
|
||||||
|
}
|
||||||
|
|
||||||
void ScoreKeeperNormal::AddScoreInternal( TapNoteScore score )
|
void ScoreKeeperNormal::AddScoreInternal( TapNoteScore score )
|
||||||
{
|
{
|
||||||
int &iScore = m_pPlayerStageStats->m_iScore;
|
int &iScore = m_pPlayerStageStats->m_iScore;
|
||||||
@@ -439,7 +456,7 @@ void ScoreKeeperNormal::HandleTapRowScore( const NoteData &nd, int iRow )
|
|||||||
//
|
//
|
||||||
// Regular combo
|
// Regular combo
|
||||||
//
|
//
|
||||||
const int iComboCountIfHit = m_bComboIsPerRow? 1: iNumTapsInRow;
|
const int iComboCountIfHit = m_ComboIsPerRow? 1: iNumTapsInRow;
|
||||||
if( scoreOfLastTap >= m_MinScoreToMaintainCombo )
|
if( scoreOfLastTap >= m_MinScoreToMaintainCombo )
|
||||||
{
|
{
|
||||||
m_pPlayerStageStats->m_iCurMissCombo = 0;
|
m_pPlayerStageStats->m_iCurMissCombo = 0;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class ScoreKeeperNormal: public ScoreKeeper
|
|||||||
bool m_bIsLastSongInCourse;
|
bool m_bIsLastSongInCourse;
|
||||||
bool m_bIsBeginner;
|
bool m_bIsBeginner;
|
||||||
|
|
||||||
bool m_bComboIsPerRow;
|
ThemeMetric<bool> m_ComboIsPerRow;
|
||||||
ThemeMetric<TapNoteScore> m_MinScoreToContinueCombo;
|
ThemeMetric<TapNoteScore> m_MinScoreToContinueCombo;
|
||||||
ThemeMetric<TapNoteScore> m_MinScoreToMaintainCombo;
|
ThemeMetric<TapNoteScore> m_MinScoreToMaintainCombo;
|
||||||
|
|
||||||
@@ -37,6 +37,7 @@ class ScoreKeeperNormal: public ScoreKeeper
|
|||||||
virtual void AddTapScore( TapNoteScore tns );
|
virtual void AddTapScore( TapNoteScore tns );
|
||||||
virtual void AddHoldScore( HoldNoteScore hns );
|
virtual void AddHoldScore( HoldNoteScore hns );
|
||||||
virtual void AddTapRowScore( TapNoteScore tns, const NoteData &nd, int iRow );
|
virtual void AddTapRowScore( TapNoteScore tns, const NoteData &nd, int iRow );
|
||||||
|
virtual void HandleTapScoreNone();
|
||||||
|
|
||||||
/* Configuration: */
|
/* Configuration: */
|
||||||
/* Score after each tap will be rounded to the nearest m_iRoundTo; 1 to do nothing. */
|
/* Score after each tap will be rounded to the nearest m_iRoundTo; 1 to do nothing. */
|
||||||
|
|||||||
@@ -85,6 +85,16 @@ void ScoreKeeperRave::HandleHoldScore( const TapNote &tn )
|
|||||||
AddSuperMeterDelta( fPercentToMove );
|
AddSuperMeterDelta( fPercentToMove );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern ThemeMetric<bool> PENALIZE_TAP_SCORE_NONE;
|
||||||
|
void ScoreKeeperRave::HandleTapScoreNone()
|
||||||
|
{
|
||||||
|
if( PENALIZE_TAP_SCORE_NONE )
|
||||||
|
{
|
||||||
|
float fPercentToMove = g_fSuperMeterPercentChange[SE_Miss];
|
||||||
|
AddSuperMeterDelta( fPercentToMove );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ScoreKeeperRave::AddSuperMeterDelta( float fUnscaledPercentChange )
|
void ScoreKeeperRave::AddSuperMeterDelta( float fUnscaledPercentChange )
|
||||||
{
|
{
|
||||||
if( PREFSMAN->m_bMercifulDrain && fUnscaledPercentChange<0 )
|
if( PREFSMAN->m_bMercifulDrain && fUnscaledPercentChange<0 )
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ public:
|
|||||||
void HandleTapScore( const TapNote &tn );
|
void HandleTapScore( const TapNote &tn );
|
||||||
void HandleTapRowScore( const NoteData &nd, int iRow );
|
void HandleTapRowScore( const NoteData &nd, int iRow );
|
||||||
void HandleHoldScore( const TapNote &tn );
|
void HandleHoldScore( const TapNote &tn );
|
||||||
|
void HandleTapScoreNone();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void LaunchAttack( AttackLevel al );
|
void LaunchAttack( AttackLevel al );
|
||||||
|
|||||||
Reference in New Issue
Block a user