Meter madness (#64)

* Meter Madness Part 1

* progress

* maybe

* ::build meters too

* vtables labeling, small order problems

* Moar symbols

* Renames

* some dLytNote_c

* Fixes

* Checkpoint

* ::remove funcs

* Fix includes

* Move code around

* rm dead code

* rm dead include

* Draw functions

* Update include/s/s_State.hpp

* Update include/toBeSorted/scgame.h
This commit is contained in:
robojumper
2024-10-17 23:58:38 +02:00
committed by GitHub
parent 22a5cadd57
commit b96e6ee19f
69 changed files with 4766 additions and 1692 deletions
+55 -2
View File
@@ -234,24 +234,42 @@ toBeSorted/special_item_drop_mgr.cpp:
.sbss start:0x80575438 end:0x80575440
d/lyt/meter/d_lyt_meter.cpp:
.text start:0x800C8950 end:0x800DFCB8
.text start:0x800C8950 end:0x800DF8A8
.ctors start:0x804DB6E0 end:0x804DB6E4
.rodata start:0x804E4EE0 end:0x804E5020
.data start:0x80511C80 end:0x80513B60
.sdata start:0x80572318 end:0x80572380
.sdata2 start:0x80579AD0 end:0x80579AF0
.bss start:0x805A9C98 end:0x805AA190
d/lyt/meter/d_lyt_meter_unk.cpp:
.text start:0x800DF8B0 end:0x800DFCB8
.data start:0x80513B60 end:0x80513B70
.sdata2 start:0x80579AF0 end:0x80579B60
d/lyt/meter/d_lyt_meter_a_btn.cpp:
.text start:0x800DFCC0 end:0x800E1188
.ctors start:0x804DB6E4 end:0x804DB6E8
.data start:0x80513BE8 end:0x80513F38
.bss start:0x805AA190 end:0x805AA350
d/lyt/meter/d_lyt_meter_z_btn.cpp:
.text start:0x800E1190 end:0x800E2238
.ctors start:0x804DB6E8 end:0x804DB6EC
.data start:0x80513F38 end:0x80514188
.bss start:0x805AA350 end:0x805AA450
d/lyt/meter/d_lyt_meter_key.cpp:
.text start:0x800E2240 end:0x800E4928
.ctors start:0x804DB6EC end:0x804DB6F0
.data start:0x80514188 end:0x805148B0
.bss start:0x805AA450 end:0x805AA790
d/lyt/meter/d_lyt_meter_drink.cpp:
.text start:0x800E4930 end:0x800E6AC8
.ctors start:0x804DB6F0 end:0x804DB6F4
.data start:0x805148B0 end:0x80514D60
.bss start:0x805AA790 end:0x805AA9D0
d/lyt/meter/d_lyt_meter_remocon_bg.cpp:
.text start:0x800E6AD0 end:0x800E7218
@@ -262,45 +280,67 @@ d/lyt/meter/d_lyt_meter_remocon_bg.cpp:
d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp:
.text start:0x800E7220 end:0x800E8168
.ctors start:0x804DB6F8 end:0x804DB6FC
.data start:0x80514F10 end:0x80515178
d/lyt/meter/d_lyt_meter_nun_stk.cpp:
.text start:0x800E8170 end:0x800E8ED8
.ctors start:0x804DB6FC end:0x804DB700
.data start:0x80515178 end:0x805153A8
d/lyt/meter/d_lyt_meter_item_select.cpp:
.text start:0x800E8EE0 end:0x800F35A8
.ctors start:0x804DB700 end:0x804DB704
.data start:0x805153A8 end:0x80516A28
d/lyt/meter/d_lyt_meter_plus_btn.cpp:
.text start:0x800F35B0 end:0x800F4768
.ctors start:0x804DB704 end:0x804DB708
.data start:0x80516A28 end:0x80516C90
d/lyt/meter/d_lyt_meter_minus_btn.cpp:
.text start:0x800F4770 end:0x800F8D98
.ctors start:0x804DB708 end:0x804DB70C
.data start:0x80516C90 end:0x80517818
d/lyt/meter/d_lyt_meter_cross_btn.cpp:
.text start:0x800F8DA0 end:0x800FAFC8
.ctors start:0x804DB70C end:0x804DB710
.data start:0x80517818 end:0x80517CE0
d/lyt/meter/d_lyt_meter_dowsing.cpp:
.text start:0x800FAFD0 end:0x801003E8
.ctors start:0x804DB710 end:0x804DB714
.data start:0x80517CE0 end:0x80518A60
d/lyt/meter/d_lyt_meter_rupy.cpp:
.text start:0x801003F0 end:0x801026A8
.ctors start:0x804DB714 end:0x804DB718
.data start:0x80518A60 end:0x80518F00
d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp:
.text start:0x801026B0 end:0x80105548
.ctors start:0x804DB718 end:0x804DB71C
.data start:0x80518F00 end:0x80519578
d/lyt/meter/d_lyt_meter_event_skip.cpp:
.text start:0x80105550 end:0x80105F68
.ctors start:0x804DB71C end:0x804DB720
.data start:0x80519578 end:0x80519748
d/lyt/meter/d_lyt_meter_timer.cpp:
.text start:0x80105F70 end:0x8010AEB8
.ctors start:0x804DB720 end:0x804DB724
.data start:0x80519748 end:0x80519F60
d/lyt/meter/d_lyt_meter_heart.cpp:
.text start:0x8010AEC0 end:0x8010BD48
.data start:0x80519F60 end:0x8051A320
d/lyt/meter/d_lyt_meter_shield_gauge.cpp:
.text start:0x8010BD50 end:0x8010CEC8
.ctors start:0x804DB724 end:0x804DB728
.data start:0x8051A320 end:0x8051A5A8
.bss start:0x805ACD50 end:0x805ACE10
d/lyt/d_lyt_do_button.cpp:
.text start:0x8010CED0 end:0x8010EAF8
@@ -316,6 +356,7 @@ d/lyt/d_lyt_common_icon_material.cpp:
d/lyt/d_lyt_common_icon_item.cpp:
.text start:0x80111720 end:0x80113ED8
.ctors start:0x804DB734 end:0x804DB738
.data start:0x8051B070 end:0x8051B5A0
d/lyt/d_lyt_msg_window.cpp:
.text start:0x801148F0 end:0x8011C8C8
@@ -376,6 +417,11 @@ d/lyt/d_lyt_map.cpp:
d/lyt/d_lyt_note.cpp:
.text start:0x80148DF0 end:0x80149C28
.ctors start:0x804DB770 end:0x804DB774
.rodata start:0x804E7F50 end:0x804E7F80
.data start:0x805225E8 end:0x80522820
.sdata start:0x80572868 end:0x80572870
.sdata2 start:0x80579FB8 end:0x80579FC8
.bss start:0x805B0830 end:0x805B0930
d/lyt/d_lyt_battery.cpp:
.text start:0x80149C30 end:0x8014AD18
@@ -398,21 +444,28 @@ d/lyt/d_lyt_wipe.cpp:
.text start:0x8014C6C0 end:0x8014E008
.ctors start:0x804DB77C end:0x804DB780
d/lyt/d_lyt_help.cpp:
.text start:0x8014E010 end:0x80150428
.ctors start:0x804DB780 end:0x804DB784
d/lyt/d_lyt_bird_gauge.cpp:
.text start:0x80152FD0 end:0x801548D8
.ctors start:0x804DB784 end:0x804DB788
.data start:0x80524020 end:0x80524510
d/lyt/d_lyt_sky_gauge.cpp:
.text start:0x801548E0 end:0x80155CC8
.ctors start:0x804DB788 end:0x804DB78C
.data start:0x80524510 end:0x80524928
d/lyt/d_lyt_deposit_stock.cpp:
.text start:0x80155CD0 end:0x801578A8
.ctors start:0x804DB78C end:0x804DB790
d/lyt/d_lyt_bigboss_gauge.cpp:
d/lyt/d_lyt_boss_gauge.cpp:
.text start:0x80158290 end:0x80158E78
.ctors start:0x804DB790 end:0x804DB794
.data start:0x80524CD0 end:0x80524ED0
d/lyt/d_lyt_pause_back.cpp:
.text start:0x80158E80 end:0x80159E78
+1553 -1551
View File
File diff suppressed because it is too large Load Diff
+39
View File
@@ -372,11 +372,50 @@ config.libs = [
Object(NonMatching, "d/lyt/d_textbox.cpp"),
Object(Matching, "d/lyt/d_window.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_unk.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_a_btn.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_z_btn.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_key.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_drink.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_remocon_bg.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_nun_stk.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_item_select.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_plus_btn.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_minus_btn.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_cross_btn.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_dowsing.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_rupy.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_event_skip.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_timer.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_heart.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_shield_gauge.cpp"),
Object(NonMatching, "d/lyt/d_lyt_do_button.cpp"),
Object(NonMatching, "d/lyt/d_lyt_common_icon_material.cpp"),
Object(NonMatching, "d/lyt/d_lyt_common_icon_item.cpp"),
Object(NonMatching, "d/lyt/d_lyt_msg_window.cpp"),
Object(NonMatching, "d/lyt/d_lyt_msg_window_select_btn.cpp"),
Object(NonMatching, "d/lyt/d_lyt_msg_window_talk.cpp"),
Object(NonMatching, "d/lyt/d_lyt_msg_window_link.cpp"),
Object(NonMatching, "d/lyt/d_lyt_msg_window_get.cpp"),
Object(NonMatching, "d/lyt/d_lyt_msg_window_sword.cpp"),
Object(NonMatching, "d/lyt/d_lyt_msg_window_wood.cpp"),
Object(NonMatching, "d/lyt/d_lyt_msg_window_stone.cpp"),
Object(NonMatching, "d/lyt/d_lyt_msg_window_demo.cpp"),
Object(NonMatching, "d/lyt/d_lyt_simple_window.cpp"),
Object(NonMatching, "d/lyt/d_lyt_auto_caption.cpp"),
Object(NonMatching, "d/lyt/d_lyt_auto_explain.cpp"),
Object(NonMatching, "d/lyt/d_lyt_map_capture.cpp"),
Object(NonMatching, "d/lyt/d_lyt_map.cpp"),
Object(NonMatching, "d/lyt/d_lyt_note.cpp"),
Object(Matching, "d/lyt/d_lyt_battery.cpp"),
Object(NonMatching, "d/lyt/d_lyt_area_caption.cpp"),
Object(NonMatching, "d/lyt/d_lyt_wipe.cpp"),
Object(NonMatching, "d/lyt/d_lyt_help.cpp"),
Object(NonMatching, "d/lyt/d_lyt_bird_gauge.cpp"),
Object(NonMatching, "d/lyt/d_lyt_sky_gauge.cpp"),
Object(NonMatching, "d/lyt/d_lyt_boss_gauge.cpp"),
Object(NonMatching, "d/lyt/d_lyt_pause_disp_00.cpp"),
Object(Matching, "d/lyt/d_lyt_fader.cpp"),
Object(Matching, "d/lyt/d_screen_fader.cpp"),
+80 -20
View File
@@ -1,7 +1,6 @@
#ifndef D2D_H
#define D2D_H
#include "d/lyt/meter/d_lyt_meter_base.h"
#include "libms/msgfile.h"
#include "m/m2d.h"
#include "nw4r/lyt/lyt_pane.h"
@@ -15,6 +14,8 @@ namespace d2d {
class ResAccIf_c : public m2d::ResAccIf_c {
public:
ResAccIf_c() {}
virtual ~ResAccIf_c() {}
/* 0xB4 */ nw4r::lyt::FontRefLink mFontRefLinks[5];
bool attach(void *data, const char *name);
@@ -94,8 +95,6 @@ public:
bool fn_800ABE50(dTextBox_c *textbox, int arg, void *unk);
static void linkMeters(nw4r::lyt::Group *group, LytMeterGroup *meterGroup);
private:
void setPropertiesRecursive(nw4r::lyt::Pane *pane, f32, f32, f32, f32, f32);
void setProperties(nw4r::lyt::Pane *pane, f32, f32, f32, f32, f32);
@@ -113,6 +112,62 @@ private:
/* 0x8C */ MsbtInfo *mpMsbtInfo;
};
class dLytSub : public d2d::LytBase_c {
public:
dLytSub() {}
virtual bool build(const char *name, m2d::ResAccIf_c *acc) override {
mpName = name;
return d2d::LytBase_c::build(name, acc);
}
const char *getName() const {
return mpName;
}
private:
/// This name is stored by `build` and usually accessed by dLytMeters' getName functions
const char *mpName;
};
class dSubPane;
struct SubPaneListNode {
nw4r::ut::LinkListNode mNode;
dSubPane *mpLytPane;
nw4r::lyt::Pane *mpPane;
};
typedef nw4r::ut::LinkList<SubPaneListNode, offsetof(SubPaneListNode, mNode)> SubPaneList;
class dSubPane {
public:
dSubPane() : field_0x04(false), field_0x05(0) {}
virtual ~dSubPane() {}
virtual bool build(ResAccIf_c *resAcc) = 0;
virtual bool remove() = 0;
virtual bool LytMeter0x14() = 0;
virtual nw4r::lyt::Pane *getPane() = 0;
virtual LytBase_c *getLyt() = 0;
virtual const char *getName() const = 0;
virtual bool LytMeter0x24() const {
return field_0x04;
}
virtual void LytMeter0x28(bool arg) {
field_0x04 = arg;
}
virtual u8 LytMeter0x2C() const {
return field_0x05;
}
virtual void LytMeter0x30(u8 arg) {
field_0x05 = arg;
}
static void linkMeters(nw4r::lyt::Group *group, SubPaneList *meterGroup);
bool field_0x04;
u8 field_0x05;
};
struct AnmGroupBase_c {
AnmGroupBase_c(m2d::FrameCtrl_c *frameCtrl) : field_0x04(nullptr), mFlags(0), mpFrameCtrl(frameCtrl) {}
virtual ~AnmGroupBase_c() {}
@@ -173,6 +228,27 @@ struct AnmGroupBase_c {
return (mFlags & 2) != 0;
}
inline bool isStop2() const {
return mpFrameCtrl->isStop2();
}
inline void playBackwardsOnce() {
mpFrameCtrl->setFlags(FLAG_NO_LOOP | FLAG_BACKWARDS);
setToEnd2();
}
inline void playLoop() {
mpFrameCtrl->setFlags(FLAG_NO_LOOP);
setToEnd2();
}
inline void setToEnd2() {
m2d::FrameCtrl_c &ctrl = *mpFrameCtrl;
ctrl.setCurrFrame(ctrl.getEndFrame());
syncAnmFrame();
}
private:
/* 0x04 */ void *field_0x04;
/* 0x08 */ m2d::FrameCtrl_c *mpFrameCtrl;
@@ -182,29 +258,13 @@ private:
/* 0x24 */ nw4r::lyt::AnimTransform *mpAnmTransform;
};
// Size: 0x40
struct AnmGroup_c : public AnmGroupBase_c {
AnmGroup_c() : AnmGroupBase_c(&mFrameCtrl) {}
virtual ~AnmGroup_c() {}
/* 0x28 */ m2d::FrameCtrl_c mFrameCtrl;
};
// Probably pause menu specific
struct dLytStructB : public dLytMeterBase {
dLytStructB();
~dLytStructB();
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool LytMeter0x10() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual void *LytMeter0x1C() override;
virtual const char *getName() const override;
void init(void *, u8);
u8 field_0x00[0x808 - 0x08];
};
} // namespace d2d
#endif
+1 -2
View File
@@ -2,7 +2,6 @@
#define D_LYT_AREA_CAPTION_H
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_sub.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
@@ -26,7 +25,7 @@ public:
private:
/* 0x000 */ UI_STATE_MGR_DECLARE(dLytAreaCaptionParts_c);
/* 0x040 */ d2d::ResAccIf_c mResAcc;
/* 0x0EB */ dLytSub mLyt;
/* 0x0EB */ d2d::dLytSub mLyt;
/* 0x110 */ d2d::AnmGroup_c mAnmGroups[4];
/* 0x540 */ dTextBox_c *mTextBoxes[3];
/* 0x54C */ u8 field_0x54C;
+1 -3
View File
@@ -2,8 +2,6 @@
#define D_LYT_BATTERY_H
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_sub.h"
#include "d/lyt/meter/d_lyt_meter_base.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
@@ -31,7 +29,7 @@ private:
/* 0x000 */ UI_STATE_MGR_DECLARE(dLytBattery_c);
/* 0x040 */ d2d::ResAccIf_c mResAcc;
/* 0x0EB */ dLytSub mLyt;
/* 0x0EB */ d2d::dLytSub mLyt;
/* 0x110 */ d2d::AnmGroup_c mAnmGroups[4];
/* 0x540 */ bool mDismissManually;
+49
View File
@@ -0,0 +1,49 @@
#ifndef D_LYT_BIRD_GAUGE_H
#define D_LYT_BIRD_GAUGE_H
#include "d/lyt/d2d.h"
#include "m/m_color.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytBirdGaugeMain_c {
public:
dLytBirdGaugeMain_c();
virtual ~dLytBirdGaugeMain_c() {}
private:
STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeNone);
STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeIn);
STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeDash);
STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeRecovery);
STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeOut);
/* 0x04 */ UI_STATE_MGR_DECLARE(dLytBirdGaugeMain_c);
/* 0x40 */ d2d::dLytSub mLyt;
/* 0xD4 */ d2d::AnmGroup_c mAnmGroups[8];
};
class dLytBirdGauge_c : public d2d::dSubPane {
public:
dLytBirdGauge_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytBirdGauge_c() {}
private:
STATE_FUNC_DECLARE(dLytBirdGauge_c, In);
STATE_FUNC_DECLARE(dLytBirdGauge_c, None);
STATE_FUNC_DECLARE(dLytBirdGauge_c, Dash);
STATE_FUNC_DECLARE(dLytBirdGauge_c, Recovery);
STATE_FUNC_DECLARE(dLytBirdGauge_c, Out);
/* 0x008 */ UI_STATE_MGR_DECLARE(dLytBirdGauge_c);
/* 0x008 */ d2d::ResAccIf_c mResAcc;
/* 0x3B4 */ dLytBirdGaugeMain_c mMain;
};
#endif
+29
View File
@@ -0,0 +1,29 @@
#ifndef D_LYT_BOSS_GAUGE_H
#define D_LYT_BOSS_GAUGE_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytBossGauge_c {
public:
dLytBossGauge_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dLytBossGauge_c() {}
bool build();
bool remove();
bool draw();
private:
STATE_FUNC_DECLARE(dLytBossGauge_c, None);
STATE_FUNC_DECLARE(dLytBossGauge_c, In);
STATE_FUNC_DECLARE(dLytBossGauge_c, Move);
STATE_FUNC_DECLARE(dLytBossGauge_c, Out);
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytBossGauge_c);
/* 0x040 */ d2d::ResAccIf_c mResAcc;
/* 0x3B0 */ d2d::dLytSub mLyt;
/* 0x444 */ d2d::AnmGroup_c mAnmGroups[4];
};
#endif
+88
View File
@@ -0,0 +1,88 @@
#ifndef D_LYT_COMMON_ICON_ITEM_H
#define D_LYT_COMMON_ICON_ITEM_H
#include "d/lyt/d2d.h"
#include "d/lyt/d_structd.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytCommonIconItemPart1_c {
public:
dLytCommonIconItemPart1_c()
: field_0x2D4(0), field_0x2D5(0), field_0x2FC(0), field_0x2FD(0), field_0x2FE(0), field_0x2FF(0) {}
virtual ~dLytCommonIconItemPart1_c() {}
d2d::dLytSub lyt;
d2d::AnmGroup_c mAnm[7];
u32 unk[0x3];
d2d::dLytStructD structD;
u8 field_0x2D4;
u8 field_0x2D5;
u8 field_0x2D6[0x2FC - 0x2D6];
u8 field_0x2FC;
u8 field_0x2FD;
u8 field_0x2FE;
u8 field_0x2FF;
};
class dLytCommonIconItemPart2_c {
public:
dLytCommonIconItemPart2_c()
: field_0x64C(0), field_0x64D(0), field_0x674(0), field_0x675(0), field_0x676(0), field_0x677(0),
field_0x678(1), field_0x67C(0.0f) {}
virtual ~dLytCommonIconItemPart2_c() {}
d2d::dLytSub lyt;
d2d::AnmGroup_c mAnm[10];
u32 unk[0x3];
d2d::dLytStructD structD;
u8 field_0x64C;
u8 field_0x64D;
u8 field_0x64E[0x674 - 0x64E];
u8 field_0x674;
u8 field_0x675;
u8 field_0x676;
u8 field_0x677;
u8 field_0x678;
f32 field_0x67C;
};
class dLytCommonIconItemPart3_c {
public:
dLytCommonIconItemPart3_c() : field_0x804(0), field_0x805(0), field_0x806(0) {}
virtual ~dLytCommonIconItemPart3_c() {}
d2d::dLytSub lyt;
d2d::AnmGroup_c mAnm[3];
u32 unk;
d2d::dLytStructD structD;
u8 field_0x804;
u8 field_0x805;
u8 field_0x806;
};
class dLytCommonIconItem_c : public d2d::dSubPane {
public:
dLytCommonIconItem_c() : mStateMgr(*this, sStateID::null), unk(3) {}
~dLytCommonIconItem_c() {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
void init(void *, u8);
private:
STATE_FUNC_DECLARE(dLytCommonIconItem_c, None);
STATE_FUNC_DECLARE(dLytCommonIconItem_c, In);
STATE_FUNC_DECLARE(dLytCommonIconItem_c, Wait);
STATE_FUNC_DECLARE(dLytCommonIconItem_c, Out);
UI_STATE_MGR_DECLARE(dLytCommonIconItem_c);
u8 unk;
dLytCommonIconItemPart1_c part1;
dLytCommonIconItemPart2_c part2;
dLytCommonIconItemPart3_c part3;
};
#endif
+6 -3
View File
@@ -2,7 +2,6 @@
#define D_LYT_DO_BUTTON_H
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_sub.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
@@ -11,10 +10,13 @@ public:
dLytDobutton_c() : mStateMgr(*this, sStateID::null) {
sInstance = this;
}
virtual ~dLytDobutton_c() {}
bool init(m2d::ResAccIf_c *resAcc);
bool remove();
bool draw();
dLytDobutton_c *sInstance;
static dLytDobutton_c *sInstance;
private:
STATE_FUNC_DECLARE(dLytDobutton_c, InvisibleWait);
@@ -24,7 +26,7 @@ private:
STATE_FUNC_DECLARE(dLytDobutton_c, Out);
UI_STATE_MGR_DECLARE(dLytDobutton_c);
/* 0x040 */ dLytSub mLyt;
/* 0x040 */ d2d::dLytSub mLyt;
/* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[12];
/* 0x3D4 */ u8 field_0x3D4[0x470 - 0x3D4];
/* 0x470 */ s32 mDoActionToShow;
@@ -35,6 +37,7 @@ private:
/* 0x484 */ s32 mNextDoActionToShow;
/* 0x488 */ s32 field_0x488;
/* 0x48C */ s32 field_0x48C;
/* 0x490 */ s32 field_0x490;
};
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef D_LYT_METER_CONFIGURATION
#define D_LYT_METER_CONFIGURATION
#include "common.h"
class dLytMeterConfiguration_c {
public:
dLytMeterConfiguration_c();
virtual ~dLytMeterConfiguration_c();
static dLytMeterConfiguration_c *sInstance;
f32 field_0x04[0x7A - 0x01];
};
#endif
+44
View File
@@ -0,0 +1,44 @@
#ifndef D_LYT_NOTE_H
#define D_LYT_NOTE_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
// size 0x27C
class dLytNote_c {
public:
dLytNote_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dLytNote_c() {}
bool build(d2d::ResAccIf_c *);
bool remove();
void execute();
void draw();
f32 getField0x260() const;
void setFrame(f32);
private:
STATE_FUNC_DECLARE(dLytNote_c, Wait);
STATE_FUNC_DECLARE(dLytNote_c, In);
STATE_FUNC_DECLARE(dLytNote_c, Move);
STATE_FUNC_DECLARE(dLytNote_c, Out);
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytNote_c);
/* 0x040 */ d2d::LytBase_c mLyt;
/* 0x0D0 */ d2d::AnmGroup_c mAnmGroups[6];
/* 0x250 */ nw4r::lyt::Pane *mpPane;
/* 0x254 */ mVec3_c mTranslate;
/* 0x260 */ f32 field_0x260;
/* 0x264 */ u32 field_0x264;
/* 0x268 */ s32 field_0x268;
/* 0x26C */ u32 field_0x26C;
/* 0x270 */ u8 field_0x270;
/* 0x271 */ u8 field_0x271;
/* 0x272 */ u8 field_0x272;
/* 0x273 */ u8 field_0x273;
/* 0x274 */ u8 field_0x274;
};
#endif
+4 -3
View File
@@ -3,6 +3,7 @@
#include "d/lyt/d2d.h"
#include "d/lyt/d_structd.h"
#include "d/lyt/d_lyt_common_icon_item.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
@@ -27,9 +28,9 @@ private:
STATE_MGR_DECLARE(dLytPauseDisp00_c);
d2d::LytBase_c mLytBase;
d2d::AnmGroup_c field_0x00D0[0x7E];
d2d::dLytStructB field_0x2050[0x18];
/* 0xE110 */ LytMeterGroup mLytMeterGroup;
LytMeterListNode field_0xE11C[0x18];
dLytCommonIconItem_c field_0x2050[0x18];
/* 0xE110 */ d2d::SubPaneList mSubpanes;
d2d::SubPaneListNode field_0xE11C[0x18];
d2d::dLytStructD field_0xE29C;
};
+47
View File
@@ -0,0 +1,47 @@
#ifndef D_LYT_SKY_GAUGE_H
#define D_LYT_SKY_GAUGE_H
#include "d/lyt/d2d.h"
#include "m/m_color.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytSkyGaugeMain_c {
public:
dLytSkyGaugeMain_c();
virtual ~dLytSkyGaugeMain_c() {}
private:
STATE_FUNC_DECLARE(dLytSkyGaugeMain_c, ModeNone);
STATE_FUNC_DECLARE(dLytSkyGaugeMain_c, ModeIn);
STATE_FUNC_DECLARE(dLytSkyGaugeMain_c, ModeMove);
STATE_FUNC_DECLARE(dLytSkyGaugeMain_c, ModeOut);
/* 0x04 */ UI_STATE_MGR_DECLARE(dLytSkyGaugeMain_c);
/* 0x40 */ d2d::dLytSub mLyt;
/* 0xD4 */ d2d::AnmGroup_c mAnmGroups[3];
};
class dLytSkyGauge_c : public d2d::dSubPane {
public:
dLytSkyGauge_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytSkyGauge_c() {}
private:
STATE_FUNC_DECLARE(dLytSkyGauge_c, ModeNone);
STATE_FUNC_DECLARE(dLytSkyGauge_c, ModeIn);
STATE_FUNC_DECLARE(dLytSkyGauge_c, ModeMove);
STATE_FUNC_DECLARE(dLytSkyGauge_c, ModeOut);
/* 0x008 */ UI_STATE_MGR_DECLARE(dLytSkyGauge_c);
/* 0x008 */ d2d::ResAccIf_c mResAcc;
/* 0x3B4 */ dLytSkyGaugeMain_c mMain;
};
#endif
-23
View File
@@ -1,23 +0,0 @@
#ifndef D_LYT_SUB_H
#define D_LYT_SUB_H
#include "d/lyt/d2d.h"
class dLytSub : public d2d::LytBase_c {
public:
dLytSub() {}
virtual bool build(const char *name, m2d::ResAccIf_c *acc) override {
mpName = name;
return d2d::LytBase_c::build(name, acc);
}
const char *getName() const {
return mpName;
}
private:
/// This name is stored by `build` and usually accessed by dLytMeters' getName functions
const char *mpName;
};
#endif
+42
View File
@@ -0,0 +1,42 @@
#ifndef D_LYT_UNKNOWNS_H
#define D_LYT_UNKNOWNS_H
#include "common.h"
#include "d/lyt/d2d.h"
class LytDoButtonRelated {
public:
LytDoButtonRelated();
virtual ~LytDoButtonRelated();
bool build(d2d::ResAccIf_c *resAcc);
bool remove();
static LytDoButtonRelated *sInstance;
private:
u8 field_0x04[0x40 - 0x04];
};
// size 0x27C
class LytBirdButtonRelated {
public:
LytBirdButtonRelated() {
sInstance = this;
}
~LytBirdButtonRelated() {
sInstance = nullptr;
}
bool build(d2d::ResAccIf_c *resAcc);
bool remove();
bool draw();
static LytBirdButtonRelated *sInstance;
private:
d2d::LytBase_c mLyt;
d2d::AnmGroup_c mAnmGroups[7];
/* 0x250 */ u8 field_0x250[0x27C - 0x250];
};
#endif
+21 -4
View File
@@ -8,8 +8,9 @@
namespace d2d {
struct dLytStructD_Base {
dLytStructD_Base() : field_0x0C(0), field_0x10(0), field_0x14(0), field_0x015(0), field_0x016(0) {}
virtual ~dLytStructD_Base();
dLytStructD_Base()
: field_0x0C(0), field_0x10(0), field_0x14(0), field_0x015(0), field_0x016(0) {}
virtual ~dLytStructD_Base() {}
TListNode<dLytStructD_Base> mLink;
u32 field_0x0C;
u32 field_0x10;
@@ -18,8 +19,24 @@ struct dLytStructD_Base {
u8 field_0x016;
};
struct dLytStructDInArray {
dLytStructDInArray() {
field_0x04 = 0;
field_0x08 = 0;
field_0x0A = 0;
field_0x0C = 0;
field_0x0E = 0;
}
virtual ~dLytStructDInArray() {}
u32 field_0x04;
u16 field_0x08;
u16 field_0x0A;
u16 field_0x0C;
u16 field_0x0E;
};
struct dLytStructD : dLytStructD_Base {
dLytStructD() : field_0x18(0), field_0x1C(0), field_0x20(0), field_0x22(0), field_0x23(0), field_0x24(0) {}
dLytStructD() : field_0x18(0), field_0x1C(nullptr), field_0x20(0), field_0x22(0), field_0x23(0), field_0x24(0) {}
virtual ~dLytStructD();
@@ -28,7 +45,7 @@ struct dLytStructD : dLytStructD_Base {
void fn_80065F70();
u32 field_0x18;
u32 field_0x1C;
dLytStructDInArray *field_0x1C;
u16 field_0x20;
u8 field_0x22;
u8 field_0x23;
+195 -8
View File
@@ -1,21 +1,208 @@
#ifndef D_LYT_METER_H
#define D_LYT_METER_H
// TODO sort includes for vtable order
// clang-format off
#include "d/lyt/d2d.h"
#include "d/lyt/meter/d_lyt_meter.h"
#include "d/lyt/d_lyt_do_button.h"
#include "d/lyt/meter/d_lyt_meter_shield_gauge.h"
#include "d/lyt/d_lyt_common_icon_item.h"
#include "d/lyt/meter/d_lyt_meter_cross_btn.h"
#include "d/lyt/meter/d_lyt_meter_plus_btn.h"
#include "d/lyt/meter/d_lyt_meter_minus_btn.h"
#include "d/lyt/meter/d_lyt_meter_dowsing.h"
#include "d/lyt/meter/d_lyt_meter_a_btn.h"
#include "d/lyt/meter/d_lyt_meter_z_btn.h"
#include "d/lyt/meter/d_lyt_meter_nun_stk.h"
#include "d/lyt/meter/d_lyt_meter_heart.h"
#include "d/lyt/meter/d_lyt_meter_remocon_bg.h"
#include "d/lyt/meter/d_lyt_meter_nunchaku_bg.h"
#include "d/lyt/meter/d_lyt_meter_rupy.h"
#include "d/lyt/meter/d_lyt_meter_ganbari_gauge.h"
#include "d/lyt/meter/d_lyt_meter_event_skip.h"
#include "d/lyt/meter/d_lyt_meter_item_select.h"
// clang-format on
class dLytMeter1Button_c : public d2d::dSubPane {
public:
dLytMeter1Button_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dLytMeter1Button_c() {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override {
return mLyt.getLayout()->GetRootPane();
}
virtual d2d::LytBase_c *getLyt() override {
return &mLyt;
}
virtual const char *getName() const {
return mLyt.getName();
}
private:
STATE_FUNC_DECLARE(dLytMeter1Button_c, Wait);
STATE_FUNC_DECLARE(dLytMeter1Button_c, ToUse);
STATE_FUNC_DECLARE(dLytMeter1Button_c, ToUnuse);
STATE_FUNC_DECLARE(dLytMeter1Button_c, Unuse);
UI_STATE_MGR_DECLARE(dLytMeter1Button_c);
d2d::dLytSub mLyt;
d2d::AnmGroup_c mAnmGroups[3];
/* 0x198 */ dWindow_c *mpWindow;
/* 0x19C */ dTextBox_c *mpTextbox;
/* 0x1A0 */ u32 field_0x1A0;
/* 0x1A4 */ s32 field_0x1A4;
/* 0x1A8 */ s32 field_0x1A8;
/* 0x1AC */ u8 field_0x1AC;
/* 0x1AD */ u8 field_0x1AD;
};
class dLytMeter2Button_c : public d2d::dSubPane {
public:
dLytMeter2Button_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dLytMeter2Button_c() {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override {
return mLyt.getLayout()->GetRootPane();
}
virtual d2d::LytBase_c *getLyt() override {
return &mLyt;
}
virtual const char *getName() const {
return mLyt.getName();
}
private:
STATE_FUNC_DECLARE(dLytMeter2Button_c, Wait);
STATE_FUNC_DECLARE(dLytMeter2Button_c, ToUse);
STATE_FUNC_DECLARE(dLytMeter2Button_c, ToUnuse);
STATE_FUNC_DECLARE(dLytMeter2Button_c, Unuse);
UI_STATE_MGR_DECLARE(dLytMeter2Button_c);
d2d::dLytSub mLyt;
d2d::AnmGroup_c mAnmGroups[3];
/* 0x198 */ dWindow_c *mpWindow;
/* 0x19C */ dTextBox_c *mpTextbox;
/* 0x1A0 */ u32 field_0x1A0;
/* 0x1A4 */ s32 field_0x1A4;
/* 0x1A8 */ s32 field_0x1A8;
/* 0x1AC */ u8 field_0x1AC;
/* 0x1AD */ u8 field_0x1AD;
};
class dLytMeterParts_c {
public:
dLytMeterParts_c() : mStateMgr(*this, sStateID::null) {}
private:
STATE_FUNC_DECLARE(dLytMeterParts_c, Invisible);
STATE_FUNC_DECLARE(dLytMeterParts_c, In);
STATE_FUNC_DECLARE(dLytMeterParts_c, Visible);
STATE_FUNC_DECLARE(dLytMeterParts_c, Out);
UI_STATE_MGR_DECLARE(dLytMeterParts_c);
u8 field_0x3C[0x10];
};
// TODO sort includes for vtable order
// clang-format off
#include "d/lyt/meter/d_lyt_meter_key.h"
#include "d/lyt/d_lyt_unknowns.h"
#include "d/lyt/meter/d_lyt_meter_drink.h"
#include "d/lyt/meter/d_lyt_meter_timer.h"
#include "d/lyt/d_lyt_bird_gauge.h"
#include "d/lyt/d_lyt_boss_gauge.h"
#include "d/lyt/d_lyt_sky_gauge.h"
// clang-format on
class dLytMeter_c {
public:
dLytMeter_c();
virtual ~dLytMeter_c() {}
d2d::ResAccIf_c mResAcc;
d2d::LytBase_c mLyt;
d2d::AnmGroup_c mAnmGroups[34];
// Meters...
dLytMeterRemoconBg_c mRemoCon;
LytMeterGroup mMeters;
bool build(d2d::ResAccIf_c *resAcc);
bool remove();
bool draw();
bool isSilentRealm();
/* 0x00004 */ d2d::ResAccIf_c mResAcc;
/* 0x00374 */ d2d::LytBase_c mLyt;
/* 0x00404 */ d2d::AnmGroup_c mAnmGroups[34];
u8 field_0x00C84[0x00C8C - 0x00C84];
/* 0x00C8C */ dLytMeterGanbariGauge_c mGanbariGauge;
/* 0x011E8 */ dLytMeterRupy_c mRupy;
/* 0x01A98 */ dLytMeterItemSelect_c mItemSelect;
/* 0x07260 */ dLytMeterCrossBtn_c mCrossBtn;
/* 0x078A0 */ dLytMeterPlusBtn_c mPlusBtn;
/* 0x07A64 */ dLytMeterMinusBtn_c mMinusBtn;
/* 0x0C928 */ dLytMeterDowsing_c mDowsing;
/* 0x11E34 */ dLytMeterABtn_c mABtn;
/* 0x12000 */ dLytMeterZBtn_c mZBtn;
/* 0x121C8 */ dLytMeterNunStk_c mNunStk;
/* 0x12350 */ dLytMeterRemoconBg_c mRemoCon;
/* 0x12440 */ dLytMeterNunchakuBg_c mNunBg;
/* 0x12608 */ dLytMeterHeart_c mHeart;
/* 0x12DA4 */ dLytMeterShieldGauge_c mShield;
/* 0x130C4 */ dLytMeter1Button_c *mp1Button;
/* 0x130C8 */ dLytMeter2Button_c *mp2Button;
/* 0x130CC */ dLytMeterTimer_c *mpTimer;
/* 0x130D0 */ LytMeterTimerPart1_c *mpTimerPart1;
/* 0x130D4 */ LytMeterTimerPart2_c *mpTimerPart2;
/* 0x130D8 */ dLytMeterKakeraKey_c *mpKakeraKey;
/* 0x130DC */ dLytMeterBossKey_c *mpBossKey;
/* 0x130E0 */ dLytMeterSmallKey_c *mpSmallKey;
/* 0x130E4 */ dLytMeterDrink_c *mpDrink;
/* 0x130E8 */ dLytSkyGauge_c *mpSkyGauge;
/* 0x130EC */ dLytBirdGauge_c *mpBirdGauge;
/* 0x130F0 */ dLytBossGauge_c *mpBossGauge;
/* 0x130F4 */ d2d::SubPaneList mMeters;
/* 0x13100 */ d2d::SubPaneListNode mNodes[16];
/* 0x13200 */ u8 field_0x13200[0x13204 - 0x13200];
/* 0x13204 */ dLytMeterParts_c mParts[16];
/* 0x136C4 */ mVec3_c mPosArray1[2];
/* 0x136DC */ mVec3_c mPosArray2[7];
/* 0x13730 */ mVec3_c mPos1;
/* 0x1373C */ mVec3_c mPos2;
/* 0x13748 */ u8 field_0x13748[0x13750 - 0x13748];
/* 0x13750 */ s32 field_0x13750;
/* 0x13754 */ u8 field_0x13754[0x137B4 - 0x13754];
/* 0x137B4 */ mVec3_c mPos3;
/* 0x13B38 */ u32 field_0x13B38;
};
// made up name
class dLytMeterContainer_c {
public:
dLytMeterContainer_c();
virtual ~dLytMeterContainer_c() {
sInstance = nullptr;
}
bool build();
bool remove();
bool draw();
static dLytMeterContainer_c *sInstance;
// FIXME This goes to doButton!!!
bool isButtonFlag(u32 flag) {
return (mMeter.field_0x13B38 & flag) == flag;
}
private:
/* 0x00004 */ d2d::ResAccIf_c mResAcc;
/* 0x00374 */ dLytMeterEventSkip_c *mpEventSkip;
/* 0x00378 */ dLytMeter_c mMeter;
/* 0x13B3C */ dLytDobutton_c *mpDoButton;
/* 0x13B40 */ LytDoButtonRelated *mpDoButtonRelated;
/* 0x13B44 */ LytBirdButtonRelated *mpBirdRelated;
/* 0x13B48 */ bool mVisible;
};
#endif
+60
View File
@@ -0,0 +1,60 @@
#ifndef D_LYT_METER_A_BTN_H
#define D_LYT_METER_A_BTN_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterABtn_c : public d2d::dSubPane {
public:
dLytMeterABtn_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override {
return mLyt.getLayout()->GetRootPane();
}
virtual d2d::LytBase_c *getLyt() override {
return &mLyt;
}
virtual const char *getName() const {
return mLyt.getName();
}
virtual ~dLytMeterABtn_c() {}
void setContainerGroups(d2d::AnmGroup_c *g1, d2d::AnmGroup_c *g2) {
mpContainerAnmGroup1 = g1;
mpContainerAnmGroup2 = g2;
}
private:
void fn_800E0870(u32);
STATE_FUNC_DECLARE(dLytMeterABtn_c, InvisibleWait);
STATE_FUNC_DECLARE(dLytMeterABtn_c, In);
STATE_FUNC_DECLARE(dLytMeterABtn_c, Out);
STATE_FUNC_DECLARE(dLytMeterABtn_c, Wait);
STATE_FUNC_DECLARE(dLytMeterABtn_c, On);
STATE_FUNC_DECLARE(dLytMeterABtn_c, Active);
STATE_FUNC_DECLARE(dLytMeterABtn_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterABtn_c);
d2d::dLytSub mLyt;
/* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[3];
/* 0x198 */ d2d::AnmGroup_c *mpContainerAnmGroup1;
/* 0x19C */ d2d::AnmGroup_c *mpContainerAnmGroup2;
/* 0x1A0 */ nw4r::lyt::Pane *mpPane;
/* 0x1A4 */ void *field_0x1A4;
/* 0x1A8 */ dTextBox_c *mpTextBoxes[2];
/* 0x1B0 */ dWindow_c *mpWindow;
/* 0x1B4 */ dTextBox_c *mpSizeBox;
/* 0x1B8 */ u32 field_0x1B8;
/* 0x1BC */ u32 field_0x1BC;
/* 0x1C0 */ u32 field_0x1C0;
/* 0x1C4 */ u32 field_0x1C4;
/* 0x1C8 */ u8 field_0x1C8;
/* 0x1C9 */ u8 field_0x1C9;
/* 0x1CA */ u8 field_0x1CA;
/* 0x1CB */ u8 field_0x1CB;
};
#endif
-46
View File
@@ -1,46 +0,0 @@
#ifndef D_LYT_METER_BASE_H
#define D_LYT_METER_BASE_H
#include "nw4r/lyt/lyt_pane.h"
namespace d2d {
class ResAccIf_c;
}
class dLytMeterBase {
public:
dLytMeterBase() : field_0x04(false), field_0x05(0) {}
virtual ~dLytMeterBase() {}
virtual bool build(d2d::ResAccIf_c *resAcc) = 0;
virtual bool LytMeter0x10() = 0;
virtual bool LytMeter0x14() = 0;
virtual nw4r::lyt::Pane *getPane() = 0;
virtual void *LytMeter0x1C() = 0;
virtual const char *getName() const = 0;
virtual bool LytMeter0x24() const {
return field_0x04;
}
virtual void LytMeter0x28(bool arg) {
field_0x04 = arg;
}
virtual u8 LytMeter0x2C() const {
return field_0x05;
}
virtual void LytMeter0x30(u8 arg) {
field_0x05 = arg;
}
bool field_0x04;
u8 field_0x05;
};
struct LytMeterListNode {
nw4r::ut::LinkListNode mNode;
dLytMeterBase *mpMeter;
nw4r::lyt::Pane *mpPane;
};
typedef nw4r::ut::LinkList<LytMeterListNode, 0> LytMeterGroup;
#endif
@@ -0,0 +1,49 @@
#ifndef D_LYT_METER_CROSS_BTN_H
#define D_LYT_METER_CROSS_BTN_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
// Size 0x80
class dLytMeterCrossBtnParts_c {
public:
dLytMeterCrossBtnParts_c(): mStateMgr(*this, sStateID::null) {}
~dLytMeterCrossBtnParts_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, Wait);
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, On);
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, Active);
STATE_FUNC_DECLARE(dLytMeterCrossBtnParts_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterCrossBtnParts_c);
u32 padding[17];
};
class dLytMeterCrossBtn_c : public d2d::dSubPane {
public:
dLytMeterCrossBtn_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterCrossBtn_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, Wait);
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, ToUse);
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, ToUnuse);
STATE_FUNC_DECLARE(dLytMeterCrossBtn_c, Unuse);
UI_STATE_MGR_DECLARE(dLytMeterCrossBtn_c);
d2d::dLytSub mLyt;
/* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[12];
/* 0x3D8 */ u8 field_0x3D8[0x420 - 0x3D8];
/* 0x420 */ dLytMeterCrossBtnParts_c mParts[4];
/* 0x??? */ u8 padding[0x78A0 - 0x7880];
};
#endif
+115
View File
@@ -0,0 +1,115 @@
#ifndef D_LYT_METER_DOWSING_H
#define D_LYT_METER_DOWSING_H
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_common_icon_item.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterDowsingMenuIcon_c {
public:
dLytMeterDowsingMenuIcon_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dLytMeterDowsingMenuIcon_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, Wait);
STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, On);
STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, Select);
STATE_FUNC_DECLARE(dLytMeterDowsingMenuIcon_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterDowsingMenuIcon_c);
u32 field_0x40;
u32 field_0x44;
};
class dLytMeterDowsingBlink_c {
public:
dLytMeterDowsingBlink_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterDowsingBlink_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, Wait);
STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, On);
STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, Select);
STATE_FUNC_DECLARE(dLytMeterDowsingBlink_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterDowsingBlink_c);
u32 field_0x40;
u32 field_0x44;
};
class dLytMeterDowsingInput_c {
public:
dLytMeterDowsingInput_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterDowsingInput_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, Wait);
STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, On);
STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, Select);
STATE_FUNC_DECLARE(dLytMeterDowsingInput_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterDowsingInput_c);
u32 field_0x40;
u32 field_0x44;
};
class dLytMeterDowsingText_c {
public:
dLytMeterDowsingText_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterDowsingText_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterDowsingText_c, Wait);
STATE_FUNC_DECLARE(dLytMeterDowsingText_c, On);
STATE_FUNC_DECLARE(dLytMeterDowsingText_c, Select);
STATE_FUNC_DECLARE(dLytMeterDowsingText_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterDowsingText_c);
u32 field_0x40;
u32 field_0x44;
};
class dLytMeterDowsing_c : public d2d::dSubPane {
public:
dLytMeterDowsing_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterDowsing_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterDowsing_c, Invisible);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, Wait);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, MenuSelectingIn);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, MenuSelecting);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, MenuSelectingOut);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, Reset);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, ToUse);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, ToUnuse);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, Unuse);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, DemoMove);
STATE_FUNC_DECLARE(dLytMeterDowsing_c, DemoOut);
/* 0x008 */ dLytMeterDowsingMenuIcon_c mIcon[8];
/* 0x248 */ dLytMeterDowsingBlink_c mBlink;
/* 0x28C */ dLytMeterDowsingInput_c mInput;
/* 0x2D0 */ dLytMeterDowsingText_c mText[2];
/* 0x358 */ UI_STATE_MGR_DECLARE(dLytMeterDowsing_c);
/* 0x490 */ d2d::dLytSub mLyt;
/* 0x428 */ d2d::AnmGroup_c mAnmGroups[29];
/* 0xB68 */ u8 field_0xB68[0xBEC - 0xB68];
/* 0xBEC */ dLytCommonIconItem_c mItemIcons[9];
/* 0x5434 */ d2d::SubPaneList mNodeList;
/* 0x5440 */ d2d::SubPaneListNode mNodes[9];
/* 0x??? */ u8 padding[0x11E34 - 0x11DF8];
};
#endif
+49
View File
@@ -0,0 +1,49 @@
#ifndef D_LYT_METER_DRINK_H
#define D_LYT_METER_DRINK_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterDrinkParts_c {
public:
dLytMeterDrinkParts_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterDrinkParts_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterDrinkParts_c, Invisible);
STATE_FUNC_DECLARE(dLytMeterDrinkParts_c, In);
STATE_FUNC_DECLARE(dLytMeterDrinkParts_c, Visible);
STATE_FUNC_DECLARE(dLytMeterDrinkParts_c, Out);
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterDrinkParts_c);
/* 0x03C */ u8 field_0x03C[0x18];
};
class dLytMeterDrink_c {
public:
dLytMeterDrink_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterDrink_c() {}
virtual void BossKey0x8() {}
virtual void BossKey0xC() {}
bool build(d2d::ResAccIf_c *);
bool remove();
bool draw();
private:
STATE_FUNC_DECLARE(dLytMeterDrink_c, Invisible);
STATE_FUNC_DECLARE(dLytMeterDrink_c, In);
STATE_FUNC_DECLARE(dLytMeterDrink_c, Wait);
STATE_FUNC_DECLARE(dLytMeterDrink_c, Move);
STATE_FUNC_DECLARE(dLytMeterDrink_c, Out);
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterDrink_c);
/* 0x040 */ d2d::dLytSub mLyt;
/* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[20];
/* 0x5D4 */ u8 field_0x5D4[0x5E4 - 0x5D4];
/* 0x5E4 */ dLytMeterDrinkParts_c mParts[3];
};
#endif
@@ -0,0 +1,29 @@
#ifndef D_LYT_METER_EVENT_SKIP_H
#define D_LYT_METER_EVENT_SKIP_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
// size 0x164
class dLytMeterEventSkip_c {
public:
dLytMeterEventSkip_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dLytMeterEventSkip_c() {}
bool build(d2d::ResAccIf_c *resAcc);
bool remove();
bool draw();
private:
STATE_FUNC_DECLARE(dLytMeterEventSkip_c, Invisible);
STATE_FUNC_DECLARE(dLytMeterEventSkip_c, In);
STATE_FUNC_DECLARE(dLytMeterEventSkip_c, Visible);
STATE_FUNC_DECLARE(dLytMeterEventSkip_c, Out);
UI_STATE_MGR_DECLARE(dLytMeterEventSkip_c);
d2d::LytBase_c mLyt;
/* 0x0D0 */ d2d::AnmGroup_c mAnmGroups[2];
/* 0x150 */ u8 field_0x150[0x164 - 0x150];
};
#endif
@@ -0,0 +1,43 @@
#ifndef D_LYT_METER_GANBARI_GAUGE_H
#define D_LYT_METER_GANBARI_GAUGE_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterGanbariGauge_c : public d2d::dSubPane {
public:
dLytMeterGanbariGauge_c() : mStateMgr1(*this, sStateID::null), mStateMgr2(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterGanbariGauge_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, InvisibleWait);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, In);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Wait);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, OutWait);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Out);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, CameraOut);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Full);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, FullGutsUse);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Normal);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Caution);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, ToMin);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, Recovery);
STATE_FUNC_DECLARE(dLytMeterGanbariGauge_c, ToMax);
STATE_MGR(dLytMeterGanbariGauge_c) mStateMgr1;
STATE_MGR(dLytMeterGanbariGauge_c) mStateMgr2;
/* 0x080 */ d2d::dLytSub mLyt;
/* 0x114 */ d2d::AnmGroup_c mAnmGroups[16];
/* 0x??? */ u8 padding[0x11E8 - 0x11A0];
};
#endif
+24
View File
@@ -0,0 +1,24 @@
#ifndef D_LYT_METER_HEART_H
#define D_LYT_METER_HEART_H
#include "d/lyt/d2d.h"
class dLytMeterHeart_c : public d2d::dSubPane {
public:
dLytMeterHeart_c() {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterHeart_c() {}
private:
d2d::dLytSub mLyt;
/* 0xD8 */ d2d::AnmGroup_c mAnm[26];
/* 0x??? */ u8 padding[0x12DA4 - 0x12D24];
};
#endif
@@ -0,0 +1,119 @@
#ifndef D_LYT_METER_ITEM_SELECT_H
#define D_LYT_METER_ITEM_SELECT_H
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_common_icon_item.h"
#include "toBeSorted/effects_struct.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterItemSelectIcon_c {
public:
dLytMeterItemSelectIcon_c(): mStateMgr(*this, sStateID::null) {}
~dLytMeterItemSelectIcon_c() {}
private:
UI_STATE_MGR_DECLARE(dLytMeterItemSelectIcon_c);
u32 padding;
u32 padding2;
};
class dLytMeterItemSelectBlink_c {
public:
dLytMeterItemSelectBlink_c(): mStateMgr(*this, sStateID::null) {}
~dLytMeterItemSelectBlink_c() {}
private:
UI_STATE_MGR_DECLARE(dLytMeterItemSelectBlink_c);
u32 padding;
u32 padding2;
};
class dLytMeterItemSelectText_c {
public:
dLytMeterItemSelectText_c(): mStateMgr(*this, sStateID::null) {}
~dLytMeterItemSelectText_c() {}
private:
UI_STATE_MGR_DECLARE(dLytMeterItemSelectText_c);
u32 padding;
u32 padding2;
};
class dLytMeterItemSelectBtn_c {
public:
dLytMeterItemSelectBtn_c(): mStateMgr(*this, sStateID::null) {}
~dLytMeterItemSelectBtn_c() {}
private:
UI_STATE_MGR_DECLARE(dLytMeterItemSelectBtn_c);
u8 padding[0x58 - 0x3C];
};
class dLytMeterItemSelect_c : public d2d::dSubPane {
public:
dLytMeterItemSelect_c();
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterItemSelect_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, InitWait);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, Wait);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, SelectIn);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, Select);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, SetIn);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, SetSpecialItemIn);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, Set);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, SetOut);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, SetNone);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, SelectOut);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, ResetIn);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, Reset);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, ResetOut);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, ToUse);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, ToUnuse);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, Unuse);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, DemoMove);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, DemoOut0);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, DemoOut1);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, FrameOffIn);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, FrameOffMove);
STATE_FUNC_DECLARE(dLytMeterItemSelect_c, FrameOffOut);
dLytMeterItemSelectIcon_c mIcon[8];
dLytMeterItemSelectBlink_c mBlink;
dLytMeterItemSelectText_c mText[2];
dLytMeterItemSelectBtn_c mBtn[4];
UI_STATE_MGR_DECLARE(dLytMeterItemSelect_c);
/* 0x490 */ d2d::dLytSub mLyt;
/* 0x524 */ d2d::AnmGroup_c mAnmGroups[34];
// What is here?
u8 padding2[0xE34 - 0xDA4];
/* 0xE34 */ dLytCommonIconItem_c mItemIcons[9];
d2d::SubPaneList mNodeList;
d2d::SubPaneListNode mNodes[9];
EffectsStruct mEffects;
s32 field_0x574C;
s32 field_0x5750;
s32 field_0x5754;
s32 field_0x5758;
s32 field_0x575C;
s32 field_0x5760;
s32 field_0x5764;
s32 field_0x5768;
/* 0x??? */ u8 padding[0x7260 - 0x7204];
};
#endif
+81
View File
@@ -0,0 +1,81 @@
#ifndef D_LYT_METER_KEY_H
#define D_LYT_METER_KEY_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterKakeraKey_c {
public:
dLytMeterKakeraKey_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterKakeraKey_c() {}
bool build(d2d::ResAccIf_c *);
bool remove();
bool draw();
private:
STATE_FUNC_DECLARE(dLytMeterKakeraKey_c, Wait);
STATE_FUNC_DECLARE(dLytMeterKakeraKey_c, On);
STATE_FUNC_DECLARE(dLytMeterKakeraKey_c, Increase);
STATE_FUNC_DECLARE(dLytMeterKakeraKey_c, Active);
STATE_FUNC_DECLARE(dLytMeterKakeraKey_c, Off);
/* 0x000 */ UI_STATE_MGR_DECLARE(dLytMeterKakeraKey_c);
/* 0x03C */ d2d::dLytSub mLyt;
/* 0x0D0 */ d2d::AnmGroup_c mAnmGroups[8];
/* 0x2D0 */ u32 field_0x2D0;
/* 0x2D4 */ mVec3_c mVecs[2];
};
class dLytMeterBossKey_c {
public:
dLytMeterBossKey_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterBossKey_c() {}
virtual void BossKey0x8() {}
virtual void BossKey0xC() {}
bool build(d2d::ResAccIf_c *);
bool remove();
bool draw();
private:
STATE_FUNC_DECLARE(dLytMeterBossKey_c, Wait);
STATE_FUNC_DECLARE(dLytMeterBossKey_c, On);
STATE_FUNC_DECLARE(dLytMeterBossKey_c, Active);
STATE_FUNC_DECLARE(dLytMeterBossKey_c, Off);
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterBossKey_c);
/* 0x040 */ d2d::dLytSub mLyt;
/* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[5];
/* 0x214 */ u32 field_0x2D0;
/* 0x218 */ mVec3_c mVecs[4];
};
class dLytMeterSmallKey_c {
public:
dLytMeterSmallKey_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterSmallKey_c() {}
virtual void SmallKey0x8() {}
virtual void SmallKey0xC() {}
bool build(d2d::ResAccIf_c *);
bool remove();
bool draw();
private:
STATE_FUNC_DECLARE(dLytMeterSmallKey_c, Wait);
STATE_FUNC_DECLARE(dLytMeterSmallKey_c, On);
STATE_FUNC_DECLARE(dLytMeterSmallKey_c, Active);
STATE_FUNC_DECLARE(dLytMeterSmallKey_c, Off);
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterSmallKey_c);
/* 0x040 */ d2d::dLytSub mLyt;
/* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[5];
/* 0x214 */ u32 field_0x2D0;
/* 0x218 */ mVec3_c mVecs[4];
};
#endif
+116
View File
@@ -0,0 +1,116 @@
#ifndef D_LYT_METER_MINUS_BTN_H
#define D_LYT_METER_MINUS_BTN_H
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_common_icon_item.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
#include "toBeSorted/effects_struct.h"
// At 0x8, [8], size 0x48
class dLytMeterMinusBtnMenuIcon_c {
public:
dLytMeterMinusBtnMenuIcon_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dLytMeterMinusBtnMenuIcon_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterMinusBtnMenuIcon_c, Wait);
STATE_FUNC_DECLARE(dLytMeterMinusBtnMenuIcon_c, On);
STATE_FUNC_DECLARE(dLytMeterMinusBtnMenuIcon_c, Select);
STATE_FUNC_DECLARE(dLytMeterMinusBtnMenuIcon_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterMinusBtnMenuIcon_c);
u32 padding2;
u32 padding3;
};
// At 0x248, standalone
class dLytMeterMinusBtnBlink_c {
public:
dLytMeterMinusBtnBlink_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterMinusBtnBlink_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterMinusBtnBlink_c, Wait);
STATE_FUNC_DECLARE(dLytMeterMinusBtnBlink_c, On);
STATE_FUNC_DECLARE(dLytMeterMinusBtnBlink_c, Select);
STATE_FUNC_DECLARE(dLytMeterMinusBtnBlink_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterMinusBtnBlink_c);
u32 padding;
u32 padding2;
};
// At 0x28C, [2], size 0x44
class dLytMeterMinusBtnText_c {
public:
dLytMeterMinusBtnText_c() : mStateMgr(*this, sStateID::null) {}
~dLytMeterMinusBtnText_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterMinusBtnText_c, Wait);
STATE_FUNC_DECLARE(dLytMeterMinusBtnText_c, On);
STATE_FUNC_DECLARE(dLytMeterMinusBtnText_c, Select);
STATE_FUNC_DECLARE(dLytMeterMinusBtnText_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterMinusBtnText_c);
u32 padding;
u32 padding2;
};
class dLytMeterMinusBtn_c : public d2d::dSubPane {
public:
dLytMeterMinusBtn_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterMinusBtn_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, Wait);
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, MenuSelectingIn);
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, MenuSelecting);
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, MenuSelectingOut);
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, ToUse);
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, ToUnuse);
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, Unuse);
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, DemoMove);
STATE_FUNC_DECLARE(dLytMeterMinusBtn_c, DemoOut);
dLytMeterMinusBtnMenuIcon_c mIcon[8];
dLytMeterMinusBtnBlink_c mBlink;
dLytMeterMinusBtnText_c mText[2];
UI_STATE_MGR_DECLARE(dLytMeterMinusBtn_c);
/* 0x490 */ d2d::dLytSub mLyt;
/* 0x524 */ d2d::AnmGroup_c mAnmGroups[33];
// What is here?
u8 padding2[0xE30 - 0xDA4];
/* 0xE34 */ dLytCommonIconItem_c mItemIcons[8];
d2d::SubPaneList mNodeList;
d2d::SubPaneListNode mNodes[8];
EffectsStruct mEffects[4];
s32 field_0x574C;
s32 field_0x5750;
s32 field_0x5754;
s32 field_0x5758;
s32 field_0x575C;
s32 field_0x5760;
s32 field_0x5764;
s32 field_0x5768;
/* 0x??? */ u8 padding[0x13730 - 0x136D8];
};
#endif
+31
View File
@@ -0,0 +1,31 @@
#ifndef D_LYT_METER_NUN_STK_H
#define D_LYT_METER_NUN_STK_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterNunStk_c : public d2d::dSubPane {
public:
dLytMeterNunStk_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterNunStk_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterNunStk_c, Wait);
STATE_FUNC_DECLARE(dLytMeterNunStk_c, On);
STATE_FUNC_DECLARE(dLytMeterNunStk_c, Active);
STATE_FUNC_DECLARE(dLytMeterNunStk_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterNunStk_c);
d2d::dLytSub mLyt;
/* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[2];
/* 0x??? */ u8 padding[0x12350 - 0x12320];
};
#endif
@@ -0,0 +1,31 @@
#ifndef D_LYT_METER_NUNCHAKU_BG_H
#define D_LYT_METER_NUNCHAKU_BG_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterNunchakuBg_c : public d2d::dSubPane {
public:
dLytMeterNunchakuBg_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterNunchakuBg_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterNunchakuBg_c, Wait);
STATE_FUNC_DECLARE(dLytMeterNunchakuBg_c, On);
STATE_FUNC_DECLARE(dLytMeterNunchakuBg_c, Active);
STATE_FUNC_DECLARE(dLytMeterNunchakuBg_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterNunchakuBg_c);
d2d::dLytSub mLyt;
/* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[3];
/* 0x??? */ u8 padding[0x12608 - 0x125D8];
};
#endif
@@ -0,0 +1,31 @@
#ifndef D_LYT_METER_PLUS_BTN_H
#define D_LYT_METER_PLUS_BTN_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterPlusBtn_c : public d2d::dSubPane {
public:
dLytMeterPlusBtn_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterPlusBtn_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterPlusBtn_c, Wait);
STATE_FUNC_DECLARE(dLytMeterPlusBtn_c, ToUse);
STATE_FUNC_DECLARE(dLytMeterPlusBtn_c, ToUnuse);
STATE_FUNC_DECLARE(dLytMeterPlusBtn_c, Unuse);
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytMeterPlusBtn_c);
/* 0x040 */ d2d::dLytSub mLyt;
/* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[3];
/* 0x??? */ u8 padding[0x7A64 - 0x7A38];
};
#endif
+8 -10
View File
@@ -1,23 +1,21 @@
#ifndef D_LYT_METER_REMOCON_BH_H
#define D_LYT_METER_REMOCON_BH_H
#ifndef D_LYT_METER_REMOCON_BG_H
#define D_LYT_METER_REMOCON_BG_H
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_sub.h"
#include "d/lyt/meter/d_lyt_meter_base.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterRemoconBg_c : public dLytMeterBase {
class dLytMeterRemoconBg_c : public d2d::dSubPane {
public:
dLytMeterRemoconBg_c();
dLytMeterRemoconBg_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool LytMeter0x10() override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual void *LytMeter0x1C() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterRemoconBg_c();
virtual ~dLytMeterRemoconBg_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterRemoconBg_c, Wait);
@@ -26,7 +24,7 @@ private:
STATE_FUNC_DECLARE(dLytMeterRemoconBg_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterRemoconBg_c);
dLytSub mLyt;
d2d::dLytSub mLyt;
/* 0xD8 */ nw4r::lyt::Pane *mpPane;
/* 0xDC */ u32 field_0xDC;
/* 0xE0 */ u32 field_0xE0;
+61
View File
@@ -0,0 +1,61 @@
#ifndef D_LYT_METER_RUPY_H
#define D_LYT_METER_RUPY_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterRupyStart_c {
public:
dLytMeterRupyStart_c() : mStateMgr(*this, sStateID::null) {}
private:
STATE_FUNC_DECLARE(dLytMeterRupyStart_c, Wait);
STATE_FUNC_DECLARE(dLytMeterRupyStart_c, Start);
UI_STATE_MGR_DECLARE(dLytMeterRupyStart_c);
u8 field_0x3C[0x8];
};
class dLytMeterRupyBlink_c {
public:
dLytMeterRupyBlink_c() : mStateMgr(*this, sStateID::null) {}
private:
STATE_FUNC_DECLARE(dLytMeterRupyBlink_c, Wait);
STATE_FUNC_DECLARE(dLytMeterRupyBlink_c, Flash);
UI_STATE_MGR_DECLARE(dLytMeterRupyBlink_c);
u8 field_0x3C[0x8];
};
class dLytMeterRupy_c : public d2d::dSubPane {
public:
dLytMeterRupy_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterRupy_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterRupy_c, In);
STATE_FUNC_DECLARE(dLytMeterRupy_c, Active);
STATE_FUNC_DECLARE(dLytMeterRupy_c, Start);
STATE_FUNC_DECLARE(dLytMeterRupy_c, Out);
UI_STATE_MGR_DECLARE(dLytMeterRupy_c);
/* 0x044 */ d2d::dLytSub mLyt;
/* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[22];
/* 0x658 */ dLytMeterRupyStart_c mStartParts[4];
/* 0x768 */ dLytMeterRupyBlink_c mBlinkParts[4];
/* 0x??? */ u8 padding[0x1A98 - 0x1A60];
};
#endif
@@ -0,0 +1,35 @@
#ifndef D_LYT_METER_SHIELD_GAUGE_H
#define D_LYT_METER_SHIELD_GAUGE_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterShieldGauge_c : public d2d::dSubPane {
public:
dLytMeterShieldGauge_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterShieldGauge_c() {}
void setContainerGroup(d2d::AnmGroup_c *g) {
mpContainerAnmGroup = g;
}
private:
STATE_FUNC_DECLARE(dLytMeterShieldGauge_c, Normal);
STATE_FUNC_DECLARE(dLytMeterShieldGauge_c, Use);
STATE_FUNC_DECLARE(dLytMeterShieldGauge_c, ToMax);
UI_STATE_MGR_DECLARE(dLytMeterShieldGauge_c);
d2d::dLytSub mLyt;
/* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[8];
/* 0x??? */ d2d::AnmGroup_c *mpContainerAnmGroup;
/* 0x??? */ u8 padding[0x130C4 - 0x13080];
};
#endif
+78
View File
@@ -0,0 +1,78 @@
#ifndef D_LYT_METER_TIMER_H
#define D_LYT_METER_TIMER_H
#include "d/lyt/d2d.h"
#include "m/m_color.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class LytMeterTimerPart1_c : public d2d::dSubPane {
public:
LytMeterTimerPart1_c() {
sInstance = this;
}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~LytMeterTimerPart1_c() {
sInstance = nullptr;
}
static LytMeterTimerPart1_c *sInstance;
private:
/* 0x008 */ d2d::dLytSub mLyt;
/* 0x09C */ d2d::AnmGroup_c mAnmGroups[26];
/* 0x71C */ u8 field_0x71C[0x768 - 0x71C];
/* 0x768 */ mColor mColors1[3];
/* 0x774 */ mColor mColors2[3];
};
class LytMeterTimerPart2_c : public d2d::dSubPane {
public:
LytMeterTimerPart2_c() {
sInstance = this;
}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~LytMeterTimerPart2_c() {
sInstance = nullptr;
}
static LytMeterTimerPart2_c *sInstance;
private:
/* 0x008 */ d2d::dLytSub mLyt;
/* 0x09C */ d2d::AnmGroup_c mAnmGroups[30];
/* 0x81C */ u8 field_0x81C[0x828 - 0x81C];
/* 0x828 */ mColor mColors1[2];
/* 0x830 */ mColor mColors2[2];
};
class dLytMeterTimer_c {
public:
dLytMeterTimer_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dLytMeterTimer_c() {}
bool build();
bool remove();
private:
STATE_FUNC_DECLARE(dLytMeterTimer_c, ChangeSiren);
STATE_FUNC_DECLARE(dLytMeterTimer_c, Siren);
STATE_FUNC_DECLARE(dLytMeterTimer_c, ChangeSafeBloom);
STATE_FUNC_DECLARE(dLytMeterTimer_c, ChangeSafe);
STATE_FUNC_DECLARE(dLytMeterTimer_c, Safe);
STATE_FUNC_DECLARE(dLytMeterTimer_c, ChangeFruits);
STATE_FUNC_DECLARE(dLytMeterTimer_c, Fruits);
UI_STATE_MGR_DECLARE(dLytMeterTimer_c);
};
#endif
+31
View File
@@ -0,0 +1,31 @@
#ifndef D_LYT_METER_Z_BTN_H
#define D_LYT_METER_Z_BTN_H
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
class dLytMeterZBtn_c : public d2d::dSubPane {
public:
dLytMeterZBtn_c() : mStateMgr(*this, sStateID::null) {}
virtual bool build(d2d::ResAccIf_c *resAcc) override;
virtual bool remove() override;
virtual bool LytMeter0x14() override;
virtual nw4r::lyt::Pane *getPane() override;
virtual d2d::LytBase_c *getLyt() override;
virtual const char *getName() const override;
virtual ~dLytMeterZBtn_c() {}
private:
STATE_FUNC_DECLARE(dLytMeterZBtn_c, Wait);
STATE_FUNC_DECLARE(dLytMeterZBtn_c, On);
STATE_FUNC_DECLARE(dLytMeterZBtn_c, Active);
STATE_FUNC_DECLARE(dLytMeterZBtn_c, Off);
UI_STATE_MGR_DECLARE(dLytMeterZBtn_c);
d2d::dLytSub mLyt;
/* 0x0D8 */ d2d::AnmGroup_c mAnmGroups[3];
/* 0x??? */ u8 padding[0x121C8 - 0x12198];
};
#endif
+8
View File
@@ -60,6 +60,14 @@ public:
return mCurrFrame;
}
inline void setCurrFrame(f32 arg) {
mCurrFrame = arg;
}
inline void setFlags(u8 flags) {
mFlags = flags;
}
inline void setToStart() {
setFrame(0.0f);
}
+6 -1
View File
@@ -25,5 +25,10 @@
mStateMgr.getStateID(); \
}
#define UI_STATE_MGR_DECLARE(class_name) sFStateMgr_c<class_name, sStateMethodUsr_FI_c> mStateMgr;
#define UI_STATE_MGR_DECLARE(class_name) \
sFStateMgr_c<class_name, sStateMethodUsr_FI_c> mStateMgr;
#define STATE_MGR(class_name) \
sFStateMgr_c<class_name, sStateMethodUsr_FI_c>
#endif
+2 -1
View File
@@ -2,9 +2,10 @@
#define SCGAME_H
#include "common.h"
#include "sized_string.h"
struct SpawnInfo {
/* 0x00 */ char stageName[32]; // Probably SizedString<32>
/* 0x00 */ SizedString<32> stageName;
/* 0x20 */ s16 transitionFadeFrames;
/* 0x22 */ s8 room;
/* 0x23 */ u8 layer;
@@ -13,7 +13,11 @@ typedef unsigned long size_t;
typedef long ptrdiff_t;
#endif
#ifdef __MWERKS__
#define offsetof(type, member) ((size_t) & (((type *)0)->member))
#else
#define offsetof(type, member) __builtin_offsetof(type, member)
#endif
#ifndef NULL
#define NULL (0)
+5 -5
View File
@@ -754,10 +754,10 @@ bool hasSameBaseName(const char *left, const char *right) {
char *sRef = "ref";
void LytBase_c::linkMeters(nw4r::lyt::Group *group, LytMeterGroup *meterGroup) {
void dSubPane::linkMeters(nw4r::lyt::Group *group, d2d::SubPaneList *meterGroup) {
// single regswap
nw4r::ut::LinkList<LytMeterListNode, 0>::Iterator beginIt = meterGroup->GetBeginIter();
nw4r::ut::LinkList<LytMeterListNode, 0>::Iterator endIt = meterGroup->GetEndIter();
nw4r::ut::LinkList<d2d::SubPaneListNode, 0>::Iterator beginIt = meterGroup->GetBeginIter();
nw4r::ut::LinkList<d2d::SubPaneListNode, 0>::Iterator endIt = meterGroup->GetEndIter();
for (nw4r::lyt::PaneList::Iterator paneIt = group->GetPaneList()->GetBeginIter();
paneIt != group->GetPaneList()->GetEndIter(); ++paneIt) {
@@ -766,8 +766,8 @@ void LytBase_c::linkMeters(nw4r::lyt::Group *group, LytMeterGroup *meterGroup) {
if (num != 0) {
const nw4r::lyt::res::ExtUserData *dat = pane->FindExtUserDataByName(sRef);
if (dat != nullptr && dat->GetType() == nw4r::lyt::res::TYPE_STRING) {
for (nw4r::ut::LinkList<LytMeterListNode, 0>::Iterator it = beginIt; it != endIt; ++it) {
dLytMeterBase *meter = it->mpMeter;
for (nw4r::ut::LinkList<d2d::SubPaneListNode, 0>::Iterator it = beginIt; it != endIt; ++it) {
d2d::dSubPane *meter = it->mpLytPane;
if (!meter->LytMeter0x24()) {
if (hasSameBaseName(dat->GetString(), meter->getName())) {
it->mpPane = pane;
+13
View File
@@ -0,0 +1,13 @@
#include "d/lyt/d_lyt_bird_gauge.h"
STATE_DEFINE(dLytBirdGaugeMain_c, ModeNone);
STATE_DEFINE(dLytBirdGaugeMain_c, ModeIn);
STATE_DEFINE(dLytBirdGaugeMain_c, ModeDash);
STATE_DEFINE(dLytBirdGaugeMain_c, ModeRecovery);
STATE_DEFINE(dLytBirdGaugeMain_c, ModeOut);
STATE_DEFINE(dLytBirdGauge_c, In);
STATE_DEFINE(dLytBirdGauge_c, None);
STATE_DEFINE(dLytBirdGauge_c, Dash);
STATE_DEFINE(dLytBirdGauge_c, Recovery);
STATE_DEFINE(dLytBirdGauge_c, Out);
+6
View File
@@ -0,0 +1,6 @@
#include "d/lyt/d_lyt_boss_gauge.h"
STATE_DEFINE(dLytBossGauge_c, None);
STATE_DEFINE(dLytBossGauge_c, In);
STATE_DEFINE(dLytBossGauge_c, Move);
STATE_DEFINE(dLytBossGauge_c, Out);
+6
View File
@@ -0,0 +1,6 @@
#include "d/lyt/d_lyt_common_icon_item.h"
STATE_DEFINE(dLytCommonIconItem_c, None);
STATE_DEFINE(dLytCommonIconItem_c, In);
STATE_DEFINE(dLytCommonIconItem_c, Wait);
STATE_DEFINE(dLytCommonIconItem_c, Out);
+104
View File
@@ -0,0 +1,104 @@
#include "d/lyt/d_lyt_note.h"
STATE_DEFINE(dLytNote_c, Wait);
STATE_DEFINE(dLytNote_c, In);
STATE_DEFINE(dLytNote_c, Move);
STATE_DEFINE(dLytNote_c, Out);
void dLytNote_c::initializeState_Wait() {
field_0x273 = 0;
}
void dLytNote_c::executeState_Wait() {
if (field_0x270 != 0) {
mStateMgr.changeState(StateID_In);
}
}
void dLytNote_c::finalizeState_Wait() {}
void dLytNote_c::initializeState_In() {}
void dLytNote_c::executeState_In() {}
void dLytNote_c::finalizeState_In() {}
void dLytNote_c::initializeState_Move() {
field_0x273 = 1;
}
void dLytNote_c::executeState_Move() {}
void dLytNote_c::finalizeState_Move() {}
void dLytNote_c::initializeState_Out() {}
void dLytNote_c::executeState_Out() {}
void dLytNote_c::finalizeState_Out() {}
static const d2d::LytBrlanMapping brlanMap[] = {
{ "suiryuScore_00_noteGet.brlan", "G_mark_00"},
{ "suiryuScore_00_noteGetLoop.brlan", "G_mark_00"},
{"suiryuScore_00_noteLostLoop.brlan", "G_mark_00"},
{ "suiryuScore_00_noteLost.brlan", "G_mark_00"},
{ "suiryuScore_00_noteFix.brlan", "G_mark_00"},
{ "suiryuScore_00_noteColor.brlan", "G_color_00"},
};
#define NOTE_ANIM_GET 0
#define NOTE_ANIM_GET_LOOP 1
#define NOTE_ANIM_LOST_LOOP 2
#define NOTE_ANIM_LOST 3
#define NOTE_ANIM_FIX 4
#define NOTE_ANIM_COLOR 5
bool dLytNote_c::build(d2d::ResAccIf_c *resAcc) {
mLyt.setResAcc(resAcc);
mLyt.build("suiryuScore_00.brlyt", nullptr);
for (int i = 0; i < 6; i++) {
mAnmGroups[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName);
mAnmGroups[i].setDirection(false);
mAnmGroups[i].setAnimEnable(false);
}
mAnmGroups[NOTE_ANIM_COLOR].setAnimEnable(true);
static const char *sPaneName = "N_inOutAll_00";
mpPane = mLyt.findPane(sPaneName);
mpPane->SetVisible(false);
// FPR Regswap
const nw4r::math::VEC3 &translate = mpPane->GetTranslate();
mTranslate.set(translate.x, translate.y, translate.z);
field_0x268 = 6;
field_0x264 = 4;
field_0x260 = 0.0f;
field_0x270 = 0;
field_0x271 = 0;
field_0x272 = 0;
field_0x273 = 0;
field_0x274 = 0;
field_0x26C = 0;
mStateMgr.changeState(StateID_Wait);
return true;
}
bool dLytNote_c::remove() {
for (int i = 0; i < 6; i++) {
// @bug? .unbind call is missing
mAnmGroups[i].afterUnbind();
}
return true;
}
void dLytNote_c::execute() {
// TODO
}
void dLytNote_c::draw() {
mLyt.addToDrawList();
}
f32 dLytNote_c::getField0x260() const {
return field_0x260;
}
void dLytNote_c::setFrame(f32 arg) {
if (field_0x268 != 6) {
// mysterious frsp here
field_0x260 = arg;
mAnmGroups[field_0x268].setFrame(arg);
}
}
+2 -2
View File
@@ -28,13 +28,13 @@ void dLytPauseDisp00_c::init() {
for (int i = 0; i < 0x18; i++) {
field_0x2050[i].init(nullptr, lbl_804E8898[i]);
mLytMeterGroup.PushBack(&field_0xE11C[i]);
mSubpanes.PushBack(&field_0xE11C[i]);
}
if (mLytBase.getLayout()->GetGroupContainer() != nullptr) {
nw4r::lyt::Group *group = mLytBase.getLayout()->GetGroupContainer()->FindGroupByName("G_ref_00");
if (group != nullptr) {
mLytBase.linkMeters(group, &mLytMeterGroup);
d2d::dSubPane::linkMeters(group, &mSubpanes);
}
}
+11
View File
@@ -0,0 +1,11 @@
#include "d/lyt/d_lyt_sky_gauge.h"
STATE_DEFINE(dLytSkyGaugeMain_c, ModeNone);
STATE_DEFINE(dLytSkyGaugeMain_c, ModeIn);
STATE_DEFINE(dLytSkyGaugeMain_c, ModeMove);
STATE_DEFINE(dLytSkyGaugeMain_c, ModeOut);
STATE_DEFINE(dLytSkyGauge_c, ModeNone);
STATE_DEFINE(dLytSkyGauge_c, ModeIn);
STATE_DEFINE(dLytSkyGauge_c, ModeMove);
STATE_DEFINE(dLytSkyGauge_c, ModeOut);
+5
View File
@@ -27,4 +27,9 @@ void dLytStructDList::removeFromList2(dLytStructD *other) {
mList2.remove(other);
}
dLytStructD::~dLytStructD() {
delete[] field_0x1C;
field_0x1C = nullptr;
}
} // namespace d2d
+680 -2
View File
@@ -1,6 +1,684 @@
// clang-format off
#include "common.h"
#include "d/lyt/d_lyt_area_caption.h"
#include "d/lyt/d_lyt_meter_configuration.h"
#include "d/lyt/d_window.h"
#include "d/lyt/meter/d_lyt_meter.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
#include "toBeSorted/scgame.h"
// clang-format on
static dLytMeterConfiguration_c sConf;
STATE_DEFINE(dLytMeter1Button_c, Wait);
STATE_DEFINE(dLytMeter1Button_c, ToUse);
STATE_DEFINE(dLytMeter1Button_c, ToUnuse);
STATE_DEFINE(dLytMeter1Button_c, Unuse);
STATE_DEFINE(dLytMeter2Button_c, Wait);
STATE_DEFINE(dLytMeter2Button_c, ToUse);
STATE_DEFINE(dLytMeter2Button_c, ToUnuse);
STATE_DEFINE(dLytMeter2Button_c, Unuse);
STATE_DEFINE(dLytMeterParts_c, Invisible);
STATE_DEFINE(dLytMeterParts_c, In);
STATE_DEFINE(dLytMeterParts_c, Visible);
STATE_DEFINE(dLytMeterParts_c, Out);
void dLytMeter1Button_c::initializeState_Wait() {}
void dLytMeter1Button_c::executeState_Wait() {
if (dLytMeterContainer_c::sInstance->isButtonFlag(0x80)) {
return;
}
mStateMgr.changeState(StateID_ToUnuse);
}
void dLytMeter1Button_c::finalizeState_Wait() {}
void dLytMeter1Button_c::initializeState_ToUse() {
mAnmGroups[0].playBackwardsOnce();
mAnmGroups[0].setAnimEnable(true);
}
void dLytMeter1Button_c::executeState_ToUse() {
if (mAnmGroups[0].isStop2()) {
mStateMgr.changeState(StateID_Wait);
}
if (mAnmGroups[0].isFlag2()) {
mAnmGroups[0].play();
}
}
void dLytMeter1Button_c::finalizeState_ToUse() {
mAnmGroups[0].setAnimEnable(false);
}
void dLytMeter1Button_c::initializeState_ToUnuse() {
mAnmGroups[0].playLoop();
mAnmGroups[0].setAnimEnable(true);
}
void dLytMeter1Button_c::executeState_ToUnuse() {
if (mAnmGroups[0].isStop2()) {
mStateMgr.changeState(StateID_Unuse);
}
if (mAnmGroups[0].isFlag2()) {
mAnmGroups[0].play();
}
}
void dLytMeter1Button_c::finalizeState_ToUnuse() {
mAnmGroups[0].setAnimEnable(false);
}
void dLytMeter1Button_c::initializeState_Unuse() {
field_0x1A4 = 15;
}
void dLytMeter1Button_c::executeState_Unuse() {
if (dLytMeterContainer_c::sInstance->isButtonFlag(0x80)) {
if (!(field_0x1A4 > 0)) {
mStateMgr.changeState(StateID_ToUse);
return;
}
field_0x1A4 -= 1;
} else {
field_0x1A4 = 15;
}
}
void dLytMeter1Button_c::finalizeState_Unuse() {}
static const d2d::LytBrlanMapping btn1BrlanMap[] = {
{"remoConBtn_04_input.brlan", "G_input_00"},
{ "remoConBtn_04_call.brlan", "G_call_00"},
{ "remoConBtn_04_loop.brlan", "G_loop_00"},
};
static char *sWindowName1 = "W_bgP_00";
bool dLytMeter1Button_c::build(d2d::ResAccIf_c *resAcc) {
mLyt.setResAcc(resAcc);
mLyt.build("remoConBtn_04.brlyt", nullptr);
for (int i = 0; i < 3; i++) {
mAnmGroups[i].init(btn1BrlanMap[i].mFile, resAcc, mLyt.getLayout(), btn1BrlanMap[i].mName);
mAnmGroups[i].setDirection(false);
mAnmGroups[i].setAnimEnable(false);
}
// TODO
mLyt.fn_800AB9A0(mLyt.getTextBox("T_sabBtnS_00"), nullptr);
mLyt.fn_800AB9A0(mLyt.getTextBox("T_sabBtn_00"), nullptr);
mpWindow = mLyt.getWindow(sWindowName1);
mpTextbox = mLyt.getSizeBoxInWindow(sWindowName1);
mpWindow->UpdateSize(mpTextbox, 32.0f);
field_0x1A4 = 15;
field_0x1AC = 0;
field_0x1AD = 0;
field_0x1A8 = 0;
mAnmGroups[1].setToEnd();
mAnmGroups[1].setAnimEnable(true);
mAnmGroups[2].setAnimEnable(true);
mLyt.calc();
mAnmGroups[1].setAnimEnable(false);
mStateMgr.changeState(StateID_Wait);
return true;
}
bool dLytMeter1Button_c::remove() {
for (int i = 0; i < 3; i++) {
mAnmGroups[i].unbind();
mAnmGroups[i].afterUnbind();
}
return true;
}
bool dLytMeter1Button_c::LytMeter0x14() {
if (*mStateMgr.getStateID() == StateID_ToUnuse) {
// TODO
} else {
mStateMgr.executeState();
}
}
void dLytMeter2Button_c::initializeState_Wait() {}
void dLytMeter2Button_c::executeState_Wait() {
if (dLytMeterContainer_c::sInstance->isButtonFlag(0x100)) {
return;
}
mStateMgr.changeState(StateID_ToUnuse);
}
void dLytMeter2Button_c::finalizeState_Wait() {}
void dLytMeter2Button_c::initializeState_ToUse() {
mAnmGroups[0].playBackwardsOnce();
mAnmGroups[0].setAnimEnable(true);
}
void dLytMeter2Button_c::executeState_ToUse() {
if (mAnmGroups[0].isStop2()) {
mStateMgr.changeState(StateID_Wait);
}
if (mAnmGroups[0].isFlag2()) {
mAnmGroups[0].play();
}
}
void dLytMeter2Button_c::finalizeState_ToUse() {
mAnmGroups[0].setAnimEnable(false);
}
void dLytMeter2Button_c::initializeState_ToUnuse() {
mAnmGroups[0].playLoop();
mAnmGroups[0].setAnimEnable(true);
}
void dLytMeter2Button_c::executeState_ToUnuse() {
if (mAnmGroups[0].isStop2()) {
mStateMgr.changeState(StateID_Unuse);
}
if (mAnmGroups[0].isFlag2()) {
mAnmGroups[0].play();
}
}
void dLytMeter2Button_c::finalizeState_ToUnuse() {
mAnmGroups[0].setAnimEnable(false);
}
void dLytMeter2Button_c::initializeState_Unuse() {
field_0x1A4 = 15;
}
void dLytMeter2Button_c::executeState_Unuse() {
if (dLytMeterContainer_c::sInstance->isButtonFlag(0x100)) {
if (!(field_0x1A4 > 0)) {
mStateMgr.changeState(StateID_ToUse);
return;
}
field_0x1A4 -= 1;
} else {
field_0x1A4 = 15;
}
}
void dLytMeter2Button_c::finalizeState_Unuse() {}
static const d2d::LytBrlanMapping btn2BrlanMap[] = {
{"remoConBtn_05_input.brlan", "G_input_00"},
{ "remoConBtn_05_call.brlan", "G_call_00"},
{ "remoConBtn_05_loop.brlan", "G_loop_00"},
};
static char *sWindowName2 = "W_bgP_00";
bool dLytMeter2Button_c::build(d2d::ResAccIf_c *resAcc) {
mLyt.setResAcc(resAcc);
mLyt.build("remoConBtn_05.brlyt", nullptr);
for (int i = 0; i < 3; i++) {
mAnmGroups[i].init(btn2BrlanMap[i].mFile, resAcc, mLyt.getLayout(), btn2BrlanMap[i].mName);
mAnmGroups[i].setDirection(false);
mAnmGroups[i].setAnimEnable(false);
}
mpWindow = mLyt.getWindow(sWindowName2);
mpTextbox = mLyt.getSizeBoxInWindow(sWindowName2);
mpWindow->UpdateSize(mpTextbox, 32.0f);
field_0x1A4 = 15;
field_0x1AC = 0;
field_0x1AD = 0;
field_0x1A8 = 0;
mAnmGroups[1].setToEnd();
mAnmGroups[1].setAnimEnable(true);
mAnmGroups[2].setAnimEnable(true);
mLyt.calc();
mAnmGroups[1].setAnimEnable(false);
mStateMgr.changeState(StateID_Wait);
return true;
}
bool dLytMeter2Button_c::remove() {
for (int i = 0; i < 3; i++) {
mAnmGroups[i].unbind();
mAnmGroups[i].afterUnbind();
}
return true;
}
bool dLytMeter2Button_c::LytMeter0x14() {
if (*mStateMgr.getStateID() == StateID_ToUnuse) {
// TODO
} else {
mStateMgr.executeState();
}
}
void dLytMeterParts_c::initializeState_Invisible() {}
void dLytMeterParts_c::executeState_Invisible() {}
void dLytMeterParts_c::finalizeState_Invisible() {}
void dLytMeterParts_c::initializeState_In() {}
void dLytMeterParts_c::executeState_In() {}
void dLytMeterParts_c::finalizeState_In() {}
void dLytMeterParts_c::initializeState_Visible() {}
void dLytMeterParts_c::executeState_Visible() {}
void dLytMeterParts_c::finalizeState_Visible() {}
void dLytMeterParts_c::initializeState_Out() {}
void dLytMeterParts_c::executeState_Out() {}
void dLytMeterParts_c::finalizeState_Out() {}
void floats() {
32.0f;
1.0f;
0.0f;
int x = 0;
f32 f = x;
}
void floats2() {
5.0f;
3.0f;
}
#pragma dont_inline on
dLytMeter_c::dLytMeter_c() {}
#pragma dont_inline off
dLytMeterRemoconBg_c::dLytMeterRemoconBg_c() : mStateMgr(*this, sStateID::null) {}
dLytMeterRemoconBg_c::~dLytMeterRemoconBg_c() {}
extern "C" void *GLOBAL_TITLE_RELOADER;
extern "C" void fn_800D97E0(int i);
extern "C" void fn_800D9800(int i);
extern "C" void fn_801B2D10(void *);
extern "C" void *GLOBAL_MESSAGE_RELATED_CONTEXT;
static const d2d::LytBrlanMapping meterBrlanMap[] = {
{ "basicPosition_00_in.brlan", "G_remoConBtn_00"},
{ "basicPosition_00_in.brlan", "G_remoConBtn_01"},
{ "basicPosition_00_in.brlan", "G_remoConBtn_02"},
{ "basicPosition_00_in.brlan", "G_remoConBtn_03"},
{ "basicPosition_00_in.brlan", "G_remoConBtn_04"},
{ "basicPosition_00_in.brlan", "G_remoConBtn_05"},
{ "basicPosition_00_in.brlan", "G_remoConBtn_06"},
{ "basicPosition_00_in.brlan", "G_remoConBg_00"},
{ "basicPosition_00_in.brlan", "G_nunBtn_03"},
{ "basicPosition_00_in.brlan", "G_nunBtn_01"},
{ "basicPosition_00_in.brlan", "G_nunBtn_02"},
{ "basicPosition_00_in.brlan", "G_nunBg_00"},
{ "basicPosition_00_in.brlan", "G_shield_00"},
{ "basicPosition_00_in.brlan", "G_rupy_00"},
{ "basicPosition_00_in.brlan", "G_heart_00"},
{ "basicPosition_00_in.brlan", "G_ganbari_00"},
{ "basicPosition_00_out.brlan", "G_remoConBtn_00"},
{ "basicPosition_00_out.brlan", "G_remoConBtn_01"},
{ "basicPosition_00_out.brlan", "G_remoConBtn_02"},
{ "basicPosition_00_out.brlan", "G_remoConBtn_03"},
{ "basicPosition_00_out.brlan", "G_remoConBtn_04"},
{ "basicPosition_00_out.brlan", "G_remoConBtn_05"},
{ "basicPosition_00_out.brlan", "G_remoConBtn_06"},
{ "basicPosition_00_out.brlan", "G_remoConBg_00"},
{ "basicPosition_00_out.brlan", "G_nunBtn_03"},
{ "basicPosition_00_out.brlan", "G_nunBtn_01"},
{ "basicPosition_00_out.brlan", "G_nunBtn_02"},
{ "basicPosition_00_out.brlan", "G_nunBg_00"},
{ "basicPosition_00_out.brlan", "G_shield_00"},
{ "basicPosition_00_out.brlan", "G_rupy_00"},
{ "basicPosition_00_out.brlan", "G_heart_00"},
{ "basicPosition_00_out.brlan", "G_ganbari_00"},
{ "basicPosition_00_position.brlan", "G_position_00"},
{"basicPosition_00_rupyPosition.brlan", "G_rupyPosi_00"},
};
extern "C" void *STAGE_MANAGER;
extern "C" bool StageManager__isAreaTypeSky(void *stageMgr);
extern "C" bool StageManager__isAreaTypeDungeon(void *stageMgr);
bool dLytMeter_c::build(d2d::ResAccIf_c *resAcc) {
mLyt.setResAcc(resAcc);
mLyt.build("basicPosition_00.brlyt", nullptr);
mLyt.setPriority(0x8A);
for (int i = 0; i < 34; i++) {
mAnmGroups[i].init(meterBrlanMap[i].mFile, resAcc, mLyt.getLayout(), meterBrlanMap[i].mName);
mAnmGroups[i].setDirection(false);
mAnmGroups[i].setAnimEnable(false);
}
// in G_remoConBtn_06, out G_remoConBtn_06
mABtn.setContainerGroups(&mAnmGroups[6], &mAnmGroups[22]);
// out G_shield_00
mShield.setContainerGroup(&mAnmGroups[28]);
if (GLOBAL_TITLE_RELOADER == nullptr) {
mp1Button = new dLytMeter1Button_c();
mp2Button = new dLytMeter2Button_c();
} else {
mp1Button = nullptr;
mp2Button = nullptr;
}
mNodes[0].mpLytPane = &mGanbariGauge;
mNodes[1].mpLytPane = &mRupy;
mNodes[2].mpLytPane = &mItemSelect;
mNodes[3].mpLytPane = &mCrossBtn;
mNodes[4].mpLytPane = &mPlusBtn;
mNodes[5].mpLytPane = &mMinusBtn;
mNodes[6].mpLytPane = &mABtn;
mNodes[7].mpLytPane = &mDowsing;
mNodes[8].mpLytPane = &mZBtn;
mNodes[9].mpLytPane = &mNunStk;
mNodes[10].mpLytPane = &mRemoCon;
mNodes[11].mpLytPane = &mNunBg;
mNodes[12].mpLytPane = &mHeart;
mNodes[13].mpLytPane = &mShield;
mNodes[14].mpLytPane = mp1Button;
mNodes[15].mpLytPane = mp2Button;
mPosArray1[0] = mLyt.findPane("N_shield_00")->GetTranslate();
mPosArray1[1] = mLyt.findPane("N_shield_01")->GetTranslate();
mPos1 = mPosArray1[0];
mPos2 = mPosArray1[1];
mLyt.findPane("N_rupyAll_00")->SetVisible(true);
mAnmGroups[33].setAnimEnable(true);
// Advance through some anim's keyframes and store positions in mPosArray2
for (int i = 0; i < 7; i++) {
mAnmGroups[33].setFrame(i);
mLyt.calc();
mPosArray2[i] = mLyt.findPane("N_rupy_00")->GetTranslate();
}
mAnmGroups[33].setAnimEnable(false);
mLyt.findPane("N_rupyAll_00")->SetVisible(false);
for (int i = 0; i < 16; i++) {
if (mNodes[i].mpLytPane != nullptr) {
mNodes[i].mpLytPane->build(resAcc);
mMeters.PushBack(&mNodes[i]);
}
}
if (isSilentRealm()) {
void *sirenData = LayoutArcManager::sInstance->getLoadedData("Siren");
mResAcc.attach(sirenData, "");
mpTimer = new dLytMeterTimer_c();
mpTimerPart1 = new LytMeterTimerPart1_c();
mpTimerPart2 = new LytMeterTimerPart2_c();
mpTimerPart1->build(&mResAcc);
mpTimerPart2->build(&mResAcc);
mpTimer->build();
} else {
mpTimer = nullptr;
mpTimerPart1 = nullptr;
mpTimerPart2 = nullptr;
}
if (GLOBAL_TITLE_RELOADER == nullptr && StageManager__isAreaTypeSky(STAGE_MANAGER)) {
mpSkyGauge = new dLytSkyGauge_c();
mpSkyGauge->build(resAcc);
mpBirdGauge = new dLytBirdGauge_c();
mpBirdGauge->build(resAcc);
} else {
mpSkyGauge = nullptr;
mpBirdGauge = nullptr;
}
if (ScGame::currentSpawnInfo.stageName == "F401") {
mpBossGauge = new dLytBossGauge_c();
mpBossGauge->build();
} else {
mpBossGauge = nullptr;
}
if (ScGame::isCurrentStage("F200") || ScGame::isCurrentStage("F210") || ScGame::isCurrentStage("F211")) {
mpKakeraKey = new dLytMeterKakeraKey_c();
mpKakeraKey->build(resAcc);
} else {
mpKakeraKey = nullptr;
}
if (!StageManager__isAreaTypeDungeon(STAGE_MANAGER) || ScGame::currentSpawnInfo.stageName == "F100_1" ||
ScGame::currentSpawnInfo.stageName == "F103_1") {
mpBossKey = nullptr;
} else {
mpBossKey = new dLytMeterBossKey_c();
mpBossKey->build(resAcc);
}
if (StageManager__isAreaTypeDungeon(STAGE_MANAGER) &&
(!(ScGame::currentSpawnInfo.stageName == "F100_1") && !(ScGame::currentSpawnInfo.stageName == "F103_1")) ||
ScGame::currentSpawnInfo.stageName == "F302" || ScGame::currentSpawnInfo.stageName == "F302") {
mpSmallKey = new dLytMeterSmallKey_c();
mpSmallKey->build(resAcc);
} else {
mpSmallKey = nullptr;
}
if (GLOBAL_TITLE_RELOADER != nullptr) {
mpDrink = nullptr;
} else {
mpDrink = new dLytMeterDrink_c();
mpDrink->build(resAcc);
}
return true;
}
bool dLytMeter_c::remove() {
for (int i = 0; i < 34; i++) {
mAnmGroups[i].afterUnbind();
}
for (d2d::SubPaneList::Iterator it = mMeters.GetBeginIter(); it != mMeters.GetEndIter(); ++it) {
d2d::dSubPane *m = it->mpLytPane;
if (m != nullptr) {
m->getPane()->GetParent()->RemoveChild(m->getPane());
}
}
for (int i = 0; i < 16; i++) {
if (mNodes[i].mpLytPane != nullptr) {
mNodes[i].mpLytPane->remove();
}
}
if (mp1Button != nullptr) {
delete mp1Button;
mp1Button = nullptr;
}
if (mp2Button != nullptr) {
delete mp2Button;
mp2Button = nullptr;
}
if (mpTimerPart1 != nullptr) {
mpTimerPart1->remove();
delete mpTimerPart1;
mpTimerPart1 = nullptr;
}
if (mpTimerPart2 != nullptr) {
mpTimerPart2->remove();
delete mpTimerPart2;
mpTimerPart2 = nullptr;
}
if (mpTimer != nullptr) {
mpTimer->remove();
delete mpTimer;
mpTimer = nullptr;
// WHY IS THIS HERE???
mResAcc.detach();
}
if (mpSkyGauge != nullptr) {
mpSkyGauge->remove();
delete mpSkyGauge;
mpSkyGauge = nullptr;
}
if (mpBirdGauge != nullptr) {
mpBirdGauge->remove();
delete mpBirdGauge;
mpBirdGauge = nullptr;
}
if (mpBossGauge != nullptr) {
mpBossGauge->remove();
delete mpBossGauge;
mpBossGauge = nullptr;
}
if (mpKakeraKey != nullptr) {
mpKakeraKey->remove();
delete mpKakeraKey;
mpKakeraKey = nullptr;
}
if (mpBossKey != nullptr) {
mpBossKey->remove();
delete mpBossKey;
mpBossKey = nullptr;
}
if (mpSmallKey != nullptr) {
mpSmallKey->remove();
delete mpSmallKey;
mpSmallKey = nullptr;
}
if (mpDrink != nullptr) {
mpDrink->remove();
delete mpDrink;
mpDrink = nullptr;
}
return true;
}
bool dLytMeter_c::draw() {
mLyt.addToDrawList();
if (mpTimerPart1 != nullptr) {
mpTimerPart1->getLyt()->addToDrawList();
}
if (mpTimerPart2 != nullptr) {
mpTimerPart2->getLyt()->addToDrawList();
}
if (mpSkyGauge != nullptr) {
mpSkyGauge->getLyt()->addToDrawList();
}
if (mpBirdGauge != nullptr) {
mpBirdGauge->getLyt()->addToDrawList();
}
if (mpBossGauge != nullptr) {
mpBossGauge->draw();
}
if (mpKakeraKey != nullptr) {
mpKakeraKey->draw();
}
if (mpBossKey != nullptr) {
mpBossKey->draw();
}
if (mpSmallKey != nullptr) {
mpSmallKey->draw();
}
if (mpDrink != nullptr) {
mpDrink->draw();
}
return true;
}
dLytMeterContainer_c::dLytMeterContainer_c() {
sInstance = this;
}
bool dLytMeterContainer_c::build() {
void *data = LayoutArcManager::sInstance->getLoadedData("DoButton");
mResAcc.attach(data, "");
if (GLOBAL_TITLE_RELOADER != nullptr) {
mpEventSkip = nullptr;
} else {
mpEventSkip = new dLytMeterEventSkip_c();
}
if (mpEventSkip != nullptr) {
mpEventSkip->build(&mResAcc);
}
dLytAreaCaption_c::create();
mMeter.build(&mResAcc);
if (GLOBAL_TITLE_RELOADER != nullptr) {
mpDoButton = nullptr;
mpDoButtonRelated = nullptr;
mpBirdRelated = nullptr;
} else {
mpDoButton = new dLytDobutton_c();
mpDoButtonRelated = new LytDoButtonRelated();
mpBirdRelated = new LytBirdButtonRelated();
}
if (mpDoButton != nullptr) {
mpDoButton->init(&mResAcc);
}
if (mpDoButtonRelated != nullptr) {
mpDoButtonRelated->build(&mResAcc);
}
if (mpBirdRelated != nullptr) {
mpBirdRelated->build(&mResAcc);
}
fn_800D97E0(0xb);
fn_800D9800(1);
fn_801B2D10(GLOBAL_MESSAGE_RELATED_CONTEXT);
return true;
}
bool dLytMeterContainer_c::remove() {
if (mpDoButton != nullptr) {
mpDoButton->remove();
delete mpDoButton;
mpDoButton = nullptr;
}
if (mpDoButtonRelated != nullptr) {
mpDoButtonRelated->remove();
delete mpDoButtonRelated;
mpDoButtonRelated = nullptr;
}
mMeter.remove();
if (mpEventSkip != nullptr) {
mpEventSkip->remove();
delete mpEventSkip;
mpEventSkip = nullptr;
}
if (mpBirdRelated != nullptr) {
mpBirdRelated->remove();
delete mpBirdRelated;
mpBirdRelated = nullptr;
}
dLytAreaCaption_c::remove();
mResAcc.detach();
return true;
}
bool dLytMeterContainer_c::draw() {
if (mVisible) {
mMeter.draw();
if (mMeter.field_0x13750 != 3) {
if (mpEventSkip != nullptr) {
mpEventSkip->draw();
}
dLytAreaCaption_c::draw();
if (mpDoButton != nullptr) {
mpDoButton->draw();
}
if (mpBirdRelated != nullptr) {
mpBirdRelated->draw();
}
}
}
return true;
}
+138
View File
@@ -0,0 +1,138 @@
#include "d/lyt/d_textbox.h"
#include "d/lyt/d_window.h"
#include "d/lyt/meter/d_lyt_meter_a_btn.h"
STATE_DEFINE(dLytMeterABtn_c, InvisibleWait);
STATE_DEFINE(dLytMeterABtn_c, In);
STATE_DEFINE(dLytMeterABtn_c, Out);
STATE_DEFINE(dLytMeterABtn_c, Wait);
STATE_DEFINE(dLytMeterABtn_c, On);
STATE_DEFINE(dLytMeterABtn_c, Active);
STATE_DEFINE(dLytMeterABtn_c, Off);
void dLytMeterABtn_c::initializeState_InvisibleWait() {}
void dLytMeterABtn_c::executeState_InvisibleWait() {
if (field_0x1C8 == 0) {
return;
}
if (field_0x1CA == 0) {
return;
}
mStateMgr.changeState(StateID_In);
}
void dLytMeterABtn_c::finalizeState_InvisibleWait() {}
void dLytMeterABtn_c::initializeState_In() {
mpContainerAnmGroup1->setToEnd2();
mpContainerAnmGroup1->setAnimEnable(true);
mAnmGroups[0].playBackwardsOnce();
}
void dLytMeterABtn_c::executeState_In() {
if (mpContainerAnmGroup1->isEndReached()) {
mpContainerAnmGroup1->setAnimEnable(false);
mStateMgr.changeState(StateID_Wait);
}
if (mpContainerAnmGroup1->isFlag2()) {
mpContainerAnmGroup1->play();
}
}
void dLytMeterABtn_c::finalizeState_In() {}
void dLytMeterABtn_c::initializeState_Out() {
mpContainerAnmGroup2->setToEnd2();
mpContainerAnmGroup2->setAnimEnable(true);
}
void dLytMeterABtn_c::executeState_Out() {
if (mpContainerAnmGroup2->isEndReached()) {
mpContainerAnmGroup2->setAnimEnable(false);
mStateMgr.changeState(StateID_InvisibleWait);
}
if (mpContainerAnmGroup2->isFlag2()) {
mpContainerAnmGroup2->play();
}
}
void dLytMeterABtn_c::finalizeState_Out() {}
void dLytMeterABtn_c::initializeState_Wait() {}
void dLytMeterABtn_c::executeState_Wait() {}
void dLytMeterABtn_c::finalizeState_Wait() {}
void dLytMeterABtn_c::initializeState_On() {}
void dLytMeterABtn_c::executeState_On() {}
void dLytMeterABtn_c::finalizeState_On() {}
void dLytMeterABtn_c::initializeState_Active() {}
void dLytMeterABtn_c::executeState_Active() {}
void dLytMeterABtn_c::finalizeState_Active() {}
void dLytMeterABtn_c::initializeState_Off() {}
void dLytMeterABtn_c::executeState_Off() {}
void dLytMeterABtn_c::finalizeState_Off() {}
static const d2d::LytBrlanMapping brlanMap[] = {
{"remoConBtn_06_input.brlan", "G_input_00"},
{ "remoConBtn_06_text.brlan", "G_text_00"},
{ "remoConBtn_06_loop.brlan", "G_loop_00"},
};
#define A_BTN_ANIM_INPUT 0
#define A_BTN_ANIM_TEXT 1
#define A_BTN_ANIM_LOOP 2
static const char *sTextBoxes[] = {
"T_aBtn_00",
"T_aBtnS_00",
};
bool dLytMeterABtn_c::build(d2d::ResAccIf_c *resAcc) {
mLyt.setResAcc(resAcc);
mLyt.build("remoConBtn_06.brlyt", nullptr);
for (int i = 0; i < 3; i++) {
mAnmGroups[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName);
mAnmGroups[i].setDirection(false);
mAnmGroups[i].setAnimEnable(false);
}
static const char *sPane = "N_all_0";
mpPane = mLyt.findPane(sPane);
for (int i = 0; i < 2; i++) {
mpTextBoxes[i] = mLyt.getTextBox(sTextBoxes[i]);
}
static const char *sWindow = "W_bg_P_00";
mpWindow = mLyt.getWindow(sWindow);
mpSizeBox = mLyt.getSizeBoxInWindow(sWindow);
field_0x1C4 = 0x5F;
field_0x1B8 = 0x5F;
field_0x1BC = 0x5F;
field_0x1C8 = 0;
field_0x1CA = 0;
field_0x1C9 = 0;
field_0x1C0 = 1;
field_0x1CB = 0;
field_0x1A4 = 0;
mAnmGroups[A_BTN_ANIM_TEXT].setAnimEnable(true);
fn_800E0870(field_0x1B8);
mAnmGroups[A_BTN_ANIM_TEXT].setFrame(0.0f);
mAnmGroups[A_BTN_ANIM_INPUT].setToEnd();
mAnmGroups[A_BTN_ANIM_INPUT].setAnimEnable(true);
mAnmGroups[A_BTN_ANIM_LOOP].setAnimEnable(true);
mLyt.calc();
mAnmGroups[A_BTN_ANIM_INPUT].setAnimEnable(false);
mStateMgr.changeState(StateID_Wait);
return true;
}
bool dLytMeterABtn_c::remove() {
for (int i = 0; i < 3; i++) {
mAnmGroups[i].unbind();
mAnmGroups[i].afterUnbind();
}
return true;
}
+11
View File
@@ -0,0 +1,11 @@
#include "d/lyt/meter/d_lyt_meter_cross_btn.h"
STATE_DEFINE(dLytMeterCrossBtnParts_c, Wait);
STATE_DEFINE(dLytMeterCrossBtnParts_c, On);
STATE_DEFINE(dLytMeterCrossBtnParts_c, Active);
STATE_DEFINE(dLytMeterCrossBtnParts_c, Off);
STATE_DEFINE(dLytMeterCrossBtn_c, Wait);
STATE_DEFINE(dLytMeterCrossBtn_c, ToUse);
STATE_DEFINE(dLytMeterCrossBtn_c, ToUnuse);
STATE_DEFINE(dLytMeterCrossBtn_c, Unuse);
+33
View File
@@ -0,0 +1,33 @@
#include "d/lyt/meter/d_lyt_meter_dowsing.h"
STATE_DEFINE(dLytMeterDowsingMenuIcon_c, Wait);
STATE_DEFINE(dLytMeterDowsingMenuIcon_c, On);
STATE_DEFINE(dLytMeterDowsingMenuIcon_c, Select);
STATE_DEFINE(dLytMeterDowsingMenuIcon_c, Off);
STATE_DEFINE(dLytMeterDowsingBlink_c, Wait);
STATE_DEFINE(dLytMeterDowsingBlink_c, On);
STATE_DEFINE(dLytMeterDowsingBlink_c, Select);
STATE_DEFINE(dLytMeterDowsingBlink_c, Off);
STATE_DEFINE(dLytMeterDowsingInput_c, Wait);
STATE_DEFINE(dLytMeterDowsingInput_c, On);
STATE_DEFINE(dLytMeterDowsingInput_c, Select);
STATE_DEFINE(dLytMeterDowsingInput_c, Off);
STATE_DEFINE(dLytMeterDowsingText_c, Wait);
STATE_DEFINE(dLytMeterDowsingText_c, On);
STATE_DEFINE(dLytMeterDowsingText_c, Select);
STATE_DEFINE(dLytMeterDowsingText_c, Off);
STATE_DEFINE(dLytMeterDowsing_c, Invisible);
STATE_DEFINE(dLytMeterDowsing_c, Wait);
STATE_DEFINE(dLytMeterDowsing_c, MenuSelectingIn);
STATE_DEFINE(dLytMeterDowsing_c, MenuSelecting);
STATE_DEFINE(dLytMeterDowsing_c, MenuSelectingOut);
STATE_DEFINE(dLytMeterDowsing_c, Reset);
STATE_DEFINE(dLytMeterDowsing_c, ToUse);
STATE_DEFINE(dLytMeterDowsing_c, ToUnuse);
STATE_DEFINE(dLytMeterDowsing_c, Unuse);
STATE_DEFINE(dLytMeterDowsing_c, DemoMove);
STATE_DEFINE(dLytMeterDowsing_c, DemoOut);
+12
View File
@@ -0,0 +1,12 @@
#include "d/lyt/meter/d_lyt_meter_drink.h"
STATE_DEFINE(dLytMeterDrinkParts_c, Invisible);
STATE_DEFINE(dLytMeterDrinkParts_c, In);
STATE_DEFINE(dLytMeterDrinkParts_c, Visible);
STATE_DEFINE(dLytMeterDrinkParts_c, Out);
STATE_DEFINE(dLytMeterDrink_c, Invisible);
STATE_DEFINE(dLytMeterDrink_c, In);
STATE_DEFINE(dLytMeterDrink_c, Wait);
STATE_DEFINE(dLytMeterDrink_c, Move);
STATE_DEFINE(dLytMeterDrink_c, Out);
@@ -0,0 +1,6 @@
#include "d/lyt/meter/d_lyt_meter_event_skip.h"
STATE_DEFINE(dLytMeterEventSkip_c, Invisible);
STATE_DEFINE(dLytMeterEventSkip_c, In);
STATE_DEFINE(dLytMeterEventSkip_c, Visible);
STATE_DEFINE(dLytMeterEventSkip_c, Out);
@@ -0,0 +1,93 @@
#include "d/lyt/meter/d_lyt_meter_ganbari_gauge.h"
STATE_DEFINE(dLytMeterGanbariGauge_c, InvisibleWait);
STATE_DEFINE(dLytMeterGanbariGauge_c, In);
STATE_DEFINE(dLytMeterGanbariGauge_c, Wait);
STATE_DEFINE(dLytMeterGanbariGauge_c, OutWait);
STATE_DEFINE(dLytMeterGanbariGauge_c, Out);
STATE_DEFINE(dLytMeterGanbariGauge_c, CameraOut);
STATE_DEFINE(dLytMeterGanbariGauge_c, Full);
STATE_DEFINE(dLytMeterGanbariGauge_c, FullGutsUse);
STATE_DEFINE(dLytMeterGanbariGauge_c, Normal);
STATE_DEFINE(dLytMeterGanbariGauge_c, Caution);
STATE_DEFINE(dLytMeterGanbariGauge_c, ToMin);
STATE_DEFINE(dLytMeterGanbariGauge_c, Recovery);
STATE_DEFINE(dLytMeterGanbariGauge_c, ToMax);
void dLytMeterGanbariGauge_c::initializeState_InvisibleWait() {}
void dLytMeterGanbariGauge_c::executeState_InvisibleWait() {}
void dLytMeterGanbariGauge_c::finalizeState_InvisibleWait() {}
void dLytMeterGanbariGauge_c::initializeState_In() {}
void dLytMeterGanbariGauge_c::executeState_In() {}
void dLytMeterGanbariGauge_c::finalizeState_In() {}
void dLytMeterGanbariGauge_c::initializeState_Wait() {}
void dLytMeterGanbariGauge_c::executeState_Wait() {}
void dLytMeterGanbariGauge_c::finalizeState_Wait() {}
void dLytMeterGanbariGauge_c::initializeState_OutWait() {}
void dLytMeterGanbariGauge_c::executeState_OutWait() {}
void dLytMeterGanbariGauge_c::finalizeState_OutWait() {}
void dLytMeterGanbariGauge_c::initializeState_Out() {}
void dLytMeterGanbariGauge_c::executeState_Out() {}
void dLytMeterGanbariGauge_c::finalizeState_Out() {}
void dLytMeterGanbariGauge_c::initializeState_CameraOut() {}
void dLytMeterGanbariGauge_c::executeState_CameraOut() {}
void dLytMeterGanbariGauge_c::finalizeState_CameraOut() {}
void dLytMeterGanbariGauge_c::initializeState_Full() {}
void dLytMeterGanbariGauge_c::executeState_Full() {}
void dLytMeterGanbariGauge_c::finalizeState_Full() {}
void dLytMeterGanbariGauge_c::initializeState_FullGutsUse() {}
void dLytMeterGanbariGauge_c::executeState_FullGutsUse() {}
void dLytMeterGanbariGauge_c::finalizeState_FullGutsUse() {}
void dLytMeterGanbariGauge_c::initializeState_Normal() {}
void dLytMeterGanbariGauge_c::executeState_Normal() {}
void dLytMeterGanbariGauge_c::finalizeState_Normal() {}
void dLytMeterGanbariGauge_c::initializeState_Caution() {}
void dLytMeterGanbariGauge_c::executeState_Caution() {}
void dLytMeterGanbariGauge_c::finalizeState_Caution() {}
void dLytMeterGanbariGauge_c::initializeState_ToMin() {}
void dLytMeterGanbariGauge_c::executeState_ToMin() {}
void dLytMeterGanbariGauge_c::finalizeState_ToMin() {}
void dLytMeterGanbariGauge_c::initializeState_Recovery() {}
void dLytMeterGanbariGauge_c::executeState_Recovery() {}
void dLytMeterGanbariGauge_c::finalizeState_Recovery() {}
void dLytMeterGanbariGauge_c::initializeState_ToMax() {}
void dLytMeterGanbariGauge_c::executeState_ToMax() {}
void dLytMeterGanbariGauge_c::finalizeState_ToMax() {}
bool dLytMeterGanbariGauge_c::build(d2d::ResAccIf_c *resAcc) {
// TODO
return true;
}
bool dLytMeterGanbariGauge_c::remove() {
return true;
}
bool dLytMeterGanbariGauge_c::LytMeter0x14() {
// TODO
return true;
}
const char *dLytMeterGanbariGauge_c::getName() const {
return mLyt.getName();
}
d2d::LytBase_c *dLytMeterGanbariGauge_c::getLyt() {
return &mLyt;
}
nw4r::lyt::Pane *dLytMeterGanbariGauge_c::getPane() {
return mLyt.getLayout()->GetRootPane();
}
@@ -0,0 +1,12 @@
#include "d/lyt/meter/d_lyt_meter_item_select.h"
dLytMeterItemSelect_c::dLytMeterItemSelect_c() : mStateMgr(*this, sStateID::null) {
field_0x574C = 11;
field_0x5750 = 11;
field_0x5754 = 0;
field_0x5758 = -1;
field_0x575C = 0;
field_0x5760 = 0;
field_0x5764 = -1;
field_0x5768 = 2;
}
+69
View File
@@ -0,0 +1,69 @@
#include "d/lyt/meter/d_lyt_meter_key.h"
STATE_DEFINE(dLytMeterKakeraKey_c, Wait);
STATE_DEFINE(dLytMeterKakeraKey_c, On);
STATE_DEFINE(dLytMeterKakeraKey_c, Increase);
STATE_DEFINE(dLytMeterKakeraKey_c, Active);
STATE_DEFINE(dLytMeterKakeraKey_c, Off);
STATE_DEFINE(dLytMeterBossKey_c, Wait);
STATE_DEFINE(dLytMeterBossKey_c, On);
STATE_DEFINE(dLytMeterBossKey_c, Active);
STATE_DEFINE(dLytMeterBossKey_c, Off);
STATE_DEFINE(dLytMeterSmallKey_c, Wait);
STATE_DEFINE(dLytMeterSmallKey_c, On);
STATE_DEFINE(dLytMeterSmallKey_c, Active);
STATE_DEFINE(dLytMeterSmallKey_c, Off);
void dLytMeterKakeraKey_c::initializeState_Wait() {}
void dLytMeterKakeraKey_c::executeState_Wait() {}
void dLytMeterKakeraKey_c::finalizeState_Wait() {}
void dLytMeterKakeraKey_c::initializeState_On() {}
void dLytMeterKakeraKey_c::executeState_On() {}
void dLytMeterKakeraKey_c::finalizeState_On() {}
void dLytMeterKakeraKey_c::initializeState_Increase() {}
void dLytMeterKakeraKey_c::executeState_Increase() {}
void dLytMeterKakeraKey_c::finalizeState_Increase() {}
void dLytMeterKakeraKey_c::initializeState_Active() {}
void dLytMeterKakeraKey_c::executeState_Active() {}
void dLytMeterKakeraKey_c::finalizeState_Active() {}
void dLytMeterKakeraKey_c::initializeState_Off() {}
void dLytMeterKakeraKey_c::executeState_Off() {}
void dLytMeterKakeraKey_c::finalizeState_Off() {}
void dLytMeterBossKey_c::initializeState_Wait() {}
void dLytMeterBossKey_c::executeState_Wait() {}
void dLytMeterBossKey_c::finalizeState_Wait() {}
void dLytMeterBossKey_c::initializeState_On() {}
void dLytMeterBossKey_c::executeState_On() {}
void dLytMeterBossKey_c::finalizeState_On() {}
void dLytMeterBossKey_c::initializeState_Active() {}
void dLytMeterBossKey_c::executeState_Active() {}
void dLytMeterBossKey_c::finalizeState_Active() {}
void dLytMeterBossKey_c::initializeState_Off() {}
void dLytMeterBossKey_c::executeState_Off() {}
void dLytMeterBossKey_c::finalizeState_Off() {}
void dLytMeterSmallKey_c::initializeState_Wait() {}
void dLytMeterSmallKey_c::executeState_Wait() {}
void dLytMeterSmallKey_c::finalizeState_Wait() {}
void dLytMeterSmallKey_c::initializeState_On() {}
void dLytMeterSmallKey_c::executeState_On() {}
void dLytMeterSmallKey_c::finalizeState_On() {}
void dLytMeterSmallKey_c::initializeState_Active() {}
void dLytMeterSmallKey_c::executeState_Active() {}
void dLytMeterSmallKey_c::finalizeState_Active() {}
void dLytMeterSmallKey_c::initializeState_Off() {}
void dLytMeterSmallKey_c::executeState_Off() {}
void dLytMeterSmallKey_c::finalizeState_Off() {}
+26
View File
@@ -0,0 +1,26 @@
#include "d/lyt/meter/d_lyt_meter_minus_btn.h"
STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, Wait);
STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, On);
STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, Select);
STATE_DEFINE(dLytMeterMinusBtnMenuIcon_c, Off);
STATE_DEFINE(dLytMeterMinusBtnBlink_c, Wait);
STATE_DEFINE(dLytMeterMinusBtnBlink_c, On);
STATE_DEFINE(dLytMeterMinusBtnBlink_c, Select);
STATE_DEFINE(dLytMeterMinusBtnBlink_c, Off);
STATE_DEFINE(dLytMeterMinusBtnText_c, Wait);
STATE_DEFINE(dLytMeterMinusBtnText_c, On);
STATE_DEFINE(dLytMeterMinusBtnText_c, Select);
STATE_DEFINE(dLytMeterMinusBtnText_c, Off);
STATE_DEFINE(dLytMeterMinusBtn_c, Wait);
STATE_DEFINE(dLytMeterMinusBtn_c, MenuSelectingIn);
STATE_DEFINE(dLytMeterMinusBtn_c, MenuSelecting);
STATE_DEFINE(dLytMeterMinusBtn_c, MenuSelectingOut);
STATE_DEFINE(dLytMeterMinusBtn_c, ToUse);
STATE_DEFINE(dLytMeterMinusBtn_c, ToUnuse);
STATE_DEFINE(dLytMeterMinusBtn_c, Unuse);
STATE_DEFINE(dLytMeterMinusBtn_c, DemoMove);
STATE_DEFINE(dLytMeterMinusBtn_c, DemoOut);
+6
View File
@@ -0,0 +1,6 @@
#include "d/lyt/meter/d_lyt_meter_nun_stk.h"
STATE_DEFINE(dLytMeterNunStk_c, Wait);
STATE_DEFINE(dLytMeterNunStk_c, On);
STATE_DEFINE(dLytMeterNunStk_c, Active);
STATE_DEFINE(dLytMeterNunStk_c, Off);
@@ -0,0 +1,6 @@
#include "d/lyt/meter/d_lyt_meter_nunchaku_bg.h"
STATE_DEFINE(dLytMeterNunchakuBg_c, Wait);
STATE_DEFINE(dLytMeterNunchakuBg_c, On);
STATE_DEFINE(dLytMeterNunchakuBg_c, Active);
STATE_DEFINE(dLytMeterNunchakuBg_c, Off);
+6
View File
@@ -0,0 +1,6 @@
#include "d/lyt/meter/d_lyt_meter_plus_btn.h"
STATE_DEFINE(dLytMeterPlusBtn_c, Wait);
STATE_DEFINE(dLytMeterPlusBtn_c, ToUse);
STATE_DEFINE(dLytMeterPlusBtn_c, ToUnuse);
STATE_DEFINE(dLytMeterPlusBtn_c, Unuse);
+5 -5
View File
@@ -1,8 +1,8 @@
#include "d/lyt/meter/d_lyt_meter_remocon_bg.h"
#include "d/lyt/d_lyt_do_button.h"
#include "d/lyt/meter/d_lyt_meter.h"
#include "toBeSorted/event_manager.h"
STATE_DEFINE(dLytMeterRemoconBg_c, Wait);
STATE_DEFINE(dLytMeterRemoconBg_c, On);
STATE_DEFINE(dLytMeterRemoconBg_c, Active);
@@ -24,11 +24,11 @@ void dLytMeterRemoconBg_c::initializeState_Off() {}
void dLytMeterRemoconBg_c::executeState_Off() {}
void dLytMeterRemoconBg_c::finalizeState_Off() {}
static const char *n1 = "N_remoConBg_00";
bool dLytMeterRemoconBg_c::build(d2d::ResAccIf_c *resAcc) {
mLyt.setResAcc(resAcc);
mLyt.build("remoConBg_00.brlyt", nullptr);
static const char *n1 = "N_remoConBg_00";
mpPane = mLyt.findPane(n1);
field_0xE8 = 0x61;
field_0xDC = 0x61;
@@ -39,7 +39,7 @@ bool dLytMeterRemoconBg_c::build(d2d::ResAccIf_c *resAcc) {
return true;
}
bool dLytMeterRemoconBg_c::LytMeter0x10() {
bool dLytMeterRemoconBg_c::remove() {
return true;
}
@@ -52,7 +52,7 @@ const char *dLytMeterRemoconBg_c::getName() const {
return mLyt.getName();
}
void *dLytMeterRemoconBg_c::LytMeter0x1C() {
d2d::LytBase_c *dLytMeterRemoconBg_c::getLyt() {
return &mLyt;
}
+12
View File
@@ -0,0 +1,12 @@
#include "d/lyt/meter/d_lyt_meter_rupy.h"
STATE_DEFINE(dLytMeterRupyStart_c, Wait);
STATE_DEFINE(dLytMeterRupyStart_c, Start);
STATE_DEFINE(dLytMeterRupyBlink_c, Wait);
STATE_DEFINE(dLytMeterRupyBlink_c, Flash);
STATE_DEFINE(dLytMeterRupy_c, In);
STATE_DEFINE(dLytMeterRupy_c, Active);
STATE_DEFINE(dLytMeterRupy_c, Start);
STATE_DEFINE(dLytMeterRupy_c, Out);
@@ -0,0 +1,47 @@
#include "d/lyt/meter/d_lyt_meter_shield_gauge.h"
STATE_DEFINE(dLytMeterShieldGauge_c, Normal);
STATE_DEFINE(dLytMeterShieldGauge_c, Use);
STATE_DEFINE(dLytMeterShieldGauge_c, ToMax);
void dLytMeterShieldGauge_c::initializeState_Normal() {}
void dLytMeterShieldGauge_c::executeState_Normal() {}
void dLytMeterShieldGauge_c::finalizeState_Normal() {}
void dLytMeterShieldGauge_c::initializeState_Use() {}
void dLytMeterShieldGauge_c::executeState_Use() {}
void dLytMeterShieldGauge_c::finalizeState_Use() {}
void dLytMeterShieldGauge_c::initializeState_ToMax() {}
void dLytMeterShieldGauge_c::executeState_ToMax() {}
void dLytMeterShieldGauge_c::finalizeState_ToMax() {}
bool dLytMeterShieldGauge_c::build(d2d::ResAccIf_c *resAcc) {
// TODO
return true;
}
bool dLytMeterShieldGauge_c::remove() {
for (int i = 0; i < 8; i++) {
mAnmGroups[i].unbind();
mAnmGroups[i].afterUnbind();
}
return true;
}
bool dLytMeterShieldGauge_c::LytMeter0x14() {
// TODO
return true;
}
const char *dLytMeterShieldGauge_c::getName() const {
return mLyt.getName();
}
d2d::LytBase_c *dLytMeterShieldGauge_c::getLyt() {
return &mLyt;
}
nw4r::lyt::Pane *dLytMeterShieldGauge_c::getPane() {
return mLyt.getLayout()->GetRootPane();
}
+9
View File
@@ -0,0 +1,9 @@
#include "d/lyt/meter/d_lyt_meter_timer.h"
STATE_DEFINE(dLytMeterTimer_c, ChangeSiren);
STATE_DEFINE(dLytMeterTimer_c, Siren);
STATE_DEFINE(dLytMeterTimer_c, ChangeSafeBloom);
STATE_DEFINE(dLytMeterTimer_c, ChangeSafe);
STATE_DEFINE(dLytMeterTimer_c, Safe);
STATE_DEFINE(dLytMeterTimer_c, ChangeFruits);
STATE_DEFINE(dLytMeterTimer_c, Fruits);
+6
View File
@@ -0,0 +1,6 @@
#include "d/lyt/meter/d_lyt_meter_z_btn.h"
STATE_DEFINE(dLytMeterZBtn_c, Wait);
STATE_DEFINE(dLytMeterZBtn_c, On);
STATE_DEFINE(dLytMeterZBtn_c, Active);
STATE_DEFINE(dLytMeterZBtn_c, Off);
+1 -1
View File
@@ -149,7 +149,7 @@ bool FrameCtrl_c::isStop() const {
f32 actualEnd;
switch (mFlags) {
case FLAG_NO_LOOP: actualEnd = mEndFrame - 1.0f; return mCurrFrame >= actualEnd;
case FLAG_NO_LOOP | FLAG_BACKWARDS: return mCurrFrame <= 0;
case FLAG_NO_LOOP | FLAG_BACKWARDS: return mCurrFrame <= 0.0f;
default: return false;
}
}
+155
View File
@@ -0,0 +1,155 @@
"""
Appropriately names state manager weak functions, given a .s file with
correctly named vtables.
Call with:
python ./tools/custom/apply_state_mgr_fns.py PATH_TO_S_FILE PATH_TO_SYMBOLS_FILE
"""
from dataclasses import dataclass
import pathlib
import re
import sys
from typing import Callable, List
@dataclass
class Vtable:
# A vtable pattern with a match named class_name
vtable_pat: re.Pattern
# A factory for function names
functions: Callable[[str], List[str | None]]
def L(items):
"""Join items and add a length prefix"""
s = None
if isinstance(items, list):
s = "".join(items)
else:
s = items
return str(len(s)) + s
sFStateMgr_c = Vtable(
re.compile("__vt__[0-9]+sFStateMgr_c<[0-9]+(?P<class_name>[A-Za-z0-9_]+),20sStateMethodUsr_FI_c>"),
lambda name: [
None,
None,
"__dt__" + L(["sFStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c>"]) + "Fv",
"initializeState__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "Fv",
"executeState__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "Fv",
"finalizeState__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "Fv",
"changeState__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "FRC12sStateIDIf_c",
"refreshState__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "Fv",
"getState__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "CFv",
"getNewStateID__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "CFv",
"getStateID__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "CFv",
"getOldStateID__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "CFv",
]
)
sStateMgr_c = Vtable(
re.compile("__vt__[0-9]+sStateMgr_c<[0-9]+(?P<class_name>[A-Za-z0-9_]+),20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"),
lambda name: [
None,
None,
"__dt__" + L(["sStateMgr_c<", L(name), ",20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>"]) + "Fv",
# the rest are dupes
]
)
sFStateFct_c = Vtable(
re.compile("__vt__[0-9]+sFStateFct_c<[0-9]+(?P<class_name>[A-Za-z0-9_]+)>"),
lambda name: [
None,
None,
"__dt__" + L(["sFStateFct_c<", L(name), ">"]) + "Fv",
"build__" + L(["sFStateFct_c<", L(name), ">"]) + "FRC12sStateIDIf_c",
"dispose__" + L(["sFStateFct_c<", L(name), ">"]) + "FRP10sStateIf_c",
]
)
sFState_c = Vtable(
re.compile("__vt__[0-9]+sFState_c<[0-9]+(?P<class_name>[A-Za-z0-9_]+)>"),
lambda name: [
None,
None,
"__dt__" + L(["sFState_c<", L(name), ">"]) + "Fv",
"initialize__" + L(["sFState_c<", L(name), ">"]) + "Fv",
"execute__" + L(["sFState_c<", L(name), ">"]) + "Fv",
"finalize__" + L(["sFState_c<", L(name), ">"]) + "Fv",
]
)
sFStateID_c = Vtable(
re.compile("__vt__[0-9]+sFStateID_c<[0-9]+(?P<class_name>[A-Za-z0-9_]+)>"),
lambda name: [
None,
None,
"__dt__" + L(["sFStateID_c<", L(name), ">"]) + "Fv",
None,
None,
None,
None,
"isSameName__" + L(["sFStateID_c<", L(name), ">"]) + "CFPCc",
None,
None,
"initializeState__" + L(["sFStateID_c<", L(name), ">"]) + "CFR" + L(name),
"executeState__" + L(["sFStateID_c<", L(name), ">"]) + "CFR" + L(name),
"finalizeState__" + L(["sFStateID_c<", L(name), ">"]) + "CFR" + L(name),
]
)
vtables = [
sFStateMgr_c,
sStateMgr_c,
sFStateFct_c,
sFState_c,
sFStateID_c,
]
def parse_data(file):
renames = []
lines: List[str] = file.splitlines()
i = 0
while i < len(lines):
if lines[i].startswith(".obj"):
obj_name = lines[i].rsplit(",", maxsplit=1)[0][5:]
if obj_name.startswith('"') and obj_name.endswith('"'):
obj_name = obj_name[1:-1]
for tab in vtables:
if (match := tab.vtable_pat.match(obj_name)):
class_name = match.group("class_name")
fns = tab.functions(class_name)
for new_name in fns:
i += 1
if new_name is not None:
old_name = lines[i].split(" ")[-1]
if old_name.startswith('"') and old_name.endswith('"'):
old_name = old_name[1:-1]
renames.append((old_name, new_name))
break
i += 1
return renames
def main():
s_file = sys.argv[1]
sym_file = sys.argv[2]
s_text = pathlib.Path(s_file).read_text()
renames = parse_data(s_text)
sym_text = pathlib.Path(sym_file).read_text()
for (old, new) in renames:
if old != new:
sym_text = sym_text.replace(old + " = .text", new + " = .text")
pathlib.Path(sym_file).write_text(sym_text)
if __name__ == "__main__":
main()