summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2026-09-13 10:18:31 +0200
committerrobojumper <robojumper@gmail.com>2026-10-04 00:15:18 +0200
commit98020cc73e47c7df5f1c6fda07561ce884d1069b (patch)
treee6c6525039be69da0605df8c8d8b392547a3b6fa /include
parent98aba2c59b9bcd261d98cd8843bc40ae0b2d6877 (diff)
Fish
Diffstat (limited to 'include')
-rw-r--r--include/d/a/d_a_fish.h13
-rw-r--r--include/d/a/d_a_fish_base.h161
-rw-r--r--include/d/a/d_a_fish_mgr.h4
-rw-r--r--include/d/a/d_a_fish_mgr_base.h53
4 files changed, 227 insertions, 4 deletions
diff --git a/include/d/a/d_a_fish.h b/include/d/a/d_a_fish.h
index cfaceb5f..8d3b5f00 100644
--- a/include/d/a/d_a_fish.h
+++ b/include/d/a/d_a_fish.h
@@ -1,13 +1,22 @@
#ifndef D_A_FISH_H
#define D_A_FISH_H
-#include "d/a/obj/d_a_obj_base.h"
+#include "d/a/d_a_fish_base.h"
-class dAcFish_c : public dAcObjBase_c {
+class dAcFish_c : public dAcFishBase_c {
public:
dAcFish_c() {}
virtual ~dAcFish_c() {}
+ virtual const char *getResFileName() override;
+ virtual const char *getMdlName() override;
+ virtual const char *getAnmName() override;
+ virtual UNKWORD vt_0xB0() override;
+ virtual f32 vt_0xB8() override;
+ virtual f32 vt_0xBC() override;
+ virtual void vt_0xC4() override;
+ virtual void vt_0xC8() override;
+
private:
};
diff --git a/include/d/a/d_a_fish_base.h b/include/d/a/d_a_fish_base.h
new file mode 100644
index 00000000..bb55c0ea
--- /dev/null
+++ b/include/d/a/d_a_fish_base.h
@@ -0,0 +1,161 @@
+#ifndef D_A_FISH_BASE_H
+#define D_A_FISH_BASE_H
+
+#include "d/a/obj/d_a_obj_base.h"
+#include "d/col/bg/d_bg_s_acch.h"
+#include "d/col/cc/d_cc_d.h"
+#include "d/d_shadow.h"
+#include "m/m3d/m_anmmdl.h"
+#include "s/s_State.hpp"
+
+class dAcFishMgrBase_c;
+
+class dAcFishBase_c : public dAcObjBase_c {
+public:
+ dAcFishBase_c() : mStateMgr(*this) {}
+ virtual ~dAcFishBase_c() {}
+
+ virtual bool createHeap() override;
+ virtual int create() override;
+ virtual int actorExecute() override;
+ virtual int doDelete() override;
+ virtual int draw() override;
+
+protected:
+ /* vt 0x80 */ virtual const char *getResFileName() = 0;
+ /* vt 0x84 */ virtual const char *getMdlName() = 0;
+ /* vt 0x88 */ virtual const char *getAnmName() = 0;
+ /* vt 0x8C */ virtual void vt_0x8C();
+ /* vt 0x90-0x9C */ STATE_VIRTUAL_FUNC_DECLARE(dAcFishBase_c, Swim);
+ /* vt 0x9C-0xA4 */ STATE_VIRTUAL_FUNC_DECLARE(dAcFishBase_c, Escape);
+ /* vt 0xA8 */ virtual void vt_0xA8() {}
+ /* vt 0xAC */ virtual void vt_0xAC() {}
+ /* vt 0xB0 */ virtual UNKWORD vt_0xB0() = 0;
+ /* vt 0xB4 */ virtual void vt_0xB4();
+ /* vt 0xB8 */ virtual f32 vt_0xB8() = 0;
+ /* vt 0xBC */ virtual f32 vt_0xBC() = 0;
+ /* vt 0xC0 */ virtual s16 vt_0xC0() const {
+ return 100;
+ }
+ /* vt 0xC4 */ virtual void vt_0xC4() = 0;
+ /* vt 0xC8 */ virtual void vt_0xC8() = 0;
+ /* vt 0xCC */ virtual f32 vt_0xCC() const {
+ return 0.1f;
+ }
+ /* vt 0xD0 */ virtual f32 vt_0xD0() {
+ return 2.0f;
+ }
+ /* vt 0xD4 */ virtual f32 vt_0xD4() const {
+ return 200.0f;
+ }
+ /* vt 0xD8 */ virtual f32 vt_0xD8() const {
+ return 3.0f;
+ }
+ /* vt 0xDC */ virtual f32 vt_0xDC() const {
+ return 5.0f;
+ }
+ /* vt 0xE0 */ virtual s32 vt_0xE0() const {
+ return 90;
+ }
+ /* vt 0xE4 */ virtual s32 vt_0xE4() const {
+ return 180;
+ }
+ /* vt 0xE8 */ virtual s16 vt_0xE8() const {
+ return 15;
+ }
+ /* vt 0xEC */ virtual f32 vt_0xEC() const {
+ return 300.0f;
+ }
+ /* vt 0xF0 */ virtual f32 vt_0xF0() const {
+ return 100.0f;
+ }
+ /* vt 0xF4 */ virtual s32 vt_0xF4() const {
+ return 30;
+ }
+ /* vt 0xF8 */ virtual s32 vt_0xF8() const {
+ return 45;
+ }
+ /* vt 0xFC */ virtual f32 vt_0xFC() const {
+ return 200.0f;
+ }
+ /* vt 0x100 */ virtual f32 vt_0x100() const {
+ return 400.0f;
+ }
+ /* vt 0x104 */ virtual f32 vt_0x104() const {
+ return 15.0f;
+ }
+ /* vt 0x108 */ virtual f32 vt_0x108() const {
+ return 20.0f;
+ }
+ /* vt 0x10C */ virtual s32 vt_0x10C() const {
+ return 30;
+ }
+ /* vt 0x110 */ virtual s32 vt_0x110() const {
+ return 60;
+ }
+ /* vt 0x114 */ virtual s32 vt_0x114() const {
+ return 10;
+ }
+ /* vt 0x118 */ virtual s32 vt_0x118() const {
+ return 20;
+ }
+ /* vt 0x11C */ virtual s16 vt_0x11C() const {
+ return 15;
+ }
+ /* vt 0x120 */ virtual f32 vt_0x120() const {
+ return 500.0f;
+ }
+ /* vt 0x124 */ virtual f32 vt_0x124() const {
+ return 300.0f;
+ }
+
+ dAcFishMgrBase_c *getFishMgr();
+ // TODO - unknown callback signature for 0x8018c1c0
+ void fn_8018C240();
+ void fn_8018C250();
+ void fn_8018C5A0();
+ void fn_8018C760();
+ void fn_8018C870();
+ void fn_8018CCA0();
+ bool fn_8018CFC0(f32 arg);
+ bool fn_8018D0D0(f32 arg);
+ void fn_8018D190(f32 arg, f32 unused);
+ void fn_8018D4D0();
+ void fn_8018D5A0();
+ bool fn_8018D600();
+ void fn_8018D660();
+ void fn_8018D6E0();
+ void fn_8018D730();
+ void fn_8018D760();
+
+ /* 0x330 */ m3d::mdlAnmChr mMdl;
+ /* 0x398 */ dShadowCircle_c mShadow;
+ /* 0x3A0 */ dBgS_AcchCir mAcch;
+ /* 0x3FC */ dBgS_ObjAcch mObjAcch;
+ /* 0x7AC */ dCcD_Sph mSph1;
+ /* 0x8FC */ dCcD_Sph mSph2;
+ /* 0xA4C */ mVec3_c field_0xA4C;
+ /* 0xA58 */ u8 field_0xA58;
+
+ /* 0xA59 */ u8 _0xA59[0xA60 - 0xA59];
+
+ /* 0xA60 */ mVec3_c field_0xA60;
+ /* 0xA6C */ mVec3_c field_0xA6C;
+ /* 0xA78 */ u8 field_0xA78;
+ /* 0xA79 */ u8 field_0xA79;
+ /* 0xA7A */ u8 field_0xA7A;
+ /* 0xA7C */ s16 field_0xA7C;
+ /* 0xA7E */ s16 field_0xA7E;
+ /* 0xA80 */ s16 field_0xA80;
+ /* 0xA82 */ s16 field_0xA82;
+ /* 0xA84 */ s16 field_0xA84;
+ /* 0xA86 */ s16 field_0xA86;
+ /* 0xA88 */ s16 field_0xA88;
+ /* 0xA8A */ s16 field_0xA8A;
+ /* 0xA86 */ s16 field_0xA8C;
+ /* 0xA90 */ f32 field_0xA90;
+ /* 0xA94 */ f32 field_0xA94;
+ /* 0xA98 */ STATE_MGR_DECLARE(dAcFishBase_c);
+};
+
+#endif
diff --git a/include/d/a/d_a_fish_mgr.h b/include/d/a/d_a_fish_mgr.h
index 1cdd1d34..e1fb6f4c 100644
--- a/include/d/a/d_a_fish_mgr.h
+++ b/include/d/a/d_a_fish_mgr.h
@@ -1,9 +1,9 @@
#ifndef D_A_FISH_MGR_H
#define D_A_FISH_MGR_H
-#include "d/a/d_a_base.h"
+#include "d/a/d_a_fish_mgr_base.h"
-class dAcFishMgr_c : public dAcBase_c {
+class dAcFishMgr_c : public dAcFishMgrBase_c {
public:
dAcFishMgr_c() {}
virtual ~dAcFishMgr_c() {}
diff --git a/include/d/a/d_a_fish_mgr_base.h b/include/d/a/d_a_fish_mgr_base.h
new file mode 100644
index 00000000..39abbde4
--- /dev/null
+++ b/include/d/a/d_a_fish_mgr_base.h
@@ -0,0 +1,53 @@
+#ifndef D_A_FISH_MGR_BASE_H
+#define D_A_FISH_MGR_BASE_H
+
+#include "d/t/d_tg.h"
+#include "d/a/d_a_fish_base.h"
+#include "s/s_State.hpp"
+
+// Not sure if dTg_c is the right parent class but there is one parent before dAcBase_c without extra data
+class dAcFishMgrBase_c : public dTg_c {
+public:
+ dAcFishMgrBase_c() : mStateMgr(*this) {}
+ virtual ~dAcFishMgrBase_c() {}
+
+ virtual int actorCreate() override;
+ virtual int actorPostCreate() override;
+ virtual int doDelete() override;
+ virtual int draw() override;
+
+ dAcFishBase_c *getFish() {
+ return mRef.get();
+ }
+
+ f32 getField_0x144() const {
+ return field_0x144;
+ }
+
+ f32 getField_0x148() const {
+ return field_0x148;
+ }
+
+ f32 getField_0x14C() const {
+ return field_0x14C;
+ }
+
+ bool getField_0x151() const {
+ return field_0x151;
+ }
+
+protected:
+ STATE_VIRTUAL_FUNC_DECLARE(dAcFishMgrBase_c, Wait);
+ virtual bool vt_0x80();
+
+private:
+ /* 0x0FC */ STATE_MGR_DECLARE(dAcFishMgrBase_c);
+ /* 0x138 */ dAcRef_c<dAcFishBase_c> mRef;
+ /* 0x144 */ f32 field_0x144;
+ /* 0x148 */ f32 field_0x148;
+ /* 0x14C */ f32 field_0x14C;
+ /* 0x150 */ bool field_0x150;
+ /* 0x151 */ bool field_0x151;
+};
+
+#endif