Files
st/include/Player/Player.hpp
T
Yanis 453db24d41 Misc Stuff 6 (#78)
* gcc fixes

* document random things in UnkStruct_027e09b8_00

* match func_ov001_020ba670 and rabbit docs

* match func_ov026_0211f394

* fix build issues

* match func_ov026_0211e3e0

* match func_ov026_02102924

* move structs to header

* document train rope thing

* MapObject OK and ActorRef stuff

* match more actor funcs

* fix regressions

* fix build issues

* more regressions fixes

* name keyt grab func

* UnkSubStruct19 -> CellAnimObject (based on the only assert string)

* fix build issues due to merge

* Actor::mUnk_4C -> Actor::mState + related changes

* create GetActorPtr template inline for Actor_c4

* ActorUnk_ov000_020a8bb0 -> Actor_Derived1

* actor: add comments about mUnk_50/52 and change type of mAngle
2026-06-17 22:20:45 +02:00

208 lines
4.5 KiB
C++

#pragma once
#include "Actor/Actor.hpp"
#include "LinkList.hpp"
#include "Unknown/Common.hpp"
#include "Unknown/UnkStruct_ov000_0208f820.hpp"
#include "math.hpp"
#include "types.h"
class UnkStruct_027e0ce0_40;
class PlayerActorBase_5C {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 10 */ void *mUnk_10;
/* 14 */
};
class PlayerActorBase_70 {
public:
/* 000 */ STRUCT_PAD(0x00, 0x160);
/* 160 */
PlayerActorBase_70();
};
class PlayerActorBase_74 {
public:
/* 00 */ STRUCT_PAD(0x00, 0x34);
/* 34 */
PlayerActorBase_74();
};
class PlayerActorBase {
public:
/* 00 */ VecFx32 mPos;
/* 0C */ VecFx32 mPrevPos;
/* 18 */ VecFx32 mVel;
/* 24 */ VecFx32 mAccel;
/* 30 */ u16 mAngle;
/* 32 */ u8 mInvincibilityTimer;
/* 33 */ u8 mInvincibilityIconTimer; // the blinking icon on top-screen
/* 34 */ ActorRef mGrabActor;
/* 38 */ UnkStruct_PlayerGet_64 mUnk_38;
/* 44 */ unk32 mUnk_44;
/* 48 */ unk32 mUnk_48;
/* 4C */ unk32 mUnk_4C;
/* 50 */ ActorGrabParams mUnk_50;
/* 54 */ unk32 mUnk_54;
/* 58 */ UnkStruct_027e0ce0_40 *mUnk_58;
/* 5C */ PlayerActorBase_5C mUnk_5C;
/* 70 */ PlayerActorBase_70 *mUnk_70;
/* 74 */ PlayerActorBase_74 *mUnk_74;
/* 78 */ STRUCT_PAD(0x78, 0x84);
/* 84 */ UnkStruct_ov019_020d24c8_28_258 mUnk_84;
/* 9C */
PlayerActorBase();
};
class PlayerActor_9C {
public:
/* 000 (vtable) */
/* 004 */ STRUCT_PAD(0x04, 0x154);
/* 154 */
PlayerActor_9C();
// data_ov000_020b2a8c
/* 00 */ virtual ~PlayerActor_9C();
};
class PlayerActor_A0_38;
class PlayerActor_A0_38_04_Base : public LinkList<PlayerActor_A0_38_04_Base> {
public:
/* 00 (vtable) */
/* 04 (base) */
/* 0C */ unk32 mUnk_0C;
/* 10 */ PlayerActor_A0_38 *mUnk_10;
/* 14 */
PlayerActor_A0_38_04_Base(PlayerActor_A0_38 *param1) {
this->mUnk_0C = 0;
this->mUnk_10 = param1;
}
/* 00 */ virtual void vfunc_00();
};
class PlayerActor_A0_38_04 : public PlayerActor_A0_38_04_Base {
public:
/* 00 (vtable) */
/* 04 (base) */
/* 0C */
PlayerActor_A0_38_04(PlayerActor_A0_38 *param1) :
PlayerActor_A0_38_04_Base(param1) {}
// data_ov024_020d8250
/* 00 */ virtual void vfunc_00() override;
};
class PlayerActor_A0_38_18 : public PlayerActor_A0_38_04_Base {
public:
/* 00 (vtable) */
/* 04 (base) */
/* 0C */
PlayerActor_A0_38_18(PlayerActor_A0_38 *param1) :
PlayerActor_A0_38_04_Base(param1) {}
// data_ov024_020d8244
/* 00 */ virtual void vfunc_00() override;
};
class PlayerActor_A0_38 {
public:
/* 00 */ unk16 mUnk_00;
/* 02 */ unk16 mUnk_02;
/* 04 */ PlayerActor_A0_38_04 mUnk_04;
/* 18 */ PlayerActor_A0_38_18 mUnk_18;
/* 2C */ Vec2s mUnk_2C;
/* 30 */ u16 mUnk_30;
/* 32 */ unk16 mUnk_32;
/* 34 */ u16 mUnk_34;
/* 36 */ bool mUnk_36;
/* 37 */ bool mUnk_37;
/* 38 */
PlayerActor_A0_38();
~PlayerActor_A0_38();
void func_ov024_020d19d8();
};
class PlayerActor_A0 {
public:
/* 00 */ STRUCT_PAD(0x00, 0x38);
/* 38 */ PlayerActor_A0_38 *mUnk_38;
/* 3C */ STRUCT_PAD(0x3C, 0x94);
/* 94 */
PlayerActor_A0();
};
class PlayerActor_A4 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk8 mUnk_08;
/* 09 */ unk8 mUnk_09;
/* 0A */ unk8 mUnk_0A;
/* 0B */ unk8 mUnk_0B;
/* 0C */
};
class PlayerActor_134 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */
PlayerActor_134() {
this->mUnk_00 = 0;
this->mUnk_04 = 0;
}
};
class PlayerActor_1B0 : public UnkSystem7 {
public:
/* 00 (base) */
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */
PlayerActor_1B0();
~PlayerActor_1B0();
};
class PlayerActor : public PlayerActorBase {
public:
/* 000 (base) */
/* 09C */ PlayerActor_9C *mUnk_9C;
/* 0A0 */ PlayerActor_A0 *mUnk_A0;
/* 0A4 */ PlayerActor_A4 mUnk_A4;
/* 0B0 */ unk32 mUnk_B0;
/* 0B4 */ unk8 mUnk_B4;
/* 0B5 */ unk8 mUnk_B5;
/* 0B6 */ unk8 mUnk_B6;
/* 0B7 */ unk8 mUnk_B7;
/* 0B8 */ unk8 mUnk_B8;
/* 0B9 */ unk8 mUnk_B9;
/* 0BA */ unk8 mUnk_BA;
/* 0BB */ unk8 mUnk_BB;
/* 0BC */ CellAnimObject mUnk_BC;
/* 134 */ PlayerActor_134 *mUnk_134;
/* 138 */ CellAnimObject mUnk_138; // sanctuary link icon animation
/* 1B0 */ PlayerActor_1B0 mUnk_1B0[3];
/* 1D4 */
PlayerActor(); //! TODO: params
};