void LifeMeterBar::ChangeLife( HoldNoteScore score, TapNoteScore tscore ) { /* The initial tap note score (which we happen to have in have in * tscore) has already been reported to the above function. If the * hold end result was an NG, count it as a miss; if the end result * was an OK, count a perfect. (Remember, this is just life meter * computation, not scoring.) */ float fDeltaLife=0.f; switch( GAMESTATE->m_SongOptions.m_DrainType ) { case SongOptions::DRAIN_NORMAL: switch( score ) { case HNS_OK: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeOK; break; case HNS_NG: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeNG; break; default: ASSERT(0); } if( IsHot() && score == HNS_NG ) fDeltaLife = -0.10f; // make it take a while to get back to "doing great" break; case SongOptions::DRAIN_NO_RECOVER: switch( score ) { case HNS_OK: fDeltaLife = +0.000f; break; case HNS_NG: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeNG; break; default: ASSERT(0); } break; case SongOptions::DRAIN_SUDDEN_DEATH: switch( score ) { case HNS_OK: fDeltaLife = +0; break; case HNS_NG: fDeltaLife = -1.0; break; default: ASSERT(0); } break; default: ASSERT(0); } ChangeLife( fDeltaLife ); }
void LifeMeterBar::ChangeLife( TapNoteScore score ) { float fDeltaLife=0.f; switch( GAMESTATE->m_SongOptions.m_DrainType ) { case SongOptions::DRAIN_NORMAL: switch( score ) { case TNS_MARVELOUS: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeMarvelous; break; case TNS_PERFECT: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangePerfect; break; case TNS_GREAT: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeGreat; break; case TNS_GOOD: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeGood; break; case TNS_BOO: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeBoo; break; case TNS_MISS: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeMiss; break; default: ASSERT(0); } if( IsHot() && score < TNS_GOOD ) fDeltaLife = -0.10f; // make it take a while to get back to "doing great" break; case SongOptions::DRAIN_NO_RECOVER: switch( score ) { case TNS_MARVELOUS: fDeltaLife = +0.000f; break; case TNS_PERFECT: fDeltaLife = +0.000f; break; case TNS_GREAT: fDeltaLife = +0.000f; break; case TNS_GOOD: fDeltaLife = +0.000f; break; case TNS_BOO: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeBoo; break; case TNS_MISS: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeMiss; break; default: ASSERT(0); } break; case SongOptions::DRAIN_SUDDEN_DEATH: switch( score ) { case TNS_MARVELOUS: fDeltaLife = +0; break; case TNS_PERFECT: fDeltaLife = +0; break; case TNS_GREAT: fDeltaLife = +0; break; case TNS_GOOD: fDeltaLife = -1.0; break; case TNS_BOO: fDeltaLife = -1.0; break; case TNS_MISS: fDeltaLife = -1.0; break; default: ASSERT(0); } break; default: ASSERT(0); } ChangeLife( fDeltaLife ); }
void LifeMeterBattery::ChangeLife( HoldNoteScore score, TapNoteScore tscore ) { switch( score ) { case HNS_OK: break; case HNS_NG: ChangeLife( TNS_MISS ); // NG is the same as a miss break; default: ASSERT(0); } }
void LifeMeterBar::ChangeLife( HoldNoteScore score, TapNoteScore tscore ) { float fDeltaLife=0.f; DrainType dtype = m_pPlayerState->m_PlayerOptions.GetSong().m_DrainType; switch( dtype ) { case DrainType_Normal: switch( score ) { case HNS_Held: fDeltaLife = m_fLifePercentChange.GetValue(SE_Held); break; case HNS_LetGo: fDeltaLife = m_fLifePercentChange.GetValue(SE_LetGo); break; case HNS_Missed: fDeltaLife = m_fLifePercentChange.GetValue(SE_Missed); break; default: FAIL_M(ssprintf("Invalid HoldNoteScore: %i", score)); } if(PREFSMAN->m_HarshHotLifePenalty && IsHot() && score == HNS_LetGo) fDeltaLife = -0.10f; // make it take a while to get back to "hot" break; case DrainType_NoRecover: switch( score ) { case HNS_Held: fDeltaLife = +0.000f; break; case HNS_LetGo: fDeltaLife = m_fLifePercentChange.GetValue(SE_LetGo); break; case HNS_Missed: fDeltaLife = +0.000f; break; default: FAIL_M(ssprintf("Invalid HoldNoteScore: %i", score)); } break; case DrainType_SuddenDeath: switch( score ) { case HNS_Held: fDeltaLife = +0; break; case HNS_LetGo: fDeltaLife = -1.0f; break; case HNS_Missed: fDeltaLife = +0; break; default: FAIL_M(ssprintf("Invalid HoldNoteScore: %i", score)); } break; default: FAIL_M(ssprintf("Invalid DrainType: %i", dtype)); } ChangeLife( fDeltaLife ); }
void LifeMeterBar::ChangeLife( HoldNoteScore score, TapNoteScore tscore ) { float fDeltaLife=0.f; switch( GAMESTATE->m_SongOptions.GetSong().m_DrainType ) { case SongOptions::DRAIN_NORMAL: switch( score ) { case HNS_Held: fDeltaLife = m_fLifePercentChange.GetValue(SE_Held); break; case HNS_LetGo: fDeltaLife = m_fLifePercentChange.GetValue(SE_LetGo); break; default: ASSERT(0); } if( IsHot() && score == HNS_LetGo ) fDeltaLife = -0.10f; // make it take a while to get back to "hot" break; case SongOptions::DRAIN_NO_RECOVER: switch( score ) { case HNS_Held: fDeltaLife = +0.000f; break; case HNS_LetGo: fDeltaLife = m_fLifePercentChange.GetValue(SE_LetGo); break; default: ASSERT(0); } break; case SongOptions::DRAIN_SUDDEN_DEATH: switch( score ) { case HNS_Held: fDeltaLife = +0; break; case HNS_LetGo: fDeltaLife = -1.0f; break; default: ASSERT(0); } break; default: ASSERT(0); } ChangeLife( fDeltaLife ); }
void LifeMeterBar::ChangeLife( TapNoteScore score ) { float fDeltaLife=0.f; switch( score ) { DEFAULT_FAIL( score ); case TNS_W1: fDeltaLife = m_fLifePercentChange.GetValue(SE_W1); break; case TNS_W2: fDeltaLife = m_fLifePercentChange.GetValue(SE_W2); break; case TNS_W3: fDeltaLife = m_fLifePercentChange.GetValue(SE_W3); break; case TNS_W4: fDeltaLife = m_fLifePercentChange.GetValue(SE_W4); break; case TNS_W5: fDeltaLife = m_fLifePercentChange.GetValue(SE_W5); break; case TNS_Miss: fDeltaLife = m_fLifePercentChange.GetValue(SE_Miss); break; case TNS_HitMine: fDeltaLife = m_fLifePercentChange.GetValue(SE_HitMine); break; case TNS_None: fDeltaLife = m_fLifePercentChange.GetValue(SE_Miss); break; case TNS_CheckpointHit: fDeltaLife = m_fLifePercentChange.GetValue(SE_CheckpointHit); break; case TNS_CheckpointMiss:fDeltaLife = m_fLifePercentChange.GetValue(SE_CheckpointMiss); break; } // this was previously if( IsHot() && score < TNS_GOOD ) in 3.9... -freem if( IsHot() && fDeltaLife < 0 ) fDeltaLife = min( fDeltaLife, -0.10f ); // make it take a while to get back to "hot" switch( GAMESTATE->m_SongOptions.GetSong().m_DrainType ) { DEFAULT_FAIL( GAMESTATE->m_SongOptions.GetSong().m_DrainType ); case SongOptions::DRAIN_NORMAL: break; case SongOptions::DRAIN_NO_RECOVER: fDeltaLife = min( fDeltaLife, 0 ); break; case SongOptions::DRAIN_SUDDEN_DEATH: if( score < MIN_STAY_ALIVE ) fDeltaLife = -1.0f; else fDeltaLife = 0; break; } ChangeLife( fDeltaLife ); }
void LifeMeterBar::ChangeLife( TapNoteScore score ) { float fDeltaLife=0.f; switch( score ) { DEFAULT_FAIL( score ); case TNS_W1: fDeltaLife = m_fLifePercentChange.GetValue(SE_W1); break; case TNS_W2: fDeltaLife = m_fLifePercentChange.GetValue(SE_W2); break; case TNS_W3: fDeltaLife = m_fLifePercentChange.GetValue(SE_W3); break; case TNS_W4: fDeltaLife = m_fLifePercentChange.GetValue(SE_W4); break; case TNS_W5: fDeltaLife = m_fLifePercentChange.GetValue(SE_W5); break; case TNS_Miss: fDeltaLife = m_fLifePercentChange.GetValue(SE_Miss); break; case TNS_HitMine: fDeltaLife = m_fLifePercentChange.GetValue(SE_HitMine); break; case TNS_None: fDeltaLife = m_fLifePercentChange.GetValue(SE_Miss); break; case TNS_CheckpointHit: fDeltaLife = m_fLifePercentChange.GetValue(SE_CheckpointHit); break; case TNS_CheckpointMiss:fDeltaLife = m_fLifePercentChange.GetValue(SE_CheckpointMiss); break; } // this was previously if( IsHot() && score < TNS_GOOD ) in 3.9... -freem if(PREFSMAN->m_HarshHotLifePenalty && IsHot() && fDeltaLife < 0) fDeltaLife = min( fDeltaLife, -0.10f ); // make it take a while to get back to "hot" switch(m_pPlayerState->m_PlayerOptions.GetSong().m_DrainType) { DEFAULT_FAIL(m_pPlayerState->m_PlayerOptions.GetSong().m_DrainType); case DrainType_Normal: break; case DrainType_NoRecover: fDeltaLife = min( fDeltaLife, 0 ); break; case DrainType_SuddenDeath: if( score < MIN_STAY_ALIVE ) fDeltaLife = -1.0f; else fDeltaLife = 0; break; } ChangeLife( fDeltaLife ); }
void LifeMeterBar::ChangeLifeMine() { float fDeltaLife=0.f; switch( GAMESTATE->m_SongOptions.m_DrainType ) { case SongOptions::DRAIN_NORMAL: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeHitMine; if( IsHot() ) fDeltaLife = -0.10f; // make it take a while to get back to "doing great" break; case SongOptions::DRAIN_NO_RECOVER: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeHitMine; break; case SongOptions::DRAIN_SUDDEN_DEATH: fDeltaLife = -1.0; break; default: ASSERT(0); } ChangeLife( fDeltaLife ); }
void LifeMeterBar::HandleTapScoreNone() { if( PENALIZE_TAP_SCORE_NONE ) ChangeLife( TNS_None ); }
void LifeMeterBattery::ChangeLifeMine() { ChangeLife( TNS_MISS ); // same as a miss }