Etterna 0.74.4
Loading...
Searching...
No Matches
LifeMeterBar.h
1#ifndef LIFEMETERBAR_H
2#define LIFEMETERBAR_H
3
4#include "Etterna/Actor/Base/AutoActor.h"
5#include "LifeMeter.h"
6#include "Etterna/Models/Misc/ThemeMetric.h"
7
8class StreamDisplay;
9
11class LifeMeterBar : public LifeMeter
12{
13 public:
15 ~LifeMeterBar() override;
16
17 void Load(const PlayerState* pPlayerState,
18 PlayerStageStats* pPlayerStageStats) override;
19
20 void Update(float fDeltaTime) override;
21
22 void ChangeLife(TapNoteScore score) override;
23 void ChangeLife(HoldNoteScore score, TapNoteScore tscore) override;
24 void ChangeLife(float fDeltaLifePercent) override;
25 void SetLife(float value) override;
26 void HandleTapScoreNone() override;
27 virtual void AfterLifeChanged();
28 bool IsInDanger() const override;
29 bool IsHot() const override;
30 bool IsFailing() const override;
31 float GetLife() const override { return m_fLifePercentage; }
32
33 void FillForHowToPlay(int NumT2s, int NumMisses);
34 static float MapTNSToDeltaLife(TapNoteScore s);
35 static float MapHNSToDeltaLife(HoldNoteScore score);
36
37 private:
38 ThemeMetric<float> DANGER_THRESHOLD;
39 ThemeMetric<float> INITIAL_VALUE;
40 ThemeMetric<float> HOT_VALUE;
41 ThemeMetric<float> LIFE_MULTIPLIER;
42 ThemeMetric<TapNoteScore> MIN_STAY_ALIVE;
43
44 ThemeMetric1D<float> m_fLifePercentChange;
45
46 // Doing this proper, let's not vector lookup for these values every update
47 // - Mina
48 float m_Change_SE_W1;
49 float m_Change_SE_W2;
50 float m_Change_SE_W3;
51 float m_Change_SE_W4;
52 float m_Change_SE_W5;
53 float m_Change_SE_Miss;
54 float m_Change_SE_HitMine;
55 float m_Change_SE_CheckpointHit;
56 float m_Change_SE_CheckpointMiss;
57 float m_Change_SE_Held;
58 float m_Change_SE_LetGo;
59
60 AutoActor m_sprUnder;
61 AutoActor m_sprDanger;
62 StreamDisplay* m_pStream;
63 AutoActor m_sprOver;
64
65 float m_fLifePercentage;
66
67 float m_fPassingAlpha;
68 float m_fHotAlpha;
69
70 float m_fBaseLifeDifficulty;
71 float m_fLifeDifficulty; // essentially same as pref
72
73 int m_iProgressiveLifebar; // cached from prefs
75 int m_iMissCombo;
78 int m_iComboToRegainLife;
79};
80
81#endif
A smart pointer for Actor.
Definition AutoActor.h:13
The player's life represented as a bar.
Definition LifeMeterBar.h:12
void ChangeLife(TapNoteScore score) override
Change life after receiving a tap note grade.
Definition LifeMeterBar.cpp:184
The player's life.
Definition LifeMeter.h:13
Contains statistics for one stage of play - either one song, or a whole course.
Definition PlayerStageStats.h:19
The player's indivdual state.
Definition PlayerState.h:30
Definition StreamDisplay.h:20
Definition ThemeMetric.h:192
The theme specific data.
Definition ThemeMetric.h:52