summaryrefslogtreecommitdiff
path: root/include/Player
diff options
context:
space:
mode:
authorAetias <144526980+AetiasHax@users.noreply.github.com>2025-11-16 17:14:48 +0100
committerGitHub <noreply@github.com>2025-11-16 17:14:48 +0100
commitfc691f4c8f76d11d6b47149fefadaca4470ab2a1 (patch)
treefe987a191d96ca71ce32776be09a57408f491050 /include/Player
parent5b15874c4d2d7c185c98f2791cf8fa6a9d86a440 (diff)
LinkStateInteract (#135)
* Map symbol in Game * LinkStateInteract 19% * DebugHierarchy -> Bhio * LinkStateInteract 89% * LinkStateInteract 93% * Japanese strings * Fix build * Fix regression * Fix regressions * Rename BhioBase.cpp
Diffstat (limited to 'include/Player')
-rw-r--r--include/Player/Bhio.hpp70
-rw-r--r--include/Player/LinkStateBase.hpp14
-rw-r--r--include/Player/LinkStateCutscene.hpp2
-rw-r--r--include/Player/LinkStateDamage.hpp2
-rw-r--r--include/Player/LinkStateInteract.hpp18
-rw-r--r--include/Player/LinkStateMove.hpp2
-rw-r--r--include/Player/LinkStateRoll.hpp2
-rw-r--r--include/Player/PlayerControl.hpp4
-rw-r--r--include/Player/PlayerLinkBase.hpp8
9 files changed, 98 insertions, 24 deletions
diff --git a/include/Player/Bhio.hpp b/include/Player/Bhio.hpp
new file mode 100644
index 00000000..ee39c7fd
--- /dev/null
+++ b/include/Player/Bhio.hpp
@@ -0,0 +1,70 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "System/SysNew.hpp"
+
+#define BHIO_GROUP_MAGIC 'HFND'
+
+struct BhioField {
+ /* 00 */ char mName[0xc];
+ /* 0c */ s32 mValue;
+ /* 10 */
+};
+
+struct BhioGroup {
+ /* 00 */ u32 mMagic;
+ /* 04 */ u32 mUnk_04;
+ /* 08 */ u32 mUnk_08;
+ /* 0c */ u32 mUnk_0c;
+ /* 10 */ u32 mGroupId;
+ /* 14 */ u32 mNumFields;
+ /* 18 */ unk8 mUnk_18[0x8];
+ /* 20 */ BhioField mFields[];
+};
+
+class BhioBase : public SysObject {
+public:
+ /* 00 (vtable) */
+ /* 04 */ void *mNodes;
+ /* 08 */
+
+ /* 00 */ virtual ~BhioBase();
+ /* 08 */ virtual void vfunc_08();
+ /* 0c */ virtual void vfunc_0c();
+ /* 10 */ virtual void vfunc_10();
+ /* 14 */ virtual void vfunc_14();
+ /* 18 */ virtual void vfunc_18();
+ /* 1c */ virtual void vfunc_1c();
+ /* 20 */ virtual void vfunc_20(unk32 param1, const char *param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6);
+ /* 24 */ virtual void vfunc_24();
+ /* 28 */ virtual void vfunc_28();
+ /* 2c */ virtual void vfunc_2c();
+ /* 30 */ virtual void vfunc_30();
+ /* 34 */ virtual bool GetField(bool param1, const char *fieldName, u32 groupId, s32 *pValue, unk32 param5, unk32 param6,
+ unk32 param7, unk32 param8);
+ /* 38 */ virtual void vfunc_38();
+ /* 3c */ virtual void vfunc_3c(u32 groupId, s32 *pValue);
+ /* 40 */
+
+ BhioBase();
+ BhioGroup *FindGroup(u32 id);
+
+ inline bool GetField2(bool param1, u32 groupId, const char *fieldName, s32 *pValue, unk32 param5, unk32 param6,
+ unk32 param7) {
+ if (param1) {
+ this->vfunc_3c(groupId, pValue);
+ }
+ return this->GetField(param1, fieldName, groupId, pValue, param5, param6, param7, 0);
+ }
+};
+
+class Bhio : public BhioBase {
+public:
+ /* 00 (base) */
+ /* 08 */
+
+ /* 00 */ virtual ~Bhio() override;
+ /* 40 */
+};
diff --git a/include/Player/LinkStateBase.hpp b/include/Player/LinkStateBase.hpp
index 781d0fca..75490f47 100644
--- a/include/Player/LinkStateBase.hpp
+++ b/include/Player/LinkStateBase.hpp
@@ -7,7 +7,7 @@
#include "Actor/Actor.hpp"
#include "Actor/ActorManager.hpp"
#include "DTCM/UnkStruct_027e0fd4.hpp"
-#include "Debug/DebugHierarchy.hpp"
+#include "Player/Bhio.hpp"
#include "Player/EquipItem.hpp"
#include "Player/PlayerControlData.hpp"
#include "Player/PlayerLinkBase.hpp"
@@ -43,7 +43,7 @@ public:
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual ~LinkStateBase();
/* 0c */ virtual LinkStateId GetId() = 0;
- /* 10 */ virtual void CreateDebugHierarchy();
+ /* 10 */ virtual void LoadBhio();
/* 14 */ virtual void OnStateEnter();
/* 18 */ virtual void OnStateLeave(s32 param1);
/* 1c */ virtual void vfunc_1c();
@@ -64,7 +64,7 @@ public:
void ChangeLinkSubState(LinkStateId id, s32 subState);
void EquipItem_vfunc_28();
void UpdateSwordShieldInUse();
- void func_ov00_020a81b8(unk32 param1, unk32 param2);
+ void func_ov00_020a81b8(unk32 param1, Vec3p *param2);
LinkStateItem *GetLinkItemState();
void LookAt(Vec3p *target);
void func_ov00_020a81fc(Vec3p *param1, unk32 param2);
@@ -116,13 +116,13 @@ public:
Vec3p *GetPlayerPos();
Vec3p *GetPlayerVel();
unk8 *func_ov00_020a8c64();
- s16 *GetPlayerAngle();
+ u16 *GetPlayerAngle();
void *GetPlayer_Unk18();
s32 Get_PlayerControlData_Unk32();
Actor *GetGrabActor();
ActorRef *GetGrabActorRef();
unk32 Grab();
- s32 Get_PlayerLinkBase_Unk44();
+ s32 *Get_PlayerLinkBase_Unk44();
bool IsEquipBeingUsed(ItemFlag id);
EquipItem *GetEquipItem(ItemFlag id);
UnkStruct_027e0fd4 *func_ov00_020a8d40();
@@ -132,8 +132,8 @@ public:
unk32 Get_PlayerControlData_Unk100();
unk32 Get_PlayerControlData_Unk120();
s32 Get_PlayerLinkBase_Unk38();
- DebugHierarchy *GetDebugHierarchy0();
- DebugHierarchy *GetDebugHierarchy1();
+ Bhio *GetBhio0();
+ Bhio *GetBhio1();
LinkStateBase(PlayerLinkBase *link);
diff --git a/include/Player/LinkStateCutscene.hpp b/include/Player/LinkStateCutscene.hpp
index 750f1b8a..9dae13d8 100644
--- a/include/Player/LinkStateCutscene.hpp
+++ b/include/Player/LinkStateCutscene.hpp
@@ -62,7 +62,7 @@ public:
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~LinkStateCutscene() override;
/* 0c */ virtual LinkStateId GetId() override;
- /* 10 */ virtual void CreateDebugHierarchy() override;
+ /* 10 */ virtual void LoadBhio() override;
/* 14 */ virtual void OnStateEnter() override;
/* 18 */ virtual void OnStateLeave(s32 param1) override;
/* 1c */ virtual void vfunc_1c() override;
diff --git a/include/Player/LinkStateDamage.hpp b/include/Player/LinkStateDamage.hpp
index f58de710..1a8b143a 100644
--- a/include/Player/LinkStateDamage.hpp
+++ b/include/Player/LinkStateDamage.hpp
@@ -43,7 +43,7 @@ public:
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~LinkStateDamage() override;
/* 0c */ virtual LinkStateId GetId() override;
- /* 10 */ virtual void CreateDebugHierarchy() override;
+ /* 10 */ virtual void LoadBhio() override;
/* 14 */ virtual void OnStateEnter() override;
/* 18 */ virtual void OnStateLeave(s32 param1) override;
/* 1c */ virtual void vfunc_1c() override;
diff --git a/include/Player/LinkStateInteract.hpp b/include/Player/LinkStateInteract.hpp
index 6151585b..db22bef9 100644
--- a/include/Player/LinkStateInteract.hpp
+++ b/include/Player/LinkStateInteract.hpp
@@ -8,22 +8,26 @@
#include "Actor/ActorManager.hpp"
#include "Player/LinkStateBase.hpp"
#include "Player/LinkStateRoll.hpp"
+#include "Unknown/UnkStruct_02035064.hpp"
class LinkStateInteract : public LinkStateBase {
public:
/* 00 (base) */
- /* 0c */ void *mUnk_0c;
+ /* 0c */ unk32 mUnk_0c;
/* 10 */ ActorRef mGrabRef;
/* 18 */ Vec3p mThrowOffset;
- /* 24 */ unk8 mUnk_24[0x88]; // non-documented struct
+ /* 24 */ UnkStruct_02035064 mUnk_24;
/* ac */ unk32 mUnk_ac;
- /* b0 */ unk8 mUnk_b0[4];
+ /* b0 */ bool mUnk_b0;
+ /* b1 */ bool mUnk_b1;
+ /* b2 */ bool mUnk_b2;
+ /* b3 */ unk8 mUnk_b3;
/* b4 */
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~LinkStateInteract() override;
/* 0c */ virtual LinkStateId GetId() override;
- /* 10 */ virtual void CreateDebugHierarchy() override;
+ /* 10 */ virtual void LoadBhio() override;
/* 14 */ virtual void OnStateEnter() override;
/* 18 */ virtual void OnStateLeave(s32 param1) override;
/* 1c */ virtual void vfunc_1c() override;
@@ -36,7 +40,7 @@ public:
s32 GetGrabActorId();
bool func_ov00_020aa818();
void func_ov00_020aa844(Actor *param1);
- LinkStateRoll *GetLinkStateRoll();
+ static LinkStateRoll *GetLinkStateRoll();
void SetGrabActorVelocity(Vec3p *velocity);
void SetBombVelocity(Vec3p *velocity);
void func_ov00_020ab6c8();
@@ -46,8 +50,8 @@ public:
void SetThrowOffset(Vec3p *target);
void func_ov00_020ab934(Vec3p *target);
void func_ov00_020ab97c(Vec3p *target);
- void func_ov00_020ab9b8(u32 param1, bool param2);
- void Grab(ActorRef *ref);
+ void func_ov00_020ab9b8(s32 param1, bool param2);
+ bool Grab(ActorRef *ref);
void func_ov00_020abba0(ActorRef *ref);
void func_ov00_020abbdc(ActorRef *ref); // duplicate of func_ov00_020abba0
void func_ov00_020abc18(ActorRef *ref);
diff --git a/include/Player/LinkStateMove.hpp b/include/Player/LinkStateMove.hpp
index a782b22d..02109513 100644
--- a/include/Player/LinkStateMove.hpp
+++ b/include/Player/LinkStateMove.hpp
@@ -22,7 +22,7 @@ public:
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~LinkStateMove() override;
/* 0c */ virtual LinkStateId GetId() override;
- /* 10 */ virtual void CreateDebugHierarchy() override;
+ /* 10 */ virtual void LoadBhio() override;
/* 14 */ virtual void OnStateEnter() override;
/* 18 */ virtual void OnStateLeave(s32 param1) override;
/* 1c */ virtual void vfunc_1c() override;
diff --git a/include/Player/LinkStateRoll.hpp b/include/Player/LinkStateRoll.hpp
index a82dbdf1..3eb2d98d 100644
--- a/include/Player/LinkStateRoll.hpp
+++ b/include/Player/LinkStateRoll.hpp
@@ -32,7 +32,7 @@ public:
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~LinkStateRoll() override;
/* 0c */ virtual LinkStateId GetId() override;
- /* 10 */ virtual void CreateDebugHierarchy() override;
+ /* 10 */ virtual void LoadBhio() override;
/* 14 */ virtual void OnStateEnter() override;
/* 18 */ virtual void OnStateLeave(s32 param1) override;
/* 1c */ virtual void vfunc_1c() override;
diff --git a/include/Player/PlayerControl.hpp b/include/Player/PlayerControl.hpp
index adf10925..69f17610 100644
--- a/include/Player/PlayerControl.hpp
+++ b/include/Player/PlayerControl.hpp
@@ -7,9 +7,9 @@
#include "Actor/Actor.hpp"
#include "Actor/ActorManager.hpp"
-#include "Debug/DebugHierarchy.hpp"
#include "Item/Item.hpp"
#include "Map/TilePos.hpp"
+#include "Player/Bhio.hpp"
#include "Player/TouchControl.hpp"
#include "Player/TouchGesture.hpp"
@@ -72,7 +72,7 @@ public:
/* c8 */ s32 mUnk_c8;
/* cc */ s32 mUnk_cc;
/* d0 */ TouchGesture **mTouchGesture;
- /* d4 */ DebugHierarchy *mDebug;
+ /* d4 */ Bhio *mBhio;
/* d8 */
static bool func_ov00_020aeeac();
diff --git a/include/Player/PlayerLinkBase.hpp b/include/Player/PlayerLinkBase.hpp
index b5bf77ed..9d85416e 100644
--- a/include/Player/PlayerLinkBase.hpp
+++ b/include/Player/PlayerLinkBase.hpp
@@ -5,8 +5,8 @@
#include "types.h"
#include "Actor/ActorManager.hpp"
-#include "Debug/DebugHierarchy.hpp"
#include "Item/ItemManager.hpp"
+#include "Player/Bhio.hpp"
#include "Player/MotionParams.hpp"
#include "Player/PlayerBase.hpp"
#include "Player/PlayerControlData.hpp"
@@ -40,9 +40,9 @@ public:
/* 5c */ unk8 mUnk_5c[3];
/* 5f */ bool mUnk_5f;
/* 60 */ MotionParams *mMotionParams;
- /* 64 */ DebugHierarchy *mDebugHierarchy_0;
- /* 68 */ DebugHierarchy *mDebugHierarchy_1;
- /* 6c */ DebugHierarchy *mDebugHierarchy_2;
+ /* 64 */ Bhio *mBhio_0;
+ /* 68 */ Bhio *mBhio_1;
+ /* 6c */ Bhio *mBhio_2;
/* 70 */
/* 00 */ virtual s32 GetMaxHealth() override;