Files
itgmania212121/src/LifeMeterBar.h
T
AJ Kelly 7f19f8310a Okay so Glenn decided to revert some Frieza code. I'm not going to remove everything Glenn did, as there was some useful code.
However, the ones I agreed with were:

75d5b63 "if a Noteskin fails to be loaded by the time the notes need to be displayed, attempt to force the default theme on and throw errors in to the log rather than crashing SM."
Glenn: There was no indication in the commit of when this was actually happening; this is unnecessary logic that will do nothing but hide bugs.
AJ: Based on some of the other code I've seen in the StepMania codebase, I'd say having this code in GetMetric isn't a good idea. There's an assert for checking if the noteskin isn't empty. That should suffice.

e27e971 "Adds metric options to flash the lifebar when a note is hit"
AJ: There are many possible ways of doing this without having to add a new metric.
The most extreme example is to code your own life bar and mess with JudgmentMessageCommand.
I'm not sure if StreamDisplay would respond to the message or not, but there are multiple ways of getting at the Stream. (ultralight, to be released, contains an example)
2010-02-10 21:23:28 -06:00

90 lines
3.0 KiB
C++

#ifndef LIFEMETERBAR_H
#define LIFEMETERBAR_H
#include "LifeMeter.h"
#include "Sprite.h"
#include "AutoActor.h"
#include "Quad.h"
#include "ThemeMetric.h"
class StreamDisplay;
class LifeMeterBar : public LifeMeter
{
public:
LifeMeterBar();
~LifeMeterBar();
virtual void Load( const PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats );
virtual void Update( float fDeltaTime );
virtual void ChangeLife( TapNoteScore score );
virtual void ChangeLife( HoldNoteScore score, TapNoteScore tscore );
virtual void ChangeLife( float fDeltaLifePercent );
virtual void HandleTapScoreNone();
virtual void AfterLifeChanged();
virtual bool IsInDanger() const;
virtual bool IsHot() const;
virtual bool IsFailing() const;
virtual float GetLife() const { return m_fLifePercentage; }
void UpdateNonstopLifebar();
void FillForHowToPlay(int NumT2s, int NumMisses);
// this function is solely for HowToPlay
private:
ThemeMetric<float> DANGER_THRESHOLD;
ThemeMetric<float> INITIAL_VALUE;
ThemeMetric<float> HOT_VALUE;
ThemeMetric<float> LIFE_MULTIPLIER;
ThemeMetric<TapNoteScore> MIN_STAY_ALIVE;
ThemeMetric1D<float> m_fLifePercentChange;
AutoActor m_sprUnder;
AutoActor m_sprDanger;
StreamDisplay* m_pStream;
AutoActor m_sprOver;
float m_fLifePercentage;
float m_fPassingAlpha;
float m_fHotAlpha;
float m_fBaseLifeDifficulty;
float m_fLifeDifficulty; // essentially same as pref
int m_iProgressiveLifebar; // cached from prefs
int m_iMissCombo; // current number of progressive W5/miss
int m_iComboToRegainLife; // combo needed before lifebar starts filling up after fail
};
#endif
/*
* (c) 2001-2004 Chris Danford
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, and/or sell copies of the Software, and to permit persons to
* whom the Software is furnished to do so, provided that the above
* copyright notice(s) and this permission notice appear in all copies of
* the Software and that both the above copyright notice(s) and this
* permission notice appear in supporting documentation.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/