diff options
| author | robojumper <robojumper@gmail.com> | 2025-05-09 18:28:45 +0200 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2025-05-10 22:20:16 +0200 |
| commit | 4c5dede891ea0934d77bfcee8f50f9702c949031 (patch) | |
| tree | ffac19613501deb82a6bdced221111510fe6feb4 /include/d | |
| parent | 378c19269740113da8ca3fc4579ea6fd1d6d946e (diff) | |
d_message OK (via dFlow_c)
Diffstat (limited to 'include/d')
| -rw-r--r-- | include/d/a/d_a_item.h | 7 | ||||
| -rw-r--r-- | include/d/a/d_a_player.h | 3 | ||||
| -rw-r--r-- | include/d/a/obj/d_a_obj_toD3_stone_figure.h | 2 | ||||
| -rw-r--r-- | include/d/d_camera.h | 7 | ||||
| -rw-r--r-- | include/d/d_message.h | 249 | ||||
| -rw-r--r-- | include/d/d_player.h | 3 | ||||
| -rw-r--r-- | include/d/d_pouch.h | 11 | ||||
| -rw-r--r-- | include/d/d_sc_game.h | 2 | ||||
| -rw-r--r-- | include/d/d_stage.h | 4 | ||||
| -rw-r--r-- | include/d/d_stage_mgr.h | 1 | ||||
| -rw-r--r-- | include/d/d_tag_processor.h | 13 | ||||
| -rw-r--r-- | include/d/lyt/d_lyt_control_game.h | 3 | ||||
| -rw-r--r-- | include/d/lyt/d_lyt_demo_dowsing.h | 39 | ||||
| -rw-r--r-- | include/d/lyt/d_lyt_map.h | 5 | ||||
| -rw-r--r-- | include/d/lyt/d_lyt_mini_game.h | 25 | ||||
| -rw-r--r-- | include/d/lyt/meter/d_lyt_meter.h | 22 | ||||
| -rw-r--r-- | include/d/lyt/meter/d_lyt_meter_rupy.h | 4 | ||||
| -rw-r--r-- | include/d/lyt/msg_window/d_lyt_msg_window.h | 21 |
18 files changed, 408 insertions, 13 deletions
diff --git a/include/d/a/d_a_item.h b/include/d/a/d_a_item.h index bb3181bc..983b701f 100644 --- a/include/d/a/d_a_item.h +++ b/include/d/a/d_a_item.h @@ -47,6 +47,8 @@ public: static void spawnItem(u16 item, u32 room, const mVec3_c &pos, const mAng3_c &rot, u32 params, u32 arg); static void spawnDrop(u16 item, u32 room, const mVec3_c &pos, const mAng3_c &rot); static u32 checkFlag(u32 flag); + static void setFlag(s32 id); + void setItemPosition(const mVec3_c &); void getItemFromBWheelItem(); bool isStateWait(); @@ -59,6 +61,9 @@ public: static s32 getTotalSeedCapacity(); static s32 getTotalArrowCapacity(); + static s32 getRupeeCounter(); + static u32 getCurrentWalletCapacity(); + static u32 getKeyPieceCount(); static u32 getSmallKeyCount(); @@ -70,6 +75,8 @@ public: static void itemGetEventStart(dAcBase_c *); static void itemGetEventEnd(dAcBase_c *); + static void addRupees(s32 amount); + enum Trial_e { TRIAL_SKYLOFT, TRIAL_FARON, diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 32297c77..e56ec7f5 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -149,7 +149,7 @@ public: /* vt 0x1A4 */ virtual void vt_0x1A4(); /* vt 0x1A8 */ virtual void vt_0x1A8(); /* vt 0x1AC */ virtual void vt_0x1AC(); - /* vt 0x1B0 */ virtual void isItemFairyFromBugnet(); + /* vt 0x1B0 */ virtual bool isItemFairyFromBugnet(); /* vt 0x1B4 */ virtual void isByte0x434eEqual7(); /* vt 0x1B8 */ virtual void canHandleGameOver(); /* vt 0x1BC */ virtual void vt_0x1BC(); @@ -338,6 +338,7 @@ public: static s32 getCurrentSlingshotType(); static s32 getCurrentBeetleType(); static s32 getCurrentBugNetType(); + static s32 getCurrentlyEquippedShieldType(); static bool isItemRestrictedByBokoBase(ITEM_ID item); diff --git a/include/d/a/obj/d_a_obj_toD3_stone_figure.h b/include/d/a/obj/d_a_obj_toD3_stone_figure.h index 9c7e1819..fd9e4f00 100644 --- a/include/d/a/obj/d_a_obj_toD3_stone_figure.h +++ b/include/d/a/obj/d_a_obj_toD3_stone_figure.h @@ -39,7 +39,7 @@ private: m3d::smdl_c mMdl; STATE_MGR_DECLARE(dAcOtoD3StoneFigure_c); dCcD_Cyl mCollision; - s8 mExitId; + u8 mExitId; bool mIsSkyKeepAlreadyOpen; }; diff --git a/include/d/d_camera.h b/include/d/d_camera.h index baf6246c..c0973223 100644 --- a/include/d/d_camera.h +++ b/include/d/d_camera.h @@ -5,6 +5,7 @@ #include "m/m_vec.h" extern "C" bool fn_80081FE0(void *, const char *); +extern "C" bool fn_800918E0(void *, s32, s16); class dCamera_c : public dBase_c { public: @@ -20,11 +21,17 @@ public: return mPositionMaybe; } + bool doFn_800918E0(s32 a1, s16 a2) { + return fn_800918E0(field_0xDA0, a1, a2); + } + private: /* 0x068 */ u8 _0x068[0x6C - 0x068]; /* 0x06C */ mVec3_c mPositionMaybe; /* 0x078 */ u8 _0x078[0xD98 - 0x078]; /* 0xD98 */ void *field_0xD98; + /* 0xD9C */ u8 _0xD9C[0xDA0 - 0xD9C]; + /* 0xDA0 */ void *field_0xDA0; }; #endif diff --git a/include/d/d_message.h b/include/d/d_message.h index 3c232312..684dd067 100644 --- a/include/d/d_message.h +++ b/include/d/d_message.h @@ -8,6 +8,193 @@ #include "libms/msgfile.h" #include "sized_string.h" +class dFlowBase_c { +protected: + enum Type_e { + FLOW_NONE, + FLOW_MESSAGE, + FLOW_BRANCH, + FLOW_EVENT, + FLOW_ENTRY, + FLOW_JUMP, + }; + +public: + virtual ~dFlowBase_c() {} + + /* vt 0x0C */ virtual void triggerEntryPoint(s32, s32) = 0; + /* vt 0x10 */ virtual void triggerEntryPoint(const char *) = 0; + /* vt 0x14 */ virtual void advanceFlow() = 0; + /* vt 0x18 */ virtual bool vt_0x18() const = 0; + /* vt 0x1C */ virtual bool handleEventInternal(const MsbFlowInfo *element) = 0; + /* vt 0x20 */ virtual bool handleEvent() = 0; + /* vt 0x24 */ virtual bool handleMessage() = 0; + /* vt 0x28 */ virtual bool handleBranch() = 0; + /* vt 0x2C */ virtual bool handleEntry() = 0; + /* vt 0x30 */ virtual bool handleJump() = 0; + /* vt 0x34 */ virtual void vt_0x34() {} +}; + +// Ghidra: ActorEventFlowManager +class dFlow_c : dFlowBase_c { + enum BranchValue_e { + BRANCH_00, + BRANCH_01, + BRANCH_02, + BRANCH_STORYFLAG, + BRANCH_04, + BRANCH_ZONEFLAG, + BRANCH_SCENEFLAG, + BRANCH_EVENT_COUNTER_THRESHOLD_1, + BRANCH_EVENT_COUNTER_THRESHOLD_2, + BRANCH_TEMPFLAG, + BRANCH_CURRENT_RUPEES, + BRANCH_RAND_2, + BRANCH_RAND_3, + BRANCH_RAND_4, + BRANCH_14, + BRANCH_15, + BRANCH_16, + BRANCH_FREE_SPACE_IN_POUCH, + BRANCH_18, + BRANCH_19, + BRANCH_FREE_SPACE_IN_ITEM_CHECK, + BRANCH_21, + BRANCH_22, + }; + + enum Event_e { + EVENT_SET_STORYFLAG = 0, + EVENT_UNSET_STORYFLAG = 1, + EVENT_SET_SCENEFLAG = 2, + EVENT_UNSET_SCENEFLAG = 3, + EVENT_SET_ZONEFLAG = 4, + EVENT_UNSET_ZONEFLAG = 5, + EVENT_DELAY = 6, + EVENT_07 = 7, + EVENT_RUPEES = 8, + EVENT_SET_ITEM = 9, + EVENT_EXIT = 10, + + EVENT_12 = 12, + + EVENT_COUNTER_THRESHOLD = 23, + EVENT_PLAY_SOUND = 24, + EVENT_ADD_ITEM = 25, + + EVENT_SET_TEMPFLAG = 28, + EVENT_UNSET_TEMPFLAG = 29, + + EVENT_LIGHT_PILLAR_30 = 30, + + EVENT_LIGHT_PILLAR_34 = 34, + + EVENT_SET_STORYFLAG_217 = 37, + EVENT_DEMO_METER_ITEM_SELECT = 38, + EVENT_CAMERA_42 = 42, + EVENT_LYT_MINI_GAME = 44, + EVENT_LYT_MINI_GAME_END = 45, + EVENT_46 = 46, + + EVENT_RESET_STORYFLAG = 52, + EVENT_SET_ITEMFLAG = 53, + EVENT_PALETTE = 54, + EVENT_DEMO_DOWSING = 55, + EVENT_DEMO_METER_DOWSING = 56, + EVENT_DEMO_METER_MINUS_BTN = 57, + EVENT_SELECT_STORY_DOWSING = 58, + EVENT_DEMO_COLLECTION_SCREEN = 59, + }; + +public: + dFlow_c(); + + virtual ~dFlow_c(); + + typedef u16 (dFlow_c::*BranchHandler)(const MsbFlowInfo *element) const; + + /* vt 0x0C */ virtual void triggerEntryPoint(s32 labelPart1, s32 labelPart2) override; + /* vt 0x10 */ virtual void triggerEntryPoint(const char *) override; + /* vt 0x14 */ virtual void advanceFlow() override; + /* vt 0x18 */ virtual bool vt_0x18() const override; + /* vt 0x1C */ virtual bool handleEventInternal(const MsbFlowInfo *element) override; + /* vt 0x20 */ virtual bool handleEvent() override; + /* vt 0x24 */ virtual bool handleMessage() override; + /* vt 0x28 */ virtual bool handleBranch() override; + /* vt 0x2C */ virtual bool handleEntry() override; + /* vt 0x30 */ virtual bool handleJump() override; + /* vt 0x38 */ virtual bool vt_0x38() const { + return 0; + } + /* vt 0x3C */ virtual u16 getSwitchChoice(const MsbFlowInfo *element, u16 param) const; + /* vt 0x40 */ virtual bool triggerEntryPointChecked(s32 labelPart1, s32 labelPart2); + + bool advanceUntilEvent(s32 searchParam3, s32 *pOutParams1n2); + bool advanceUntil(s32 searchType, s32 searchParam3, s32 *pOutParams1n2); + + u16 getField_0x44() const; + u16 getField_0x46() const; + +protected: + static s32 sExitId; + + static BranchHandler sBranchHandlers[]; + u16 branchHandler00(const MsbFlowInfo *element) const; + u16 branchHandler01(const MsbFlowInfo *element) const; + u16 branchHandler02(const MsbFlowInfo *element) const; + u16 branchHandler03(const MsbFlowInfo *element) const; + u16 branchHandler04(const MsbFlowInfo *element) const; + u16 branchHandler05(const MsbFlowInfo *element) const; + u16 branchHandler06(const MsbFlowInfo *element) const; + u16 branchHandler07(const MsbFlowInfo *element) const; + u16 branchHandler08(const MsbFlowInfo *element) const; + u16 branchHandler09(const MsbFlowInfo *element) const; + u16 branchHandler10(const MsbFlowInfo *element) const; + u16 branchHandler11(const MsbFlowInfo *element) const; + u16 branchHandler12(const MsbFlowInfo *element) const; + u16 branchHandler13(const MsbFlowInfo *element) const; + u16 branchHandler14(const MsbFlowInfo *element) const; + u16 branchHandler15(const MsbFlowInfo *element) const; + u16 branchHandler16(const MsbFlowInfo *element) const; + u16 branchHandler17(const MsbFlowInfo *element) const; + u16 branchHandler18(const MsbFlowInfo *element) const; + u16 branchHandler19(const MsbFlowInfo *element) const; + u16 branchHandler20(const MsbFlowInfo *element) const; + u16 branchHandler21(const MsbFlowInfo *element) const; + u16 branchHandler22(const MsbFlowInfo *element) const; + + u16 findEntryPoint(u16 labelPart1, u16 labelPart2); + u16 findEntryPoint(const char *label); + + void start(u16 entry); + void clear(); + void setNext(u16 next); + void setField0x3C(); + bool checkField0x3C() const; + bool matchesUnknownActorCategory(s32 id) const; + static void playSound(u32); + void createLytMiniGame(); + void clearMinigame(); + + /* 0x04 */ MsbfInfo *mpMsbf; + /* 0x08 */ s32 mCurrentFlowIndex; + /* 0x0C */ u16 field_0x0C; + /* 0x0E */ u8 field_0x0E; + /* 0x0F */ u8 field_0x0F; + /* 0x10 */ u8 field_0x10; + /* 0x14 */ s32 field_0x14; + /* 0x18 */ s32 mResultFromCounterCheck; + /* 0x1C */ SizedString<32> mCurrentTextLabelName; + /* 0x3C */ u8 field_0x3C; + /* 0x40 */ s32 field_0x40; + /* 0x44 */ u16 field_0x44; + /* 0x46 */ u16 field_0x46; + /* 0x48 */ s32 mDelayTimer; + /* 0x4C */ MsbFlowInfo mFlowInfo; + /* 0x5C */ s32 field_0x5C; + /* 0x60 */ s32 mFiInfo0; +}; + class dMessage_c : public dBase_c { public: dMessage_c(); @@ -30,6 +217,7 @@ public: return sTagProcessor; } + void clearLightPillarRelatedArgs(); void init(); void reset(); @@ -49,23 +237,63 @@ public: field_0x2FC = val; } + void setField_0x328(u8 val) { + field_0x328 = val; + } + s32 getField_0x32C() const { return field_0x32C; } + void setField_0x32C(s32 val) { + field_0x32C = val; + } + void setField_0x329(bool v) { field_0x329 = v; } + void setField_0x32A(bool v) { + field_0x32A = v; + } + bool getField_0x32A() const { return field_0x32A; } + void setField_0x330(bool v) { + field_0x330 = v; + } + + void setMiniGameVariant(s32 v) { + mMiniGameVariant = v; + } + + s32 getMiniGameVariant() const { + return mMiniGameVariant; + } + + void setField_0x344(s32 v) { + field_0x344 = v; + } + + u8 getField_0x340() const { + return field_0x340; + } + + void setField_0x340(u8 v) { + field_0x340 = v; + } + static bool isValidTextLabel(const char *name); static void loadTextByLabel(const char *label, dTagProcessor_c *tagProcessor, bool, u32, u32); static s32 getMsbtIndexForLabel(const char *name); static const char *getMsbtFileName(s32 index); + static MsbfInfo *getMsbfInfoForIndex(s32 index); + static s32 getMsbtIndexForMsbfIndex(s32); + static const char *getArcNameByIndex(s32 idx, bool); + static MsbtInfo *getMsbtInfoForIndex(s32 index); static const wchar_t *getTextMessageByLabel(const char *label, bool global, wchar_t *dstBuf, u32 maxLen); static const wchar_t * @@ -73,9 +301,16 @@ public: static const wchar_t *formatText(const wchar_t *text); - static MsbtInfo *getMsbtInfoForIndex(s32 index); - static MsbfInfo *getMsbfInfoForIndex(s32 index); - static const char *getArcNameByIndex(s32 idx, bool); + void storeLightPillarRelatedArg(u32); + u32 getLightPillarRelatedArg(s32); + + s32 getCurrentTextFileNumber() const { + return mCurrentTextFileNumber; + } + + void setCurrentTextFileNumber(s32 num) { + mCurrentTextFileNumber = num; + } private: static void *sZev0; @@ -105,7 +340,6 @@ private: s32 getTextIndexForLabel(const char *label); s32 getMsbtIndexForLabelInternal(const char *label); MsbtInfo *getMsbtInfoForIndexInternal(s32 index); - MsbfInfo *getMsbfInfoForIndexInternal(s32 index); static const char *getArcNameByIndexInternal(s32 idx, bool global); @@ -120,7 +354,7 @@ private: /* 0x2FC */ s32 field_0x2FC; - /* 0x300 */ u8 _0x300[0x328 - 0x300]; + /* 0x300 */ u32 field_0x300[10]; /* 0x328 */ bool field_0x328; /* 0x329 */ bool field_0x329; @@ -128,11 +362,12 @@ private: /* 0x32B */ u8 field_0x32B; /* 0x32C */ s32 field_0x32C; - /* 0x330 */ u8 _0x330[0x334 - 0x330]; + /* 0x330 */ u8 field_0x330; /* 0x334 */ u32 mMinigameResultPoints; /* 0x338 */ u32 mMinigameTime; - /* 0x33C */ u8 _0x33C[0x344 - 0x33C]; + /* 0x33C */ s32 mMiniGameVariant; + /* 0x340 */ u8 field_0x340; /* 0x344 */ s32 field_0x344; }; diff --git a/include/d/d_player.h b/include/d/d_player.h index bd6118d5..09c355b6 100644 --- a/include/d/d_player.h +++ b/include/d/d_player.h @@ -2,5 +2,8 @@ #define D_PLAYER_H #include "common.h" +#include "d/a/d_a_player.h" + +dAcPy_c *getLinkPtr(); #endif diff --git a/include/d/d_pouch.h b/include/d/d_pouch.h index a65d0097..80d671d1 100644 --- a/include/d/d_pouch.h +++ b/include/d/d_pouch.h @@ -2,11 +2,22 @@ #define D_POUCH_H #include "common.h" +#include "d/a/d_a_itembase.h" u32 convertFilePouchSlot(s32 fileSlot); s32 convertLytPouchSlot(s32 fileSlot); s32 getPouchSlotCount(bool unk); bool isItemExtraAmmo(s32 item); bool isItemMedal(s32 item); +bool hasAnyShields(); + +#define POUCH_SLOT_NONE 8 + +u8 adventurePouchFindItemSlot(ITEM_ID item); +u32 adventurePouchCountItem(ITEM_ID itemId); + +#define ITEM_CHECK_SLOT_NONE 60 + +u16 itemCheckFindItemSlot(ITEM_ID item); #endif diff --git a/include/d/d_sc_game.h b/include/d/d_sc_game.h index 33bd09d6..25c42b57 100644 --- a/include/d/d_sc_game.h +++ b/include/d/d_sc_game.h @@ -127,7 +127,7 @@ public: virtual int draw() override; virtual void deleteReady() override; - void triggerExit(s32 room, u8 exitIndex, s32 forcedNight = 2, s32 forcedTrial = 2); + void triggerExit(s32 room, u16 exitIndex, s32 forcedNight = 2, s32 forcedTrial = 2); // void triggerEntrance(const char *stageName, u8 room, ); const LinkReloadInfo &getLinkReloadInfo() const; diff --git a/include/d/d_stage.h b/include/d/d_stage.h index b7901d05..7e4dea81 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -137,7 +137,7 @@ public: return mFader.isStatus(mFaderBase_c::FADED_IN); } - u8 getCurrRoomId() const { + s8 getCurrRoomId() const { return curr_room_id; } @@ -158,7 +158,7 @@ private: /* 0x01A0 */ MapRelated mapRelated; /* 0x0394 */ u8 _0x394[0x39C - 0x394]; /* 0x039C */ u32 loaded_entities[2047]; - /* 0x2398 */ u8 curr_room_id; + /* 0x2398 */ s8 curr_room_id; /* 80575760 */ static dStage_c *sInstance; }; diff --git a/include/d/d_stage_mgr.h b/include/d/d_stage_mgr.h index c239a98d..05377c6f 100644 --- a/include/d/d_stage_mgr.h +++ b/include/d/d_stage_mgr.h @@ -48,6 +48,7 @@ public: STATE_FUNC_DECLARE(dStageMgr_c, RestartScene); public: + bool isAreaTypeNormal() const; bool isAreaTypeDungeon() const; bool isAreaTypeSky() const; bool isAreaTypeHouse() const; diff --git a/include/d/d_tag_processor.h b/include/d/d_tag_processor.h index d1b6fa0e..449c1388 100644 --- a/include/d/d_tag_processor.h +++ b/include/d/d_tag_processor.h @@ -132,6 +132,19 @@ public: field_0x82C = val; } + void setFields_0x8FC_0x900(s32 v1, s32 v2) { + field_0x8FC = v1; + field_0x900 = v2; + } + + s32 getField_0x8FC() const { + return field_0x8FC; + } + + s32 getField_0x900() const { + return field_0x900; + } + void setField_0x90D(u8 val) { field_0x90D = val; } diff --git a/include/d/lyt/d_lyt_control_game.h b/include/d/lyt/d_lyt_control_game.h index f8af08fc..d6908d2a 100644 --- a/include/d/lyt/d_lyt_control_game.h +++ b/include/d/lyt/d_lyt_control_game.h @@ -11,6 +11,9 @@ public: bool isInSomeMapState() const; bool isNotInStateMap() const; + void openCollectionScreenDemo(); + bool isStateNormalOrNotInEvent() const; + void somehowRelatedToEnteringLightPillars(s32, s32, s32); void fn_802CCD40(bool); diff --git a/include/d/lyt/d_lyt_demo_dowsing.h b/include/d/lyt/d_lyt_demo_dowsing.h new file mode 100644 index 00000000..e361b60f --- /dev/null +++ b/include/d/lyt/d_lyt_demo_dowsing.h @@ -0,0 +1,39 @@ +#ifndef D_LYT_DEMO_DOWSING_H +#define D_LYT_DEMO_DOWSING_H + +#include "common.h" +#include "d/d_base.h" +#include "d/lyt/d2d.h" +#include "s/s_State.hpp" + +class dLytDemoDowsing_c : public dBase_c { +public: + dLytDemoDowsing_c() : mStateMgr(*this, sStateID::null) { + sInstance = this; + } + virtual ~dLytDemoDowsing_c() { + sInstance = nullptr; + } + + static dLytDemoDowsing_c *GetInstance() { + return sInstance; + } + + void start() { + mShouldStart = true; + } + +private: + STATE_FUNC_DECLARE(dLytDemoDowsing_c, Wait); + STATE_FUNC_DECLARE(dLytDemoDowsing_c, Start); + + static dLytDemoDowsing_c *sInstance; + + /* 0x068 */ UI_STATE_MGR_DECLARE(dLytDemoDowsing_c); + /* 0x0A4 */ d2d::ResAccIf_c mResAcc; + /* 0x414 */ d2d::LytBase_c mLyt; + /* 0x4A4 */ d2d::AnmGroup_c mAnm[2]; + /* 0x524 */ bool mShouldStart; +}; + +#endif diff --git a/include/d/lyt/d_lyt_map.h b/include/d/lyt/d_lyt_map.h index 02f01563..652fcf4f 100644 --- a/include/d/lyt/d_lyt_map.h +++ b/include/d/lyt/d_lyt_map.h @@ -278,6 +278,7 @@ public: bool isOpenMaybe() const; bool fn_80139EA0() const; + void lightPillarRelated(s32, s32, s32); STATE_FUNC_DECLARE(dLytMapMain_c, Invisible); STATE_FUNC_DECLARE(dLytMapMain_c, RenderingWait); @@ -417,6 +418,10 @@ public: return isValid(val) && ((1 << (val - 2)) & 0x1D); } + void lightPillarRelated(s32 p1, s32 p2, s32 p3) { + mMapMain.lightPillarRelated(p1, p2, p3); + } + private: /* 0x0004 */ d2d::ResAccIf_c mResAcc; /* 0x0374 */ dLytMapMain_c mMapMain; diff --git a/include/d/lyt/d_lyt_mini_game.h b/include/d/lyt/d_lyt_mini_game.h new file mode 100644 index 00000000..a8065496 --- /dev/null +++ b/include/d/lyt/d_lyt_mini_game.h @@ -0,0 +1,25 @@ +#ifndef D_LYT_MINI_GAME_H +#define D_LYT_MINI_GAME_H + +#include "common.h" + +class dLytMiniGame_c { +public: + static dLytMiniGame_c *GetInstance() { + return sInstance; + } + + void timeRelatedExecute(); + void scoreRelatedExecute(); + + void setDisplayedTime(s32 time); + void setDisplayedPoints(s32 time); + + void timeRelated(); + void scoreRelated(); + +private: + static dLytMiniGame_c *sInstance; +}; + +#endif diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h index de76952a..0e3c1068 100644 --- a/include/d/lyt/meter/d_lyt_meter.h +++ b/include/d/lyt/meter/d_lyt_meter.h @@ -239,6 +239,18 @@ public: return &sInstance->mMain; } + bool itemSelectDemoRelated(s32 arg) { + return mMain.mItemSelect.fn_800F0220(arg); + } + + bool dowsingDemoRelated(s32 arg) { + return mMain.mDowsing.fn_800FE3C0(arg); + } + + bool minusBtnDemoRelated(s32 arg) { + return mMain.mMinusBtn.demoRelated(arg); + } + // Not all of these inlines exist on dLytMeterMain_c // because accessing via GetMeter->get... causes // different instructions sometimes @@ -255,6 +267,10 @@ public: return mMain.field_0x13774; } + void setMeterField_0x13775(bool val) { + mMain.field_0x13775 = val; + } + bool getMeterField_0x1377F() const { return mMain.field_0x1377F; } @@ -309,6 +325,12 @@ public: } } + static void setRupyField_0x8AD(u8 val) { + if (sInstance != nullptr) { + sInstance->mMain.mRupy.setField_0x8AD(val); + } + } + static u8 getRupyField_0x8AC() { if (sInstance != nullptr) { return sInstance->mMain.mRupy.getField_0x8AC(); diff --git a/include/d/lyt/meter/d_lyt_meter_rupy.h b/include/d/lyt/meter/d_lyt_meter_rupy.h index cacdbc88..65b04517 100644 --- a/include/d/lyt/meter/d_lyt_meter_rupy.h +++ b/include/d/lyt/meter/d_lyt_meter_rupy.h @@ -109,6 +109,10 @@ public: field_0x8AC = val; } + void setField_0x8AD(u8 val) { + field_0x8AD = val; + } + void setSize(u8 size) { mSize = size; } diff --git a/include/d/lyt/msg_window/d_lyt_msg_window.h b/include/d/lyt/msg_window/d_lyt_msg_window.h index 7c8ad633..c454767b 100644 --- a/include/d/lyt/msg_window/d_lyt_msg_window.h +++ b/include/d/lyt/msg_window/d_lyt_msg_window.h @@ -36,10 +36,13 @@ public: bool isVisible() const; bool isOutputtingText() const; - void setCurrentLabelName(const char *name, bool storeFile); + bool setCurrentLabelName(const char *name, bool storeFile); void setCurrentEntrypointName(const char *name); void setCurrentFlowFilename(const char *name); + void setNumericArg0(s32 arg); + void setNumericArgs(s32 *arg, s32 argCount); + static dLytMsgWindow_c *getInstance() { return sInstance; } @@ -58,6 +61,22 @@ public: return sInstance->mEntryPointToTrigger; } + dTagProcessor_c *getTagProcessor() const { + return mpTagProcessor; + } + + u8 getField_0x80D() const { + return field_0x80D; + } + + u8 getField_0x815() const { + return field_0x815; + } + + s32 getTextOptionSelection() const { + return mTextOptionSelection; + } + private: bool setTextToDisplay(const wchar_t *text); void createSubMsgManager(u8 type); |
