Etterna 0.74.4
Loading...
Searching...
No Matches
MusicWheelItem.h
1#ifndef MUSIC_WHEEL_ITEM_H
2#define MUSIC_WHEEL_ITEM_H
3
4#include "Etterna/Actor/Base/ActorFrame.h"
5#include "Etterna/Actor/Base/AutoActor.h"
6#include "Etterna/Actor/Base/BitmapText.h"
7#include "Etterna/Models/Misc/GameCommand.h"
8#include "TextBanner.h"
9#include "WheelItemBase.h"
10
11class Song;
12
14
15enum MusicWheelItemType
16{
17 MusicWheelItemType_Song,
18 MusicWheelItemType_SectionExpanded,
19 MusicWheelItemType_SectionCollapsed,
20 MusicWheelItemType_Roulette,
21 MusicWheelItemType_Sort,
22 MusicWheelItemType_Mode,
23 MusicWheelItemType_Random,
24 MusicWheelItemType_Portal,
25 MusicWheelItemType_Custom,
26 NUM_MusicWheelItemType,
27 MusicWheelItemType_Invalid,
28};
29auto
30MusicWheelItemTypeToString(MusicWheelItemType i) -> const std::string&;
32class MusicWheelItem final : public WheelItemBase
33{
34 public:
35 MusicWheelItem(const std::string& sType = "MusicWheelItem");
37 ~MusicWheelItem() override;
38 [[nodiscard]] auto Copy() const -> MusicWheelItem* override
39 {
40 return new MusicWheelItem(*this);
41 }
42
43 void LoadFromWheelItemData(const WheelItemBaseData* pWID,
44 int iIndex,
45 bool bHasFocus,
46 int iDrawIndex) override;
47 void HandleMessage(const Message& msg) override;
48 void RefreshGrades();
49
50 private:
51 AutoActor m_sprColorPart[NUM_MusicWheelItemType];
52 AutoActor m_sprNormalPart[NUM_MusicWheelItemType];
53 AutoActor m_sprOverPart[NUM_MusicWheelItemType];
54
55 TextBanner m_TextBanner; // used by Type_Song instead of m_pText
56 BitmapText* m_pText[NUM_MusicWheelItemType];
57 BitmapText* m_pTextSectionCount;
58 AutoActor m_pGradeDisplay;
59};
60
62{
64 : m_sLabel("")
65 {
66 }
67 MusicWheelItemData(WheelItemDataType type,
68 Song* pSong,
69 const std::string& sSectionName,
70 const RageColor& color,
71 int iSectionCount);
72
73 Song* m_pSong{ nullptr };
74
75 // for TYPE_SECTION
76 int m_iSectionCount{ 0 };
77
78 // for TYPE_SORT
79 std::string m_sLabel;
80 std::unique_ptr<GameCommand> m_pAction;
81};
82
83#endif
A smart pointer for Actor.
Definition AutoActor.h:13
An actor that holds a Font and draws text to the screen.
Definition BitmapText.h:11
An item on the MusicWheel.
Definition MusicWheelItem.h:33
Holds all music metadata and steps for one song.
Definition Song.h:65
Definition TextBanner.h:12
An item on the wheel.
Definition WheelItemBase.h:42
Definition MessageManager.h:96
Definition MusicWheelItem.h:62
Definition RageTypes.h:332
Definition WheelItemBase.h:30