mirror of
https://github.com/zeldaret/ss
synced 2026-09-05 02:26:03 -04:00
Merge pull request #309 from elijah-thomas774/Various-Actors
Various actors
This commit is contained in:
@@ -70,6 +70,7 @@ class dAcBase_c : public dBase_c {
|
||||
public:
|
||||
enum AcProperties_e {
|
||||
AC_PROP_0x1 = (1 << 0),
|
||||
AC_PROP_0x2 = (1 << 1),
|
||||
AC_PROP_0x4 = (1 << 2),
|
||||
AC_PROP_0x100 = (1 << 8),
|
||||
AC_PROP_0x400 = (1 << 10),
|
||||
|
||||
@@ -267,14 +267,17 @@ public:
|
||||
return result; \
|
||||
} while (0)
|
||||
|
||||
// Use this in actors' create functions
|
||||
#define CREATE_ALLOCATOR(className) \
|
||||
#define CREATE_ALLOCATOR_SIZE(className, size) \
|
||||
do { \
|
||||
if (!initAllocatorWork1Heap(-1, #className "::m_allocator", 0x20)) { \
|
||||
if (!initAllocatorWork1Heap(size, #className "::m_allocator", 0x20)) { \
|
||||
return FAILED; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
// Use this in actors' create functions
|
||||
#define CREATE_ALLOCATOR(className) CREATE_ALLOCATOR_SIZE(className, -1)
|
||||
#define CREATE_ALLOCATOR_UNCHECKED(className) initAllocatorWork1Heap(-1, #className "::m_allocator", 0x20)
|
||||
|
||||
class dAcObjRef_unk {
|
||||
public:
|
||||
dAcObjRef_unk(dAcObjBase_c *ref) : mObj(nullptr), refOwner(ref) {}
|
||||
|
||||
@@ -2,19 +2,39 @@
|
||||
#define D_A_OBJ_BELL_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "toBeSorted/dowsing_target.h"
|
||||
|
||||
class dAcObell_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcObell_c() : mStateMgr(*this) {}
|
||||
dAcObell_c() : mStateMgr(*this), mDowsingTarget(this, DowsingTarget::SLOT_NONE) {}
|
||||
virtual ~dAcObell_c() {}
|
||||
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
STATE_FUNC_DECLARE(dAcObell_c, Wait);
|
||||
STATE_FUNC_DECLARE(dAcObell_c, WaitRupee);
|
||||
STATE_FUNC_DECLARE(dAcObell_c, After);
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcObell_c);
|
||||
/* 0x330 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ dBgW mBgW;
|
||||
/* 0x560 */ dCcD_Sph mSph;
|
||||
/* 0x6B0 */ STATE_MGR_DECLARE(dAcObell_c);
|
||||
/* 0x6EC */ DowsingTarget mDowsingTarget;
|
||||
/* 0x70C */ mVec3_c mRupeeDir;
|
||||
/* 0x718 */ mVec3_c field_0x718;
|
||||
/* 0x### */ // More
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,18 +2,58 @@
|
||||
#define D_A_OBJ_DORMITORY_GATE_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "m/m3d/m_anmmatclr.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "toBeSorted/stage_render_stuff.h"
|
||||
|
||||
class dAcODormitoryGate_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcODormitoryGate_c() : mStateMgr(*this) {}
|
||||
enum Type_e {
|
||||
TYPE_GATE = 0,
|
||||
TYPE_GODDOOR = 1,
|
||||
TYPE_SHUTTER = 2,
|
||||
TYPE_GATE_F400 = 3,
|
||||
};
|
||||
dAcODormitoryGate_c() : mStateMgr(*this), mScnCallback(this) {}
|
||||
virtual ~dAcODormitoryGate_c() {}
|
||||
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
STATE_FUNC_DECLARE(dAcODormitoryGate_c, Wait);
|
||||
STATE_FUNC_DECLARE(dAcODormitoryGate_c, End);
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcODormitoryGate_c);
|
||||
/** Sets the parameter for Door to be open/closed physically */
|
||||
void fn_534_C80();
|
||||
|
||||
/** Sets the Door open/closed physically */
|
||||
void fn_534_D40();
|
||||
|
||||
bool checkOpenFlag();
|
||||
|
||||
/* 0x330 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x334 */ m3d::smdl_c mMdls[2];
|
||||
/* 0x36C */ m3d::anmMatClr_c mAnmMatClr;
|
||||
/* 0x398 */ dBgW mCollision[2];
|
||||
/* 0x7B8 */ STATE_MGR_DECLARE(dAcODormitoryGate_c);
|
||||
/* 0x7F4 */ mMtx_c mDoorMtx[2];
|
||||
/* 0x854 */ Type_e mSubtype;
|
||||
/* 0x858 */ u8 mNumDoors;
|
||||
/* 0x85C */ f32 mShutterHeight;
|
||||
/* 0x860 */ mAng mGateAngle;
|
||||
/* 0x862 */ bool mIsOpen;
|
||||
/* 0x863 */ u8 _0x863[0x865 - 0x863];
|
||||
/* 0x865 */ u8 mGodDoorSomething;
|
||||
/* 0x868 */ dScnCallback_c mScnCallback;
|
||||
/* 0x874 */ u16 mStoryflag;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,18 +1,68 @@
|
||||
#ifndef D_A_OBJ_FLAG_H
|
||||
#define D_A_OBJ_FLAG_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "m/m3d/m_anmtexsrt.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/g3d_scnobj.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "s/s_State.hpp"
|
||||
|
||||
class dAcODesertAgo_c;
|
||||
class dAcOFlag_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOFlag_c() : mStateMgr(*this) {}
|
||||
class callback_c : public nw4r::g3d::IScnObjCallback {
|
||||
public:
|
||||
callback_c(dAcObjBase_c *arg) : mpActor(arg) {}
|
||||
/* 0x04 */ dAcObjBase_c *mpActor;
|
||||
};
|
||||
dAcOFlag_c() : mResFile(nullptr), mStateMgr(*this), mCallback(this) {}
|
||||
virtual ~dAcOFlag_c() {}
|
||||
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorCreate() override;
|
||||
virtual int actorPostCreate() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
STATE_FUNC_DECLARE(dAcOFlag_c, Wait);
|
||||
|
||||
void setCollider();
|
||||
void createPlacement();
|
||||
|
||||
bool isSail();
|
||||
bool isPurpleFlag();
|
||||
const char *getArcName();
|
||||
const char *getMdlName();
|
||||
const char *getAnmTexSrtName();
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcOFlag_c);
|
||||
/* 0x330 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ m3d::anmTexSrt_c mAnmTexSrt;
|
||||
/* 0x37C */ dCcD_Cps mCps;
|
||||
/* 0x4EC */ STATE_MGR_DECLARE(dAcOFlag_c);
|
||||
/* 0x528 */ callback_c mCallback;
|
||||
/* 0x530 */ s32 field_0x530;
|
||||
/* 0x534 */ s32 mNumJoints;
|
||||
/* 0x538 */ mVec3_c *mpJoints;
|
||||
/* 0x53C */ mVec3_c field_0x53C;
|
||||
/* 0x548 */ s32 field_0x548;
|
||||
/* 0x54C */ dAcRef_c<dAcODesertAgo_c> mDesertAgoRef;
|
||||
/* 0x558 */ s32 field_0x558;
|
||||
/* 0x55C */ s32 field_0x55C;
|
||||
/* 0x560 */ u8 field_0x560;
|
||||
/* 0x561 */ u8 field_0x561;
|
||||
/* 0x564 */ s32 field_0x564;
|
||||
/* 0x568 */ f32 field_0x568;
|
||||
/* 0x56C */ mVec3_c *mpJoints1; // Size 15
|
||||
/* 0x570 */ mVec3_c *mpJoints2; // Size 15
|
||||
/* 0x574 */ mVec3_c *mpJoints3; // Size 15
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3383,7 +3383,7 @@ enum StoryFlags_e {
|
||||
/** [Goddess Statue Opened]
|
||||
* Story Flag #672 (0x02A0) - JP 805ACDA0 0x02 / US 805A9B20 0x02
|
||||
*/
|
||||
STORYFLAG_672,
|
||||
STORYFLAG_GODDESS_STATUE_ACCESS,
|
||||
|
||||
/** [Set when Scrapper picks up Oolo]
|
||||
* Story Flag #673 (0x02A1) - JP 805ACDA0 0x04 / US 805A9B20 0x04
|
||||
|
||||
@@ -141,7 +141,7 @@ public:
|
||||
}
|
||||
|
||||
const math::VEC3 &GetTranslate() const {
|
||||
return ref().translate;
|
||||
return *(const math::VEC3 *)&ref().translate;
|
||||
}
|
||||
|
||||
// not in the dwarf
|
||||
|
||||
Reference in New Issue
Block a user