diff --git a/include/Item/Item.hpp b/include/Item/Item.hpp new file mode 100644 index 00000000..368001dd --- /dev/null +++ b/include/Item/Item.hpp @@ -0,0 +1,5 @@ +#pragma once + +#include "types.h" + +#define MAX_POTIONS 2 diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp new file mode 100644 index 00000000..a81f9bac --- /dev/null +++ b/include/Item/ItemManager.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include "Item/Item.hpp" +#include "System/SysNew.hpp" +#include "types.h" + +class ItemManager : public SysObject { +public: + /* 00 */ unk32 mEquippedItem; + /* 04 */ unk32 mForcedItem; + /* 08 */ unk16 mUnk_08; // inventory items bitfield + /* 0a */ unk16 mUnk_0a; // collection/equipment bitfield + /* 0c */ unk32 mUnk_0c; + /* 10 */ unk16 mNumRupees; + /* 12 */ unk16 mUnk_12; // "toggle bitfield" + /* 14 */ unk16 mItemRestrictions; // bitfield + /* 16 */ unk8 mTearsAmount; // number of tears of light + /* 17 */ unk8 mKeyAmount; // number of small keys + /* 18 */ unk8 mQuiverCapacity; + /* 19 */ unk8 mBombBagCapacity; + /* 1a */ unk8 mArrowAmount; + /* 1b */ unk8 mBombAmount; + /* 1c */ unk8 mPotions[MAX_POTIONS]; + /* 1e */ unk16 mUnk_1e; + /* 20 */ unk32 *mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ + + ItemManager(); + ~ItemManager(); +}; diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index 6bcbaab8..30820c39 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -3,24 +3,33 @@ #include "global.h" #include "types.h" +#include "Item/ItemManager.hpp" #include "System/SysNew.hpp" // PlayerManager? class UnkStruct_027e0ce0 { public: - /* 00 */ unk32 mUnk_00; + /* 00 */ unk8 mHealth; + /* 04 */ unk8 mHealthMax; + /* 02 */ unk32 mUnk_02; + /* 03 */ unk32 mUnk_03; /* 04 */ unk32 mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0c */ unk32 mUnk_0c; - /* 10 */ unk32 mUnk_10; - /* 14 */ unk32 mUnk_14; - /* 18 */ unk32 mUnk_18; - /* 1c */ unk32 mUnk_1c; - /* 20 */ unk32 mUnk_20; + /* 08 */ unk32 *mUnk_08; + /* 0c */ unk32 *mUnk_0c; + /* 10 */ unk32 *mUnk_10; + /* 14 */ unk32 *mUnk_14; + /* 18 */ unk32 *mUnk_18; + /* 1c */ unk32 *mUnk_1c; + /* 20 */ unk32 *mUnk_20; /* 24 */ unk32 mUnk_24; - /* 28 */ unk32 mUnk_28; - /* 2c */ unk32 mUnk_2c; - /* 30 */ + /* 28 */ ItemManager *mUnk_28; + /* 2c */ ItemManager *mUnk_2c; // same as above + /* 30 */ unk32 *mUnk_30; // ? + /* 34 */ unk32 *mUnk_34; + /* 38 */ unk32 *mUnk_38; // pointer to data_027e0478 when on the train + /* 3c */ unk32 mUnk_3c; + /* 40 */ unk32 *mUnk_40; // pointer to data_027e0478 when not on the train + /* 44 */ void func_01fff148();