From e5d545a7da96b68cab00c17ba7d8a32bc6cb016c Mon Sep 17 00:00:00 2001 From: Aetias Date: Wed, 20 Dec 2023 10:43:07 +0100 Subject: [PATCH] Add `EquipItem` virtual class and descendants --- include/Player/EquipBomb.hpp | 30 +++++++++++++++++++++ include/Player/EquipBombchu.hpp | 43 +++++++++++++++++++++++++++++++ include/Player/EquipBoomerang.hpp | 32 +++++++++++++++++++++++ include/Player/EquipBow.hpp | 29 +++++++++++++++++++++ include/Player/EquipHammer.hpp | 38 +++++++++++++++++++++++++++ include/Player/EquipItem.hpp | 39 ++++++++++++++++++++++++++++ include/Player/EquipRope.hpp | 39 ++++++++++++++++++++++++++++ include/Player/EquipShovel.hpp | 23 +++++++++++++++++ 8 files changed, 273 insertions(+) create mode 100644 include/Player/EquipBomb.hpp create mode 100644 include/Player/EquipBombchu.hpp create mode 100644 include/Player/EquipBoomerang.hpp create mode 100644 include/Player/EquipBow.hpp create mode 100644 include/Player/EquipHammer.hpp create mode 100644 include/Player/EquipItem.hpp create mode 100644 include/Player/EquipRope.hpp create mode 100644 include/Player/EquipShovel.hpp diff --git a/include/Player/EquipBomb.hpp b/include/Player/EquipBomb.hpp new file mode 100644 index 00000000..0e9e54db --- /dev/null +++ b/include/Player/EquipBomb.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include "types.h" +#include "Player/EquipItem.hpp" + +class EquipBomb : public EquipItem { +private: + /* 00 (base) */ + /* 09 */ u8 mUnk_09[3]; + /* 0c */ u32 mUnk_0c; + /* 10 */ u8 mUnk_10[0x14]; + /* 24 */ u32 mUnk_24; + /* 28 */ + +public: + EquipBomb(); + + /* 00 */ virtual void vfunc_00(u32 param1, u32 param2, u32 param3) override; // func_ov55_02198d00 + /* 04 */ virtual EquipItem* vfunc_04() override; // func_ov14_213d214 + /* 08 */ virtual ~EquipBomb() override; + /* 0c */ virtual u32 GetId() const override; + + /* 14 */ virtual bool IsUsable(u32 param1, u32 param2) const override; + /* 18 */ virtual void vfunc_18() override; // func_ov55_02198d8c + + /* 30 */ virtual void vfunc_30() override; // func_ov55_02198da4 + /* 38 */ virtual void vfunc_38(u32 param1, u32 param2, u32 param3) override; // func_ov55_2198df8 + /* 50 */ virtual void vfunc_50(); // func_ov14_0213d228 + /* 54 */ +}; diff --git a/include/Player/EquipBombchu.hpp b/include/Player/EquipBombchu.hpp new file mode 100644 index 00000000..dd414d02 --- /dev/null +++ b/include/Player/EquipBombchu.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include "types.h" +#include "Player/EquipItem.hpp" + +class EquipBombchu : public EquipItem { +private: + /* 00 (base) */ + /* 09 */ u8 mUnk_09[3]; + /* 0c */ u8 mUnk_0c[0x0c]; + /* 18 */ u32 mUnk_18; + /* 1c */ void *mUnk_1c; + /* 20 */ void *mUnk_20; + /* 24 */ u32 mUnk_24; + /* 28 */ u32 mUnk_28; + /* 2c */ void *mUnk_2c; + /* 30 */ u32 mUnk_30; + /* 34 */ u32 mUnk_34; + /* 38 */ u8 mUnk_38[0xc]; + /* 44 */ u16 mUnk_44; + /* 46 */ u8 mUnk_46; + /* 47 */ char mUnk_47; + /* 48 */ bool mUnk_48; + /* 49 */ + +public: + EquipBombchu(); + + /* 00 */ virtual void vfunc_00(u32 param1, u32 param2, u32 param3) override; // func_ov58_02198fc0 + /* 04 */ virtual EquipItem* vfunc_04() override; // func_ov14_0213eb5c + /* 08 */ virtual ~EquipBombchu() override; + /* 0c */ virtual u32 GetId() const override; + + bool CheckUsable(u32 param1) const; + /* 14 */ virtual bool IsUsable(u32 param1, u32 param2) const override; + /* 18 */ virtual void vfunc_18() override; // func_ov58_0219903c + /* 1c */ virtual void vfunc_1c() override; // func_ov58_02199060 + + /* 30 */ virtual void vfunc_30() override; // func_ov58_0219906c + /* 34 */ virtual void vfunc_34(u16 *param1) override; // func_ov58_0213ecb4 + /* 38 */ virtual void vfunc_38(u32 param1, u32 param2, u32 param3) override; // func_ov58_02199170 + /* 50 */ +}; diff --git a/include/Player/EquipBoomerang.hpp b/include/Player/EquipBoomerang.hpp new file mode 100644 index 00000000..6e2d8eb1 --- /dev/null +++ b/include/Player/EquipBoomerang.hpp @@ -0,0 +1,32 @@ +#pragma once + +#include "types.h" +#include "Player/EquipItem.hpp" + +class EquipBoomerang : public EquipItem { +private: + /* 00 (base) */ + /* 09 */ u8 mUnk_09[3]; + /* 0c */ void *mUnk_0c; + /* 10 */ u32 mUnk_10; + /* 14 */ u8 mUnk_18[8]; + /* 20 */ u32 mUnk_20; + /* 24 */ u32 mUnk_24; + /* 28 */ u32 mUnk_28; + /* 2c */ u16 mUnk_2c; + /* 2e */ + +public: + /* 04 */ virtual EquipItem* vfunc_04() override; // func_ov14_213d010 + /* 08 */ virtual ~EquipBoomerang() override; + /* 0c */ virtual u32 GetId() const override; + /* 10 */ virtual void vfunc_10() override; // func_ov14_0213d078 + + /* 14 */ virtual bool IsUsable(u32 param1, u32 param2) const override; + /* 18 */ virtual void vfunc_18() override; // func_ov53_02199064 + /* 1c */ virtual void vfunc_1c() override; // func_ov53_021990d0 + + /* 30 */ virtual void vfunc_30() override; // func_ov53_0219913c + /* 38 */ virtual void vfunc_38(u32 param1, u32 param2, u32 param3) override; // func_ov53_02199318 + /* 50 */ +}; diff --git a/include/Player/EquipBow.hpp b/include/Player/EquipBow.hpp new file mode 100644 index 00000000..97e68a0c --- /dev/null +++ b/include/Player/EquipBow.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include "types.h" +#include "Player/EquipItem.hpp" + +class EquipBow : public EquipItem { +private: + /* 0 (base) */ + /* 9 */ u8 mUnk_9; + /* a */ u8 mUnk_a; + /* b */ u8 mUnk_b; + /* c */ u8 mUnk_c; + /* d */ + +public: + EquipBow(); + + /* 00 */ virtual void vfunc_00(u32 param1, u32 param2, u32 param3) override; // func_ov56_02198d00 + /* 04 */ virtual EquipItem* vfunc_04() override; // func_ov14_0213ead4 + /* 08 */ virtual ~EquipBow() override; + /* 0c */ virtual u32 GetId() const override; + + /* 14 */ virtual bool IsUsable(u32 param1, u32 param2) const override; + /* 18 */ virtual void vfunc_18() override; // func_ov56_02198d84 + + /* 30 */ virtual void vfunc_30() override; // func_ov56_02198de4 + /* 38 */ virtual void vfunc_38(u32 param1, u32 param2, u32 param3) override; // func_ov56_02198df8 + /* 50 */ +}; diff --git a/include/Player/EquipHammer.hpp b/include/Player/EquipHammer.hpp new file mode 100644 index 00000000..19ae4c06 --- /dev/null +++ b/include/Player/EquipHammer.hpp @@ -0,0 +1,38 @@ +#pragma once + +#include "types.h" +#include "Player/EquipItem.hpp" + +class EquipHammer : public EquipItem { +private: + /* 00 (base) */ + /* 09 */ u8 mUnk_09[3]; + /* 0c */ u8 mUnk_0c[0xc]; + /* 18 */ u32 mUnk_18; + /* 1c */ u8 mUnk_1c; + /* 1d */ u8 mUnk_1d; + /* 1e */ u8 mUnk_1e[2]; + /* 20 */ u32 mUnk_20; + /* 24 */ void *mUnk_24; + /* 28 */ u32 mUnk_28; + /* 2c */ + +public: + EquipHammer(); + + /* 04 */ virtual EquipItem* vfunc_04() override; // func_ov14_0213ede4 + /* 08 */ virtual ~EquipHammer() override; + /* 0c */ virtual u32 GetId() const override; + /* 10 */ virtual void vfunc_10() override; // func_ov14_0213ee04 + + /* 14 */ virtual bool IsUsable(u32 param1, u32 param2) const override; + /* 18 */ virtual void vfunc_18() override; // func_ov59_02198e3c + /* 1c */ virtual void vfunc_1c() override; // func_ov59_02198e58 + + /* 2c */ virtual u32 vfunc_2c() override; // func_ov59_02198fcc + /* 30 */ virtual void vfunc_30() override; // func_ov59_02198e6c + /* 38 */ virtual void vfunc_38(u32 param1, u32 param2, u32 param3) override; // func_0v59_02198fc8 + /* 3c */ virtual void vfunc_3c(void *param1) const override; // func_ov14_0213ee10 + /* 4c */ virtual u32 vfunc_4c() const override; // func_ov14_0213eea8 + /* 50 */ +}; diff --git a/include/Player/EquipItem.hpp b/include/Player/EquipItem.hpp new file mode 100644 index 00000000..7ee3d729 --- /dev/null +++ b/include/Player/EquipItem.hpp @@ -0,0 +1,39 @@ +#pragma once + +#include "types.h" + +class EquipItem { +private: + /* 0 (vtable) */ + /* 4 */ u16 mUnk_00; + /* 6 */ u16 mUnk_04; + /* 8 */ bool mInUse; + +public: + EquipItem(); + + /* 00 */ virtual void vfunc_00(u32 param1, u32 param2, u32 param3); // func_ov00_020be8dc + /* 04 */ virtual EquipItem* vfunc_04(); // func_ov04_0210ba74 + /* 08 */ virtual ~EquipItem(); + /* 0c */ virtual u32 GetId() const = 0; + /* 10 */ virtual void vfunc_10(); // func_ov04_0210ba88 + + u16 GetAmmo(); + /* 14 */ virtual bool IsUsable(u32 param1, u32 param2) const; + /* 18 */ virtual void vfunc_18() = 0; + /* 1c */ virtual void vfunc_1c(); // func_ov00_020be8e0 + /* 20 */ virtual void GiveAmmo(u32 amount); + + /* 24 */ virtual bool IsInUse() const; + /* 28 */ virtual bool UpdateInUse(u32 param1); + /* 2c */ virtual u32 vfunc_2c(); // func_ov00_020be964 + /* 30 */ virtual void vfunc_30() = 0; + /* 34 */ virtual void vfunc_34(u16 *param1); // func_ov00_020be96c + /* 38 */ virtual void vfunc_38(u32 param1, u32 param2, u32 param3) = 0; + /* 3c */ virtual void vfunc_3c(void *param1) const; // func_ov00_020beb90 + /* 40 */ virtual u32 vfunc_40() const; // func_ov00_020be970 + /* 44 */ virtual u32 vfunc_44(u32 param1) const; // func_ov00_020be978 + /* 48 */ virtual u32 vfunc_48(u32 param1) const; // func_ov00_020be980 + /* 4c */ virtual u32 vfunc_4c() const; // func_ov00_020be988 + /* 50 */ +}; diff --git a/include/Player/EquipRope.hpp b/include/Player/EquipRope.hpp new file mode 100644 index 00000000..9d236a62 --- /dev/null +++ b/include/Player/EquipRope.hpp @@ -0,0 +1,39 @@ +#pragma once + +#include "types.h" +#include "Player/EquipItem.hpp" + +class EquipRope : public EquipItem { +private: + /* 00 (base) */ + /* 09 */ u8 mUnk_09; + /* 0a */ u16 mUnk_0a; + /* 0c */ u8 mUnk_0c[4]; + /* 10 */ u32 mUnk_10; + /* 14 */ u32 mUnk_14; + /* 18 */ u8 mUnk_18[0x54]; + /* 6c */ u16 mUnk_6c; + /* 6e */ u8 mUnk_6e[2]; + /* 70 */ u16 mUnk_70; + /* 72 */ u8 mUnk_72[0x12]; + /* 84 */ void *mUnk_84; + /* 88 */ u8 mUnk_88[0x18]; + /* a0 */ u32 mUnk_a0; + +public: + EquipRope(); + + /* 04 */ virtual EquipItem* vfunc_04() override; // func_ov14_0213d314 + /* 08 */ virtual ~EquipRope() override; + /* 0c */ virtual u32 GetId() const override; + /* 10 */ virtual void vfunc_10() override; // func_ov14_0213d3a0 + + u16 GetAmmo(); + /* 14 */ virtual bool IsUsable(u32 param1, u32 param2) const override; + /* 18 */ virtual void vfunc_18() override; // func_ov57_021992f4 + /* 1c */ virtual void vfunc_1c() override; // func_ov57_0219935c + + /* 30 */ virtual void vfunc_30() override; // func_ov57_02199744 + /* 38 */ virtual void vfunc_38(u32 param1, u32 param2, u32 param3) override; // func_ov57_021998f0 + /* 50 */ +}; diff --git a/include/Player/EquipShovel.hpp b/include/Player/EquipShovel.hpp new file mode 100644 index 00000000..455da9a8 --- /dev/null +++ b/include/Player/EquipShovel.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include "types.h" +#include "Player/EquipItem.hpp" + +class EquipShovel : public EquipItem { +public: + /* 00 */ virtual void vfunc_00(u32 param1, u32 param2, u32 param3) override; // func_ov54_02198d00 + /* 04 */ virtual EquipItem* vfunc_04() override; // func_ov14_0213cf9c + /* 08 */ virtual ~EquipShovel() override; + /* 0c */ virtual u32 GetId() const override; + + /* 14 */ virtual bool IsUsable(u32 param1, u32 param2) const override; + /* 18 */ virtual void vfunc_18() override; // func_0v54_02198d2c + + /* 30 */ virtual void vfunc_30() override; // func_ov54_02198e04 + /* 38 */ virtual void vfunc_38(u32 param1, u32 param2, u32 param3) override; // func_ov54_02198e4c + /* 40 */ virtual u32 vfunc_40() const override; // func_ov54_02198d30 + /* 44 */ virtual u32 vfunc_44(u32 param1) const override; // func_ov54_02198d38 + /* 48 */ virtual u32 vfunc_48(u32 param1) const override; // func_ov54_02198d48 + /* 50 */ +}; +