Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
HBMGUIManager.h
Go to the documentation of this file.
1#ifndef HOMEBUTTON_GUI_MANAGER_H
2#define HOMEBUTTON_GUI_MANAGER_H
3
4#include <revolution/kpad.h>
5#include <revolution/mem.h>
6#include <revolution/mtx.h>
7#include "nw4hbm/lyt/pane.h"
8#include "nw4hbm/ut/list.h"
9
10
11namespace nw4hbm {
12 namespace lyt {
13 class DrawInfo;
14 class Layout;
15 } // namespace lyt
16} // namespace nw4hbm
17
18namespace homebutton {
19 namespace gui {
20
21 class Manager;
22 class PaneComponent;
23
24 class Interface {
25 public:
27
28 /* 0x08 */ virtual void create() {}
29 /* 0x0C */ virtual void init() {}
30 /* 0x10 */ virtual void calc() {}
31 /* 0x14 */ virtual void draw(Mtx&) {}
32 /* 0x18 */ virtual void draw() {}
33 /* 0x1C */ virtual ~Interface() {}
34
35 private:
36 /* 0x00 (vtable) */
37 }; // size = 0x04
38
40 public:
42
43 /* 0x08 */ virtual void onEvent(u32, u32, void*) {}
44 /* 0x0C */ virtual void setManager(Manager* pManager) { mpManager = pManager; }
45
46 protected:
47 /* 0x00 (vtable) */
48 /* 0x04 */ Manager* mpManager;
49 }; // size = 0x08
50
51 class Component : public Interface {
52 public:
58
59 /* 0x0C */ virtual void init() {
60 mbDragging = false;
61
62 for (int i = 0; i < (int)ARRAY_SIZE(mabPointed); i++) {
63 mabPointed[i] = false;
64 }
65 }
66
67 /* 0x1C */ virtual ~Component() {}
68 /* 0x20 */ virtual u32 getID() { return muID; }
69 /* 0x24 */ virtual int isPointed(int n) { return mabPointed[n]; }
70 /* 0x28 */ virtual void setPointed(int n, bool b) { mabPointed[n] = b; }
71 /* 0x2C */ virtual void onPoint() {}
72 /* 0x30 */ virtual void offPoint() {}
73 /* 0x34 */ virtual void onDrag(f32, f32) {}
74 /* 0x38 */ virtual void onMove(f32, f32) {}
75
76 /* 0x3C */ virtual void onTrig(u32 uFlag, Vec& vec) {
77 if (uFlag & muDraggingButton) {
78 mDragStartPos = vec;
79 mbDragging = true;
80 }
81 }
82
83 /* 0x40 */ virtual void setDraggingButton(u32 uDraggingButton) {
84 muDraggingButton = uDraggingButton;
85 }
86 /* 0x44 */ virtual bool update(int, const KPADStatus*, f32, f32, void*) {
87 return false;
88 }
89 /* 0x48 */ virtual bool update(int i, f32 x, f32 y, u32 uTrigFlag, u32 uHoldFlag,
90 u32 uReleaseFlag, void* pData);
91 /* 0x4C */ virtual bool isTriggerTarger() { return mbTriggerTarger; }
92 /* 0x50 */ virtual void setTriggerTarget(bool bTriggerTarget) {
93 mbTriggerTarger = bTriggerTarget;
94 }
95 /* 0x54 */ virtual void setManager(Manager* pManager) { mpManager = pManager; }
96 /* 0x58 */ virtual bool isVisible() { return true; }
97 /* 0x5C */ virtual bool contain(f32 x_, f32 y_) = 0;
98
99 protected:
100 /* 0x00 (base) */
101 /* 0x04 */ bool mabPointed[8];
102 /* 0x0C */ Vec mDragStartPos;
103 /* 0x18 */ bool mbDragging;
105 /* 0x20 */ u32 muID;
106 /* 0x24 */ bool mbTriggerTarger;
107 /* 0x28 */ Manager* mpManager;
108 }; // size = 0x2C
109
110 class Manager : public Interface {
111 // nested types
112 private:
114 public:
115 /* 0x00 */ u32 muID;
118
119 IDToComponent(u32 uID, Component* pComponent)
120 : muID(uID), mpComponent(pComponent) {}
121 }; // size = 0x10
122
123 public:
124 Manager(EventHandler* pEventHandler, MEMAllocator* pAllocator)
125 : mpEventHandler(pEventHandler), mpAllocator(pAllocator) {
126 if (mpEventHandler) {
128 }
129
131 }
132
133 /* 0x0C */ virtual void init();
134 /* 0x10 */ virtual void calc();
135 /* 0x18 */ virtual void draw();
136 /* 0x1C */ virtual ~Manager();
137 /* 0x20 */ virtual void addComponent(Component* pComponent);
138 /* 0x24 */ virtual Component* getComponent(u32 uID);
139 /* 0x28 */ virtual bool update(int, const KPADStatus*, f32, f32, void*) {
140 return false;
141 }
142 /* 0x2C */ virtual bool update(int i, f32 x, f32 y, u32 uTrigFlag, u32 uHoldFlag,
143 u32 uReleaseFlag, void* pData);
144
145 /* 0x30 */ virtual void onEvent(u32 uID, u32 uEvent, void* pData) {
146 if (mpEventHandler) {
147 mpEventHandler->onEvent(uID, uEvent, pData);
148 }
149 }
150
151 /* 0x34 */ virtual void setAllComponentTriggerTarget(bool b);
152
153 /* 0x38 */ virtual void setEventHandler(EventHandler* pEventHandler) {
154 mpEventHandler = pEventHandler;
155
156 if (mpEventHandler) {
158 }
159 }
160
161 void delComponent(Component* pComponent);
162
163 protected:
164 /* 0x00 (base) */
168 }; // size = 0x18
169
170 class PaneManager : public Manager {
171 // nested types
172 private:
174 public:
176 : mpPane(pPane), mpComponent(pComponent) {}
177
178 public:
182 }; // size = 0x10
183
184 public:
185 PaneManager(EventHandler* pEventHandler, const nw4hbm::lyt::DrawInfo* pDrawInfo,
186 MEMAllocator* pAllocator)
187 : Manager(pEventHandler, pAllocator), mpDrawInfo(pDrawInfo) {
189 }
190
191 /* 0x1C */ virtual ~PaneManager();
192 /* 0x30 */ virtual void createLayoutScene(const nw4hbm::lyt::Layout& rLayout);
193 /* 0x34 */ virtual PaneComponent* getPaneComponentByPane(nw4hbm::lyt::Pane* pPane);
194 /* 0x38 */ virtual const nw4hbm::lyt::DrawInfo* getDrawInfo() { return mpDrawInfo; }
195 /* 0x3C */ virtual void setDrawInfo(const nw4hbm::lyt::DrawInfo* pDrawInfo) {
196 mpDrawInfo = pDrawInfo;
197 }
198 /* 0x40 */ virtual void setAllBoundingBoxComponentTriggerTarget(bool b);
199 /* 0x44 */ virtual void walkInChildren(nw4hbm::lyt::PaneList& rPaneList);
200
202 void delLayoutScene(const nw4hbm::lyt::Layout& rLayout);
203 void addLayoutScene(const nw4hbm::lyt::Layout& rLayout);
204
205 private:
206 /* 0x00 (base) */
209 /* 0x28 */ u16 muNumPoint;
211
212 // static members
214 }; // size = 0x2C
215
216 class PaneComponent : public Component {
217 public:
219
220 /* 0x18 */ virtual void draw();
221 /* 0x1C */ virtual ~PaneComponent() {}
222 /* 0x20 */ virtual bool isVisible();
223 /* 0x24 */ virtual bool contain(f32 x_, f32 y_);
224 /* 0x28 */ virtual void setPane(nw4hbm::lyt::Pane* pPane) { mpPane = pPane; }
225 /* 0x2C */ virtual nw4hbm::lyt::Pane* getPane() { return mpPane; }
226
227 protected:
228 /* 0x00 (base) */
230 }; // size = 0x30
231 } // namespace gui
232} // namespace homebutton
233
234#endif
Definition HBMGUIManager.h:51
virtual ~Component()
Definition HBMGUIManager.h:67
virtual void onTrig(u32 uFlag, Vec &vec)
Definition HBMGUIManager.h:76
virtual void onDrag(f32, f32)
Definition HBMGUIManager.h:73
virtual bool update(int, const KPADStatus *, f32, f32, void *)
Definition HBMGUIManager.h:86
virtual void onPoint()
Definition HBMGUIManager.h:71
virtual bool contain(f32 x_, f32 y_)=0
virtual void init()
Definition HBMGUIManager.h:59
Vec mDragStartPos
Definition HBMGUIManager.h:102
u32 muDraggingButton
Definition HBMGUIManager.h:104
bool mbDragging
Definition HBMGUIManager.h:103
virtual bool isTriggerTarger()
Definition HBMGUIManager.h:91
virtual bool isVisible()
Definition HBMGUIManager.h:96
Manager * mpManager
Definition HBMGUIManager.h:107
Component(u32 uID)
Definition HBMGUIManager.h:53
bool mabPointed[8]
Definition HBMGUIManager.h:101
virtual void offPoint()
Definition HBMGUIManager.h:72
bool mbTriggerTarger
Definition HBMGUIManager.h:106
virtual void setDraggingButton(u32 uDraggingButton)
Definition HBMGUIManager.h:83
virtual int isPointed(int n)
Definition HBMGUIManager.h:69
virtual void setManager(Manager *pManager)
Definition HBMGUIManager.h:95
virtual u32 getID()
Definition HBMGUIManager.h:68
virtual void setTriggerTarget(bool bTriggerTarget)
Definition HBMGUIManager.h:92
virtual void onMove(f32, f32)
Definition HBMGUIManager.h:74
virtual void setPointed(int n, bool b)
Definition HBMGUIManager.h:70
u32 muID
Definition HBMGUIManager.h:105
Definition HBMGUIManager.h:39
EventHandler()
Definition HBMGUIManager.h:41
virtual void onEvent(u32, u32, void *)
Definition HBMGUIManager.h:43
virtual void setManager(Manager *pManager)
Definition HBMGUIManager.h:44
Manager * mpManager
Definition HBMGUIManager.h:48
Definition HBMGUIManager.h:24
virtual void draw(Mtx &)
Definition HBMGUIManager.h:31
virtual ~Interface()
Definition HBMGUIManager.h:33
Interface()
Definition HBMGUIManager.h:26
virtual void create()
Definition HBMGUIManager.h:28
virtual void draw()
Definition HBMGUIManager.h:32
virtual void init()
Definition HBMGUIManager.h:29
virtual void calc()
Definition HBMGUIManager.h:30
Definition HBMGUIManager.h:110
virtual ~Manager()
Definition HBMGUIManager.cpp:83
virtual void setEventHandler(EventHandler *pEventHandler)
Definition HBMGUIManager.h:153
virtual Component * getComponent(u32 uID)
Definition HBMGUIManager.cpp:139
EventHandler * mpEventHandler
Definition HBMGUIManager.h:165
nw4hbm::ut::List mIDToComponent
Definition HBMGUIManager.h:166
virtual bool update(int, const KPADStatus *, f32, f32, void *)
Definition HBMGUIManager.h:139
virtual void draw()
Definition HBMGUIManager.cpp:192
Manager(EventHandler *pEventHandler, MEMAllocator *pAllocator)
Definition HBMGUIManager.h:124
virtual void calc()
Definition HBMGUIManager.cpp:183
virtual void init()
Definition HBMGUIManager.cpp:97
virtual void setAllComponentTriggerTarget(bool b)
Definition HBMGUIManager.cpp:201
void delComponent(Component *pComponent)
Definition HBMGUIManager.cpp:118
MEMAllocator * mpAllocator
Definition HBMGUIManager.h:167
virtual void onEvent(u32 uID, u32 uEvent, void *pData)
Definition HBMGUIManager.h:145
virtual void addComponent(Component *pComponent)
Definition HBMGUIManager.cpp:106
Definition HBMGUIManager.h:216
virtual void setPane(nw4hbm::lyt::Pane *pPane)
Definition HBMGUIManager.h:224
virtual ~PaneComponent()
Definition HBMGUIManager.h:221
virtual bool isVisible()
Definition HBMGUIManager.cpp:426
virtual nw4hbm::lyt::Pane * getPane()
Definition HBMGUIManager.h:225
virtual bool contain(f32 x_, f32 y_)
Definition HBMGUIManager.cpp:346
nw4hbm::lyt::Pane * mpPane
Definition HBMGUIManager.h:229
PaneComponent(u32 uID)
Definition HBMGUIManager.h:218
virtual void draw()
Definition HBMGUIManager.cpp:376
Definition HBMGUIManager.h:170
nw4hbm::ut::List mPaneToComponent
Definition HBMGUIManager.h:207
static u32 suIDCounter
Definition HBMGUIManager.h:213
void walkInChildrenDel(nw4hbm::lyt::PaneList &rPaneList)
Definition HBMGUIManager.cpp:285
virtual void setAllBoundingBoxComponentTriggerTarget(bool b)
Definition HBMGUIManager.cpp:333
const nw4hbm::lyt::DrawInfo * mpDrawInfo
Definition HBMGUIManager.h:208
virtual ~PaneManager()
Definition HBMGUIManager.cpp:210
void delLayoutScene(const nw4hbm::lyt::Layout &rLayout)
Definition HBMGUIManager.cpp:279
u16 muNumPoint
Definition HBMGUIManager.h:209
u16 muPadding
Definition HBMGUIManager.h:210
PaneManager(EventHandler *pEventHandler, const nw4hbm::lyt::DrawInfo *pDrawInfo, MEMAllocator *pAllocator)
Definition HBMGUIManager.h:185
virtual void walkInChildren(nw4hbm::lyt::PaneList &rPaneList)
Definition HBMGUIManager.cpp:243
virtual void setDrawInfo(const nw4hbm::lyt::DrawInfo *pDrawInfo)
Definition HBMGUIManager.h:195
void addLayoutScene(const nw4hbm::lyt::Layout &rLayout)
Definition HBMGUIManager.cpp:237
virtual PaneComponent * getPaneComponentByPane(nw4hbm::lyt::Pane *pPane)
Definition HBMGUIManager.cpp:317
virtual const nw4hbm::lyt::DrawInfo * getDrawInfo()
Definition HBMGUIManager.h:194
virtual void createLayoutScene(const nw4hbm::lyt::Layout &rLayout)
Definition HBMGUIManager.cpp:229
Definition drawInfo.h:13
Definition layout.h:23
Definition pane.h:42
f32 Mtx[3][4]
Definition mtx.h:25
double x double x
Definition e_atan2.c:58
double x double y
Definition e_atan2.c:58
n
Definition e_fmod.c:115
int i
Definition e_log.c:92
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
Definition HBMAnmController.cpp:6
struct nw4hbm::lyt::res::Layout Layout
void List_Init(List *list, u16 offset)
Definition ut_list.cpp:11
Definition HBMAnmController.h:6
Definition kpad.h:57
Definition allocator.h:21
Definition mtx.h:13
Definition HBMGUIManager.h:113
Component * mpComponent
Definition HBMGUIManager.h:116
nw4hbm::ut::Link mLink
Definition HBMGUIManager.h:117
u32 muID
Definition HBMGUIManager.h:115
IDToComponent(u32 uID, Component *pComponent)
Definition HBMGUIManager.h:119
Definition HBMGUIManager.h:173
nw4hbm::ut::Link mLink
Definition HBMGUIManager.h:181
PaneComponent * mpComponent
Definition HBMGUIManager.h:180
nw4hbm::lyt::Pane * mpPane
Definition HBMGUIManager.h:179
PaneToComponent(nw4hbm::lyt::Pane *pPane, PaneComponent *pComponent)
Definition HBMGUIManager.h:175
Definition list.h:16