summaryrefslogtreecommitdiff
path: root/include/ui.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ui.h')
-rw-r--r--include/ui.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/include/ui.h b/include/ui.h
index 2a4994ee..77c27f4a 100644
--- a/include/ui.h
+++ b/include/ui.h
@@ -2,8 +2,107 @@
#define UI_H
#include "global.h"
+#include "sprite.h"
+
+#define MAX_UI_ELEMENTS 24
+
+typedef enum {
+ UI_ELEMENT_BUTTON_A,
+ UI_ELEMENT_BUTTON_B,
+ UI_ELEMENT_BUTTON_R,
+ UI_ELEMENT_ITEM_A,
+ UI_ELEMENT_ITEM_B,
+ UI_ELEMENT_TEXT_R,
+ UI_ELEMENT_HEART,
+ UI_ELEMENT_EZLONAGSTART,
+ UI_ELEMENT_EZLONAGACTIVE,
+ UI_ELEMENT_TEXT_A,
+ UI_ELEMENT_TEXT_B
+} UIElementType;
+
+/**
+ * @brief Floating UI element
+ */
+typedef struct {
+ u8 used : 1;
+ u8 unk_0_1 : 1;
+ u8 unk_0_2 : 2; // Load data into VRAM? 0: do not load, 1: ready to load 2: loaded
+ u8 unk_0_4 : 4;
+ u8 type; /**< @see UIElementType */
+ u8 type2; // Subtype
+ u8 buttonElementId; /**< Id of the button UI element this text is attached to */
+ u8 action;
+ u8 unk_5;
+ u8 unk_6;
+ u8 unk_7;
+ u8 unk_8;
+ u8 unk_9[3];
+ u16 x;
+ u16 y;
+ u8 frameIndex;
+ u8 duration;
+ u8 spriteSettings;
+ u8 frameSettings;
+ Frame* framePtr;
+ u8 unk_18;
+ u8 numTiles;
+ u16 unk_1a; // TODO oam id? VRAM target (element->unk_1a * 0x20 + 0x6010000)
+ u32* firstTile;
+} UIElement;
+
+typedef enum {
+ HUD_HIDE_NONE,
+ HUD_HIDE_1 = 0x1, // A
+ HUD_HIDE_2 = 0x2, // B
+ HUD_HIDE_4 = 0x4, // R
+ HUD_HIDE_8 = 0x8,
+ HUD_HIDE_HEARTS = 0x10,
+ HUD_HIDE_CHARGE_BAR = 0x20,
+ HUD_HIDE_RUPEES = 0x40,
+ HUD_HIDE_KEYS = 0x80,
+
+ HUD_HIDE_ALL = 0xff
+} HUDHideFlags;
+
+typedef struct {
+ u8 unk_0;
+ u8 hideFlags;
+ u8 unk_2;
+ u8 health;
+ u8 maxHealth;
+ u8 unk_5;
+ u8 unk_6;
+ u8 unk_7;
+ u8 unk_8;
+ u8 unk_9;
+ u8 unk_a;
+ u8 unk_b;
+ u8 unk_c;
+ u8 unk_d;
+ u16 rupees;
+ u8 unk_10; // TODO drawing keys dirty flag or something?
+ u8 unk_11;
+ u8 dungeonKeys;
+ s8 unk_13;
+ s8 unk_14;
+ u8 unk_15;
+ u16 buttonX[3]; /**< X coordinates for the button UI elements */
+ u16 buttonY[3]; /**< Y coordinates for the button UI elements */
+ u8 filler22[0x2];
+ u8 ezloNagFuncIndex;
+ u8 filler25[7];
+ u8 rActionInteractObject; // used as R button UI frame index
+ u8 rActionInteractTile;
+ u8 rActionGrabbing;
+ u8 rActionPlayerState; // if not 0, overrides other R actions
+ u8 buttonText[3];
+ u8 unk_33;
+ UIElement elements[MAX_UI_ELEMENTS];
+} HUD;
+extern HUD gHUD;
extern void DrawUIElements(void);
+extern void UpdateUIElements(void);
extern void CreateUIElement(u32, u32);
extern void sub_0801C2F0(u32, u32);
extern void sub_0801C25C(void);