summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2025-11-24 02:44:18 -0500
committerelijah-thomas774 <elijahthomas774@gmail.com>2025-11-24 02:44:18 -0500
commitc59fe14362b65bf3df8b6bc7f41f73dc0719ee89 (patch)
treed72c8433695b8570b76ba241887ef58b973584d1 /include
parent4c1290dad7821fda93a215d20c79cdb0c11ad55a (diff)
some Progress
Diffstat (limited to 'include')
-rw-r--r--include/d/a/obj/d_a_obj_base.h5
-rw-r--r--include/d/a/obj/d_a_obj_door.h50
2 files changed, 44 insertions, 11 deletions
diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h
index 3deba1ae..039def40 100644
--- a/include/d/a/obj/d_a_obj_base.h
+++ b/include/d/a/obj/d_a_obj_base.h
@@ -181,6 +181,11 @@ public:
const char *name, u32 roomId, u32 params1, const mVec3_c *pos, const mAng3_c *rot, const mVec3_c *scale,
u32 params2, u16 id, s8 viewclipId
);
+ static dAcObjBase_c *create(
+ dAcObjBase_c *, fProfile::PROFILE_NAME_e actorId, u32 params1, const mVec3_c *pos, const mAng3_c *rot,
+ const mVec3_c *scale, u32 params2, u32 roomId
+ );
+
static dAcObjBase_c *findObject(fProfile::PROFILE_NAME_e actorId, fLiNdBa_c *refList, dAcObjBase_c *parent);
static dAcObjBase_c *getNextObject(fLiMgBa_c *ref, dAcObjBase_c *parent);
bool isPlayer();
diff --git a/include/d/a/obj/d_a_obj_door.h b/include/d/a/obj/d_a_obj_door.h
index d3da304f..1c3eebca 100644
--- a/include/d/a/obj/d_a_obj_door.h
+++ b/include/d/a/obj/d_a_obj_door.h
@@ -2,26 +2,37 @@
#define D_A_OBJ_DOOR_H
#include "common.h"
+#include "d/a/d_a_base.h"
+#include "d/a/obj/d_a_obj_base.h"
#include "d/a/obj/d_a_obj_door_base.h"
#include "m/m3d/m_anmmdl.h"
#include "m/m3d/m_smdl.h"
+#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "toBeSorted/actor_event.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/d_flow_mgr.h"
+struct dTimeBits {
+ dTimeBits() : field_0x00(false), field_0x01(false) {}
+ bool field_0x00;
+ bool field_0x01;
+};
+
+class dAcOLock_c;
+
class dAcOdoor_c : public dAcObjDoor_c {
public:
enum Subtype_e {
- SUBTYPE_0,
- SUBTYPE_1,
- SUBTYPE_2,
- SUBTYPE_3,
- SUBTYPE_4,
- SUBTYPE_5,
- SUBTYPE_6,
- SUBTYPE_7,
- SUBTYPE_8,
+ SUBTYPE_0, ///< DoorA00
+ SUBTYPE_1, ///< DoorA01
+ SUBTYPE_2, ///< DoorC00
+ SUBTYPE_3, ///< DoorC01
+ SUBTYPE_4, ///< DoorB00
+ SUBTYPE_5, ///< DoorE
+ SUBTYPE_6, ///< DoorA02
+ SUBTYPE_7, ///< DoorF
+ SUBTYPE_8, ///< DoorH
};
public:
@@ -98,10 +109,10 @@ public:
static void openCallbackCommon(dAcOdoor_c *);
/** */
- bool isKeyLocked(); // getFromParams(6, 0x1)
+ s32 getKeyParameter(); // getFromParams(6, 0x1)
/** */
- u8 getSubtype2(); // (mRotation.x >> 0) & 0xFF
+ s32 getSubtype2(); // (mRotation.x >> 0) & 0xFF
/** */
u8 getSceneflag(); // (mRotation.x >> 8) & 0xFF
@@ -238,6 +249,11 @@ public:
/** */
void playInteractionLocked() const;
+public:
+ // defined in main dol
+ bool isConnectedToOtherDoor() const;
+ dAcRef_c<dAcOdoor_c> &getConnectedDoorRef(); // return mConnectedDoor;
+
private:
/* 0x33C */ m3d::smdl_c mMdl0;
/* 0x358 */ m3d::smdl_c mMdl1;
@@ -246,6 +262,18 @@ private:
/* 0x42C */ dFlowMgr_c mFlowMgr;
/* 0x4E8 */ dEmitter_c mEmmiter0;
/* 0x51C */ dEmitter_c mEmmiter1;
+ /* 0x550 */ dTimeBits mTimeBits;
+ /* 0x554 */ dAcRef_c<dAcOdoor_c> mConnectedDoor;
+ /* 0x560 */ dAcRef_c<dAcOLock_c> mLock;
+ /* 0x56C */ dAcRef_c<dAcObjBase_c> mObjRef;
+ /* 0x578 */ mMtx_c mMtx;
+ /* 0x5A8 */ u8 _0x584[0x5B1 - 0x5A8];
+ /* 0x5B1 */ u8 field_0x5B1; ///<
+ /* 0x5B2 */ u8 mSceneflag; ///< Used for unlocking the door
+ /* 0x5B3 */ u8 _0x5B3[0x5B7 - 0x5B3];
+ /* 0x5B7 */ bool field_0x5B7;
+ /* 0x5B8 */ u8 _0x5B8[0x5BB - 0x5B8];
+ /* 0x5BB */ bool field_0x5BB;
};
#endif