This commit is contained in:
elijah-thomas774
2025-11-15 20:48:18 -05:00
parent b661da78b5
commit e696b17adb
14 changed files with 739 additions and 54 deletions
+1 -1
View File
@@ -120,7 +120,7 @@ public:
/* vt 0x64 */ virtual bool restorePosRotFromCopy();
/* vt 0x68 */ virtual void registerInEvent();
/* vt 0x6C */ virtual void unkVirtFunc_0x6C();
/* vt 0x70 */ virtual void doInteraction(s32);
/* vt 0x70 */ virtual void doInteraction(s32 /* InteractionType */);
public:
dAcBase_c();
+154 -2
View File
@@ -1,15 +1,99 @@
#ifndef D_A_OBJ_BARREL_H
#define D_A_OBJ_BARREL_H
#include "d/a/d_a_base.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/bg/d_bg_s_acch.h"
#include "d/col/bg/d_bg_w.h"
#include "d/col/c/c_bg_s_poly_info.h"
#include "d/col/cc/d_cc_d.h"
#include "d/d_shadow.h"
#include "d/flag/sceneflag_manager.h"
#include "m/m3d/m_smdl.h"
#include "m/m_quat.h"
#include "m/m_vec.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/time_area_mgr.h"
class dAcNpcCeLady_c;
class dAcNpcCeFriend_c;
class dAcOBarrel_c : public dAcObjBase_c {
public:
enum Type {
Normal,
Explode,
Type2,
Kraken,
};
dAcOBarrel_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dAcOBarrel_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;
virtual void registerInEvent() override;
virtual void unkVirtFunc_0x6C() override;
virtual void doInteraction(s32) override;
/** fn_293_30D0 */
void fn_293_30D0();
/** fn_293_3560 */
void fn_293_3560();
/** fn_293_37B0 */
void fn_293_37B0();
/** fn_293_3A20 */
void updateMtx();
/** fn_293_3DB0 */
void fn_293_3DB0();
/** fn_293_4200 */
void fn_293_4200();
/** fn_293_45A0 */
bool fn_293_45A0();
/** fn_293_4A90 */
bool fn_293_4A90(const mAng &);
/** fn_293_4BC0 */
bool fn_293_4BC0();
/** fn_293_4C60 */
bool fn_293_4C60();
/** fn_293_4D00 */
bool fn_293_4D00();
/** fn_293_4ED0 */
bool fn_293_4ED0();
/** fn_293_50B0 */
bool fn_293_50B0();
/** fn_293_5150 */
bool fn_293_5150();
/** fn_293_5360 */
void fn_293_5360();
/** fn_293_58C0 */
void fn_293_58C0();
/** fn_293_5910 */
void fn_293_5910();
STATE_FUNC_DECLARE(dAcOBarrel_c, Wait);
STATE_FUNC_DECLARE(dAcOBarrel_c, Grab);
STATE_FUNC_DECLARE(dAcOBarrel_c, GrabUp);
@@ -21,8 +105,76 @@ public:
STATE_FUNC_DECLARE(dAcOBarrel_c, KrakenBorn);
STATE_FUNC_DECLARE(dAcOBarrel_c, Rebirth);
public:
bool isType_0() const {
return mType == Type2 || mType == Kraken;
}
bool isTimeshiftableType() const {
return mType & 1;
}
bool checkFlag_0xE18() {
return field_0xE18 < 0xFF && !SceneflagManager::sInstance->checkBoolFlag(mRoomID, field_0xE18);
}
private:
/* 0x??? */ STATE_MGR_DECLARE(dAcOBarrel_c);
/* 0x330 */ nw4r::g3d::ResFile mResFile;
/* 0x334 */ m3d::smdl_c mMdl;
/* 0x350 */ dShadowCircle_c mShadow;
/* 0x358 */ dBgS_AcchCir mAcchCir;
/* 0x3B4 */ dBgS_ObjAcch mObjAcch;
/* 0x764 */ cBgS_PolyInfo mPolyInfo;
/* 0x790 */ dBgW mBgW;
/* 0x9A0 */ dCcD_Cyl mCyl;
/* 0xAF0 */ dCcD_Sph mSph;
/* 0xC40 */ STATE_MGR_DECLARE(dAcOBarrel_c);
/* 0xC7C */ TimeAreaStruct mTimeArea;
/* 0xC88 */ dAcRef_c<dAcNpcCeLady_c> mCeLady;
/* 0xC94 */ dAcRef_c<dAcNpcCeFriend_c> mCeFriend;
/* 0xCA0 */ u8 _CA0[0xD08 - 0xCA0];
/* 0xD08 */ dWaterEffect_c mWaterEffect;
/* 0xD70 */ mQuat_c quat_0xD50;
/* 0xD70 */ mQuat_c quat_0xD60;
/* 0xD70 */ mQuat_c quat_0xD70;
/* 0xD80 */ mQuat_c quat_0xD80;
/* 0xD90 */ mQuat_c quat_0xD90;
/* 0xDA0 */ mQuat_c quat_0xDA0;
/* 0xDB0 */ u8 _DB0[0xDBC - 0xDB0];
/* 0xDBC */ mVec3_c field_0xDBC;
/* 0xDC8 */ u8 _DC8[0xDD4 - 0xDC8];
/* 0xDD4 */ f32 field_0xDD4;
/* 0xDD8 */ mVec3_c field_0xDD8;
/* 0xDE4 */ mAng3_c field_0xDE4;
/* 0xDEE */ u8 _DEA[0xDEC - 0xDEA];
/* 0xDEC */ u16 field_0xDEC;
/* 0xDEE */ u8 _DEE[0xE00 - 0xDEE];
/* 0xE00 */ bool field_0xE00; //< Can Damage ?
/* 0xE01 */ bool field_0xE01;
/* 0xE02 */ bool field_0xE02;
/* 0xE03 */ bool field_0xE03;
/* 0xE04 */ bool field_0xE04;
/* 0xE05 */ bool field_0xE05;
/* 0xE06 */ bool field_0xE06;
/* 0xE07 */ bool field_0xE07;
/* 0xE08 */ bool field_0xE08;
/* 0xE09 */ bool field_0xE09;
/* 0xE0A */ bool field_0xE0A;
/* 0xE0B */ bool field_0xE0B;
/* 0xE0C */ bool field_0xE0C;
/* 0xE0D */ bool field_0xE0D;
/* 0xE0E */ bool field_0xE0E;
/* 0xE0F */ u8 mType;
/* 0xE10 */ u8 field_0xE10;
/* 0xE11 */ u8 field_0xE11;
/* 0xE12 */ u8 field_0xE12;
/* 0xE13 */ u8 field_0xE13;
/* 0xE14 */ u8 field_0xE14;
/* 0xE15 */ u8 field_0xE15;
/* 0xE16 */ u8 field_0xE16;
/* 0xE17 */ u8 field_0xE17;
/* 0xE18 */ u8 field_0xE18;
/* 0xE19 */ u8 mBrokenFlag;
};
#endif
+4
View File
@@ -62,6 +62,10 @@ public:
return field_0x0E & pBg->GetField_0x22();
}
void SetField_0xC(u16 v) {
field_0x0C = v;
}
void SetExtChk(const cBgS_Chk &other) {
mPolyPassChk = other.mPolyPassChk;
mGrpPassChk = other.mGrpPassChk;
+9 -1
View File
@@ -830,6 +830,12 @@ public:
void SetAtFlag(u32 flag) {
mAt.SetSPrm(flag);
}
void SetAtGrp(u32 grp) {
mAt.SetAtFlag(GetAtGrp() | grp);
}
void OffAtGrp(u32 grp) {
mAt.SetAtFlag(GetAtGrp() & ~grp);
}
void SetTgFlag_0xA(u16 flag) {
mTg.SetFlag_0xA(flag);
@@ -907,6 +913,9 @@ public:
void OnAtSet() {
mAt.OnSPrm(1);
}
void OffAtSet() {
mAt.OffSPrm(1);
}
u32 ChkAtNoMass() const {
return mAt.MskSPrm(0x400);
}
@@ -1000,7 +1009,6 @@ public:
}
// Co
void SetCoGrp(u32 grp) {
mCo.SetGrp(grp << 4);
}
+2 -2
View File
@@ -39,8 +39,8 @@ public:
~fManager_c() {}
int getSearchTableNum();
static fBase_c *searchBaseByID(fBaseID_e id);
static fBase_c *searchBaseByProfName(ProfileName profID, const fBase_c *parent);
static fBase_c *searchBaseByGroupType(u8 groupType, const fBase_c *parent);
static fBase_c *searchBaseByProfName(ProfileName profID, const fBase_c *parent = nullptr);
static fBase_c *searchBaseByGroupType(u8 groupType, const fBase_c *parent = nullptr);
static void mainLoop();
private:
+4
View File
@@ -138,6 +138,10 @@ struct mAng {
s16 mVal;
static const mAng Zero() {
return 0;
}
private:
static const f32 sHalfCircleDeg;
static const f32 sAngToDeg;
+22 -22
View File
@@ -32,27 +32,27 @@ public:
};
enum InteractionType {
UNK_0,
PICK_UP,
OPEN,
UNK_3,
TALK,
EXAMINE_TALK,
EXAMINE_6,
UNK_7,
GET_IN,
READY_SWORD,
UNK_10,
UNK_11,
READ,
GRAB,
CATCH,
UNK_15,
UNK_16,
DIG,
UNK_18,
SIT,
UNK_20,
/* 0 */ UNK_0,
/* 1 */ PICK_UP,
/* 2 */ OPEN,
/* 3 */ UNK_3,
/* 4 */ TALK,
/* 5 */ EXAMINE_TALK,
/* 6 */ EXAMINE_6,
/* 7 */ UNK_7,
/* 8 */ GET_IN,
/* 9 */ READY_SWORD,
/* 10 */ UNK_10,
/* 11 */ UNK_11,
/* 12 */ READ,
/* 13 */ GRAB,
/* 14 */ CATCH,
/* 15 */ UNK_15,
/* 16 */ UNK_16,
/* 17 */ DIG,
/* 18 */ UNK_18,
/* 19 */ SIT,
/* 20 */ UNK_20,
UNK_0x58 = 0x58,
};
@@ -171,7 +171,7 @@ public:
private:
/* 0xBDC */ u8 field_0xBDC;
public:
static AttentionManager *sInstance;
+1 -1
View File
@@ -50,7 +50,7 @@ public:
static bool eventRelatedStateFlags_shift0x11_1();
// Something like isActorInEvent maybe?
static bool FUN_800a0570(dAcBase_c *actor);
static bool FUN_800a0570(const dAcBase_c *actor);
static bool FUN_800a0ba0();
private: