mirror of
https://github.com/zeldaret/st
synced 2026-05-23 15:01:41 -04:00
754eb10308
* decompile MapObject * fix regression * match the remaining 4 functions
171 lines
5.2 KiB
C++
171 lines
5.2 KiB
C++
#pragma once
|
|
|
|
#include "Actor/ActorRef.hpp"
|
|
#include "Map/MapObjectId.hpp"
|
|
#include "MapObject/MapObjectProfile.hpp"
|
|
#include "Physics/Cylinder.hpp"
|
|
#include "System/SysNew.hpp"
|
|
#include "flags.h"
|
|
#include "global.h"
|
|
#include "nitro/math.h"
|
|
#include "types.h"
|
|
|
|
class MapObjectProfile;
|
|
|
|
typedef u16 MapObjFlags;
|
|
enum MapObjFlag_ {
|
|
MapObjFlag_Alive = FLAG(0, 0),
|
|
MapObjFlag_1 = FLAG(0, 1),
|
|
MapObjFlag_2 = FLAG(0, 2),
|
|
MapObjFlag_3 = FLAG(0, 3),
|
|
MapObjFlag_4 = FLAG(0, 4),
|
|
MapObjFlag_5 = FLAG(0, 5),
|
|
MapObjFlag_6 = FLAG(0, 6),
|
|
MapObjFlag_7 = FLAG(0, 7),
|
|
MapObjFlag_8 = FLAG(0, 8),
|
|
MapObjFlag_9 = FLAG(0, 9),
|
|
MapObjFlag_10 = FLAG(0, 10),
|
|
MapObjFlag_11 = FLAG(0, 11),
|
|
MapObjFlag_12 = FLAG(0, 12),
|
|
MapObjFlag_13 = FLAG(0, 13),
|
|
MapObjFlag_14 = FLAG(0, 14),
|
|
MapObjFlag_15 = FLAG(0, 15),
|
|
MapObjFlag_16 = FLAG(0, 16),
|
|
MapObjFlag_17 = FLAG(0, 17),
|
|
MapObjFlag_18 = FLAG(0, 18),
|
|
MapObjFlag_19 = FLAG(0, 19),
|
|
MapObjFlag_20 = FLAG(0, 20),
|
|
MapObjFlag_21 = FLAG(0, 21),
|
|
MapObjFlag_22 = FLAG(0, 22),
|
|
MapObjFlag_23 = FLAG(0, 23),
|
|
MapObjFlag_24 = FLAG(0, 24),
|
|
MapObjFlag_25 = FLAG(0, 25),
|
|
MapObjFlag_26 = FLAG(0, 26),
|
|
MapObjFlag_27 = FLAG(0, 27),
|
|
MapObjFlag_28 = FLAG(0, 28),
|
|
MapObjFlag_29 = FLAG(0, 29),
|
|
MapObjFlag_30 = FLAG(0, 30),
|
|
MapObjFlag_31 = FLAG(0, 31),
|
|
};
|
|
|
|
class MapObject_10_Base {
|
|
public:
|
|
/* 00 (vtable) */
|
|
/* 04 */ unk8 mUnk_04;
|
|
/* 05 */ unk8 mUnk_05;
|
|
/* 06 */ unk8 mUnk_06;
|
|
/* 07 */ unk8 mUnk_07;
|
|
/* 08 */ unk32 mUnk_08;
|
|
/* 0C */
|
|
|
|
MapObject_10_Base(); // func_ov000_0207c018
|
|
|
|
// data_ov000_020b2854
|
|
/* 00 */ virtual void vfunc_00() = 0;
|
|
/* 04 */ virtual void vfunc_04() = 0;
|
|
/* 08 */ virtual void vfunc_08() = 0;
|
|
/* 0C */ virtual void vfunc_0C() = 0;
|
|
/* 10 */ virtual void vfunc_10(Cylinder *param1) = 0;
|
|
/* 14 */ virtual void vfunc_14() = 0;
|
|
/* 18 */ virtual void vfunc_18(Vec3p *param1) = 0;
|
|
/* 1C */ virtual void vfunc_1C(Vec3p *param1) = 0;
|
|
/* 20 */
|
|
};
|
|
|
|
class MapObject_10 : public MapObject_10_Base {
|
|
public:
|
|
/* 00 (vtable) */
|
|
/* 0C */
|
|
|
|
MapObject_10() {}
|
|
~MapObject_10() {}
|
|
|
|
// data_ov031_02113f18
|
|
/* 00 */ virtual void vfunc_00();
|
|
/* 04 */ virtual void vfunc_04();
|
|
/* 08 */ virtual void vfunc_08();
|
|
/* 0C */ virtual void vfunc_0C();
|
|
/* 10 */ virtual void vfunc_10(Cylinder *param1);
|
|
/* 14 */ virtual void vfunc_14();
|
|
/* 18 */ virtual void vfunc_18(Vec3p *param1);
|
|
/* 1C */ virtual void vfunc_1C(Vec3p *param1);
|
|
/* 20 */
|
|
};
|
|
|
|
class MapObject_20 {
|
|
public:
|
|
/* 00 */ u16 mUnk_00;
|
|
/* 02 */ u16 mUnk_02;
|
|
/* 04 */ unk32 mUnk_04;
|
|
/* 08 */ u8 mUnk_08[2];
|
|
/* 0A */ u16 mUnk_0A[2];
|
|
/* 0E */ unk16 mUnk_0E;
|
|
/* 10 */ unk32 mUnk_10;
|
|
/* 14 */ s16 mUnk_14;
|
|
/* 16 */ unk16 mUnk_16;
|
|
/* 18 */
|
|
|
|
MapObject_20() {}
|
|
};
|
|
|
|
class MapObject : public SysObject {
|
|
public:
|
|
/* 00 (vtable) */
|
|
/* 04 */ Vec3p mPos;
|
|
/* 10 */ MapObject_10 *mUnk_10;
|
|
/* 14 */ unk16 mUnk_14;
|
|
/* 16 */ unk16 mUnk_16;
|
|
/* 18 */ unk8 mUnk_18[2]; // bools? when set Link walks to the map object when touched
|
|
/* 1A */ unk8 mUnk_1A;
|
|
/* 1B */ unk8 mUnk_1B;
|
|
/* 1C */ MapObjFlags mFlags[1];
|
|
/* 1E */ unk16 mUnk_1E;
|
|
/* 20 */ MapObject_20 mUnk_20;
|
|
/* 38 */ unk8 mUnk_38;
|
|
/* 38 */ unk8 mUnk_39;
|
|
/* 3A */ Vec2b mUnk_3A;
|
|
/* 3C */ MapObjectProfile *mpProfile;
|
|
/* 40 */
|
|
|
|
// data_ov000_020b3590
|
|
/* 00 */ virtual bool vfunc_00();
|
|
/* 04 */ virtual bool vfunc_04();
|
|
/* 08 */ virtual unk16 vfunc_08();
|
|
/* 0C */ virtual unk8 vfunc_0C();
|
|
/* 10 */ virtual void vfunc_10();
|
|
/* 14 */ virtual void vfunc_14();
|
|
/* 18 */ virtual void vfunc_18();
|
|
/* 1C */ virtual bool vfunc_1C();
|
|
/* 20 */ virtual void vfunc_20();
|
|
/* 24 */ virtual void vfunc_24();
|
|
/* 28 */ virtual bool vfunc_28();
|
|
/* 2C */ virtual bool vfunc_2C(Vec3p *param1);
|
|
/* 30 */ virtual ~MapObject();
|
|
/* 38 */
|
|
|
|
MapObject();
|
|
|
|
MapObjectId GetMapObjectId();
|
|
|
|
bool func_ov000_0209d114();
|
|
bool func_ov000_0209d12c();
|
|
bool func_ov000_0209d144(Vec2s *param1, unk32 param2, unk32 param3);
|
|
void func_ov000_0209d274(unk32 param1);
|
|
unk32 func_ov000_0209d29c(unk32 param1);
|
|
void func_ov000_0209d2c4(unk32 param1, unk32 param2);
|
|
void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3);
|
|
void func_ov000_0209d3b4(unk32 param1, q20 size);
|
|
void func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_00 *param2, unk32 param3);
|
|
void func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3, u8 param4);
|
|
void func_ov000_0209d54c(unk32 param1, u16 param2, Vec3p *param3, s16 param4, u16 param5);
|
|
void func_ov000_0209d5c8(ActorRef ref);
|
|
void func_ov000_0209d614(unk32 param1);
|
|
bool func_ov000_0209d668();
|
|
void func_ov000_0209d6ac(Vec3p *param1);
|
|
|
|
void func_ov031_02103878();
|
|
|
|
static void func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx);
|
|
static void func_ov000_0209d22c(unk16 *param1, MapObject *thisx, unk32 param2);
|
|
};
|