diff options
-rw-r--r-- | kamek_pal.x | 6 | ||||
-rw-r--r-- | src/koopatlas/hud.cpp | 48 | ||||
-rw-r--r-- | src/koopatlas/hud.h | 7 |
3 files changed, 54 insertions, 7 deletions
diff --git a/kamek_pal.x b/kamek_pal.x index 02bc004..4955575 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -734,6 +734,7 @@ SECTIONS { findTextBoxByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x80007320; findPictureByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x800073D0; findWindowByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x80007470; + __ct__Q23m2d13EmbedLayout_cFv = 0x800C89A0; __dt__Q23m2d13EmbedLayout_cFv = 0x800C89F0; loadArc__Q23m2d13EmbedLayout_cFPCcb = 0x800C8D00; @@ -745,9 +746,14 @@ SECTIONS { disableAllAnimations__Q23m2d13EmbedLayout_cFv = 0x800C95F0; isAnimOn__Q23m2d13EmbedLayout_cFi = 0x800C9700; isAnyAnimOn__Q23m2d13EmbedLayout_cFv = 0x800C9730; + setLangStrings__Q23m2d13EmbedLayout_cFPPCcPCiii = 0x800C9010; free__Q23m2d13EmbedLayout_cFv = 0x800C9A20; execAnimations__Q23m2d13EmbedLayout_cFv = 0x800C9650; + attachArc__Q23m2d8ResAcc_cFPvPCc = 0x801637A0; + + setSpeed__Q23m2d11FrameCtrl_cFf = 0x80163920; + scheduleForDrawing__Q23m2d6Base_cFv = 0x80163990; RenderEffects__Fii = 0x80093F10; diff --git a/src/koopatlas/hud.cpp b/src/koopatlas/hud.cpp index bdd51b0..b7e40d2 100644 --- a/src/koopatlas/hud.cpp +++ b/src/koopatlas/hud.cpp @@ -16,17 +16,19 @@ dWMHud_c::dWMHud_c() { layoutLoaded = false; } +enum WMHudAnimation { + SHOW_LIVES = 0, + SHOW_HEADER, + SHOW_FOOTER +}; + int dWMHud_c::onCreate() { if (!layoutLoaded) { - bool gotFile = layout.loadArc("maphud.arc", false); + bool gotFile = layout.loadArc("MapHUD.arc", false); if (!gotFile) return false; - //static const char *brlanNames[3] = {"maphud_hitbutton.brlan", "maphud_in.brlan", "maphud_out.brlan"}; - static const char *brlanNames[5] = {"maphud_hitbutton.brlan", "bottom_in.brlan", "bottom_out.brlan", "top_in.brlan", "top_out.brlan"}; - static const char *groupNames[6] = {"B01_Button", "B02_Button", "A00_Window", "A00_Window", "A01_Window", "A01_Window"}; - bool output = layout.build("maphud.brlyt"); if (!IsWideScreen()) { @@ -39,10 +41,19 @@ int dWMHud_c::onCreate() { layout.layout.rootPane->scale.y = 0.7711f; } - layout.loadAnimations(brlanNames, 5); - layout.loadGroups(groupNames, (int[6]){0, 0, 1, 2, 3, 4}, 6); + static const char *brlanNames[2] = {"MapHUD_ShowMain.brlan", "MapHUD_ShowHeader.brlan"}; + static const char *groupNames[3] = {"G_Lives", "G_Header", "G_Footer"}; + + layout.loadAnimations(brlanNames, 2); + layout.loadGroups(groupNames, (int[3]){0, 1, 0}, 3); layout.disableAllAnimations(); + layout.enableNonLoopAnim(SHOW_LIVES); + layout.enableNonLoopAnim(SHOW_FOOTER); + + static const char *tbNames[2] = {"MenuButtonInfo", "ItemsButtonInfo"}; + layout.setLangStrings(tbNames, (int[2]){12, 15}, 4, 2); + layoutLoaded = true; } @@ -51,11 +62,17 @@ int dWMHud_c::onCreate() { int dWMHud_c::onDelete() { + if (!layoutLoaded) + return true; + return layout.free(); } int dWMHud_c::onExecute() { + if (!layoutLoaded) + return true; + layout.execAnimations(); layout.update(); @@ -64,8 +81,25 @@ int dWMHud_c::onExecute() { int dWMHud_c::onDraw() { + if (!layoutLoaded) + return true; + layout.scheduleForDrawing(); return true; } + + + +void dWMHud_c::playShowHeaderAnim() { + layout.enableNonLoopAnim(SHOW_HEADER); +} + +void dWMHud_c::playHideHeaderAnim() { + if (layout.isAnimOn(SHOW_HEADER)) { + layout.enableNonLoopAnim(SHOW_HEADER, true); + } + layout.grpHandlers[SHOW_HEADER].frameCtrl.flags = 2; // NO_LOOP | REVERSE +} + diff --git a/src/koopatlas/hud.h b/src/koopatlas/hud.h index ac7b81e..87f731b 100644 --- a/src/koopatlas/hud.h +++ b/src/koopatlas/hud.h @@ -17,6 +17,13 @@ class dWMHud_c : public dBase_c { static dWMHud_c *build(); static dWMHud_c *instance; + + + bool showingHeader; + + + void playShowHeaderAnim(); + void playHideHeaderAnim(); }; #endif |