Etterna 0.74.4
Loading...
Searching...
No Matches
LifeMeter.h
1#ifndef LIFE_METER_H
2#define LIFE_METER_H
3
4#include "Etterna/Actor/Base/ActorFrame.h"
5#include "Etterna/Models/Misc/GameConstantsAndTypes.h"
6#include "Etterna/Models/Misc/PlayerOptions.h"
7
8class PlayerState;
10
12class LifeMeter : public ActorFrame
13{
14 public:
15 LifeMeter() = default;
16 ~LifeMeter() override = default;
17
18 virtual void Load(const PlayerState* pPlayerState,
19 PlayerStageStats* pPlayerStageStats)
20 {
21 m_pPlayerState = pPlayerState;
22 m_pPlayerStageStats = pPlayerStageStats;
23 }
24 virtual void OnLoadSong(){};
25 virtual void OnSongEnded(){};
31 virtual void ChangeLife(TapNoteScore score) = 0;
37 virtual void ChangeLife(HoldNoteScore hns, TapNoteScore tns) = 0;
38 virtual void ChangeLife(float delta) = 0;
39 virtual void SetLife(float value) = 0;
40 virtual void HandleTapScoreNone() = 0;
41 [[nodiscard]] virtual auto IsInDanger() const -> bool = 0;
42 [[nodiscard]] virtual auto IsHot() const -> bool = 0;
43 [[nodiscard]] virtual auto IsFailing() const -> bool = 0;
44 [[nodiscard]] virtual auto GetLife() const -> float
45 {
46 return 0;
47 } // for cosmetic use only
48
49 static auto MakeLifeMeter(LifeType t) -> LifeMeter*;
50
51 //
52 // Lua
53 //
54 void PushSelf(lua_State* L) override;
55
56 protected:
57 const PlayerState* m_pPlayerState{};
58 PlayerStageStats* m_pPlayerStageStats{};
59};
60
61#endif
A container for other Actors.
Definition ActorFrame.h:8
The player's life.
Definition LifeMeter.h:13
virtual void ChangeLife(TapNoteScore score)=0
Change life after receiving a tap note grade.
virtual void ChangeLife(HoldNoteScore hns, TapNoteScore tns)=0
Change life after receiving a hold note grade.
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