Files
st/include/Item/ItemManager.hpp
T
Yanis 550f01708e Overlay 110 - PlayerGet (#2)
* delink overlay 110

* mangled functions names in symbols

* improve how versions are defined in the compiler's command

* add version-exclusive function + fix data_ov110_021861ec size

* match .rodata

* dsd sig apply

* progress

* vfunc_18 & func_ov110_02185d3c + format

* symbols renames

* remove force_data pragma

* started func_ov110_02184a40

* improve vfunc_18 match thanks to nepecam

* fixed relocs issues

* match func_ov110_02186b8c

* continue the awful function (and rename the folder)

* format

* build issues

* almost match func_ov110_02184a40!!!

* start vfunc_10 + misc

* vfunc_10 progress (91%)

* symbol fix

* vfunc_10 big switch fix

* turn some structs into a class

* update symbols

* vfunc_10 prog, move func_ov110_02185da4 to itemmanaager and some docs/cleanup

* progress on playerget and itemmanager

* fix build issues

* remove accidental header from merge and name mUnk_60

* add hex value comment in item id enum

* random stuff

* started vfunc_0c

* move externs around

* match/docs stuff related to item usage in PlayerGet

* format

* vfunc_10 version diff

* improve func_ov110_02186b8c handling and fix broken matches

* vfunc_0c small improvements

* progress on item manager

* complete item manager and add upgrade capacities

* some cleanup

* header cleanup

* match data (kind of)

* symbol naming

* name more symbols 1

* name more symbols 2

* name more symbols 3

* more jp syncing

* mystery actor stuff

* rename the file and fix build errors
2025-08-06 12:12:32 +02:00

148 lines
4.9 KiB
C++

#pragma once
#include "Item/Item.hpp"
#include "System/SysNew.hpp"
#include "types.h"
#define IS_ITEM_RESTRICTED(restrictions, itemFlag) (((restrictions) & (1 << (itemFlag))) != 0)
struct UnkStruct_ov000_020afc48 {
/* 00 */ ItemId_s16 mItemId;
/* 02 */ unk16 mUnk_02;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0c */ unk32 mUnk_0c;
/* 10 */ char mUnk_10[16];
/* 20 */
};
class UnkStruct_ItemManager_20_14 {
public:
/* 00 (vtable) */
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
virtual void vfunc_00(); //! TODO: name symbol func_ov000_020667d8
virtual void vfunc_04(); //! TODO: name symbol func_ov000_020667f4
virtual void vfunc_08(); //! TODO: name symbol func_ov000_020673c8
virtual void vfunc_0c(); //! TODO: name symbol func_ov000_02067434
virtual void vfunc_10(); //! TODO: name symbol func_ov000_02067474
virtual void vfunc_14(); //! TODO: name symbol func_ov000_02066dfc
virtual void vfunc_18(); //! TODO: name symbol func_ov000_020669d8
virtual void vfunc_1c(); //! TODO: name symbol func_ov000_02067234
virtual void vfunc_20(); //! TODO: name symbol func_ov000_0206723c
virtual ~UnkStruct_ItemManager_20_14(); //! TODO: name symbols func_ov000_020672ac, func_ov000_020672f4
UnkStruct_ItemManager_20_14();
unk32 func_ov053_0213caf0();
};
class UnkStruct_ItemManager_20 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0c */ unk32 mUnk_0c;
/* 10 */ unk32 mUnk_10;
/* 14 */ UnkStruct_ItemManager_20_14 mUnk_14;
bool func_ov031_020db874(ItemFlag itemFlag);
void func_ov031_020db8cc();
bool func_ov031_020db8f8();
};
class ItemManager : public SysObject {
public:
/* 00 */ ItemFlag mEquippedItem;
/* 04 */ ItemFlag mForcedItem;
/* 08 */ u32 mUnk_08[2]; // inventory items bitfield & collection/equipment bitfield
/* 10 */ u16 mNumRupees;
/* 12 */ u16 mUnk_12; // "toggle bitfield"
/* 14 */ u16 mItemRestrictions; // bitfield
/* 16 */ u8 mTearsAmount; // number of tears of light
/* 17 */ u8 mKeyAmount; // number of small keys
/* 18 */ UpgradeCapacity mQuiverCapacity;
/* 19 */ UpgradeCapacity mBombBagCapacity;
/* 1a */ u8 mArrowAmount;
/* 1b */ u8 mBombAmount;
/* 1c */ u8 mPotions[MAX_POTIONS];
/* 1e */ unk16 mUnk_1e;
/* 20 */ UnkStruct_ItemManager_20 *mUnk_20;
/* 24 */ unk8 mUnk_24;
/* 24 */ unk8 mUnk_25;
/* 24 */ unk8 mUnk_26;
/* 24 */ unk8 mUnk_27;
/* 28 */
ItemManager();
~ItemManager();
void func_ov000_020a863c(ItemFlag itemFlag);
void func_ov000_020a865c(ItemFlag itemFlag);
bool func_ov000_020a8680();
unk32 func_ov000_020a86a4();
u32 func_ov000_020a86d0(ItemFlag itemFlag);
u8 func_ov000_020a8728();
u8 func_ov000_020a8748();
void GiveRupees(s32 amount, bool param2, bool param3);
void func_ov000_020a87c8(s32 amount);
void func_ov000_020a87ec(s32 amount);
void func_ov000_020a8820(s32 amount);
bool func_ov000_020a8854();
void func_ov000_020a888c(PotionType type);
bool func_ov000_020a88c8();
bool func_ov000_020a88f4();
void func_ov000_020a8920();
bool func_ov000_020a8948();
static UnkStruct_ov000_020afc48 *func_ov000_020a8974(ItemFlag itemFlag);
static ItemFlag func_ov000_020a8984(ItemId itemId);
void func_ov000_020a89bc();
bool func_ov000_020a89d4();
bool func_ov000_020a8a0c();
void func_ov000_020a8a5c();
bool func_ov000_020a8a74();
unk32 func_ov000_020a8a90();
unk32 func_ov000_020a8aa4();
unk32 func_ov000_020a8ab8();
unk32 func_ov000_020a8acc();
void func_ov000_020a8ae0();
bool func_ov110_02184a40(ItemId itemId);
static ItemId func_ov110_02185da4(ItemId itemId);
static ItemFlag func_ov110_02185db4(ItemId itemId);
};
class TreasureManager : public ItemManager {
public:
/* 28 */ unk8 mUnk_28[0x3C - 0x28];
/* 3c */ s16 mUnk_3c[TreasureType_Max]; // treasures
/* 5c */
TreasureManager();
~TreasureManager();
void func_ov000_020a9b10();
void func_ov000_020a9b2c();
void func_ov000_020a9b3c();
void func_ov000_020a9b4c();
bool func_ov000_020a9c4c(TreasureType type);
bool func_ov000_020a9c64();
unk32 func_ov000_020a9c90(TreasureType type);
bool func_ov000_020a9ca4(TreasureType type);
void func_ov000_020a9cbc(TreasureType type, s32 amount);
static unk32 func_ov000_020a9d78(unk32 param1);
static unk32 func_ov000_020a9e14(unk32 param1);
static unk32 func_ov000_020a9eb0(unk32 param1);
static unk32 func_ov000_020a9f4c(unk32 param1);
ItemId func_ov000_020aa02c(ItemId itemId);
void func_ov000_020aa0ac(ItemId itemId);
void func_ov000_020aa200();
void func_ov000_020aa210();
};
extern TreasureManager *data_ov000_020b6510;
extern UnkStruct_ov000_020afc48 data_ov000_020afc48[ItemFlag_EQUIP_COUNT];
extern const u8 gQuiverCapacities[UpgradeCapacity_Max];
extern const u8 gBombBagCapacities[UpgradeCapacity_Max];