diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 758aff00..b341f176 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -10273,22 +10273,22 @@ baseID_Demo<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AD0; // type:funct baseID_DemoThrow<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AE0; // type:function size:0xC scope:local baseID_Fly<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AF0; // type:function size:0xC scope:local baseID_After<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190B00; // type:function size:0xC scope:local -doDemoThrow__14SalbageRelatedFv = .text:0x80190B10; // type:function size:0x1C +doDemoThrow__15dSalvageIfObj_cFv = .text:0x80190B10; // type:function size:0x1C actorExecute__15dAcSalbageObj_cFv = .text:0x80190B30; // type:function size:0xD0 isInStateWait__15dAcSalbageObj_cCFv = .text:0x80190C00; // type:function size:0x50 scope:weak isInStateWaitOrDemoThrow__15dAcSalbageObj_cCFv = .text:0x80190C50; // type:function size:0xB4 scope:weak preExecute__15dAcSalbageObj_cFv = .text:0x80190D10; // type:function size:0x1D4 -getSalvageObjId__14SalbageRelatedCFv = .text:0x80190EF0; // type:function size:0x8 scope:weak +getSalvageObjId__15dSalvageIfObj_cCFv = .text:0x80190EF0; // type:function size:0x8 scope:weak getDowsingUnusedF32__15dAcSalbageObj_cCFv = .text:0x80190F00; // type:function size:0x8 scope:weak getDowsingTargetYOffset__15dAcSalbageObj_cCFv = .text:0x80190F10; // type:function size:0x8 scope:weak preDraw__15dAcSalbageObj_cFv = .text:0x80190F20; // type:function size:0x58 -isHidden__14SalbageRelatedCFv = .text:0x80190F80; // type:function size:0x8 scope:weak +isHidden__15dSalvageIfObj_cCFv = .text:0x80190F80; // type:function size:0x8 scope:weak draw__15dAcSalbageObj_cFv = .text:0x80190F90; // type:function size:0x54 executeInternal__15dAcSalbageObj_cFv = .text:0x80190FF0; // type:function size:0xE0 initSalbageObj__15dAcSalbageObj_cFv = .text:0x801910D0; // type:function size:0x2A8 vt_0x80__15dAcSalbageObj_cCFv = .text:0x80191380; // type:function size:0x8 scope:weak -setHidden__14SalbageRelatedFv = .text:0x80191390; // type:function size:0xC scope:weak -setCarried__14SalbageRelatedFv = .text:0x801913A0; // type:function size:0xC scope:weak +setHidden__15dSalvageIfObj_cFv = .text:0x80191390; // type:function size:0xC scope:weak +setCarried__15dSalvageIfObj_cFv = .text:0x801913A0; // type:function size:0xC scope:weak doInteraction__15dAcSalbageObj_cFl = .text:0x801913B0; // type:function size:0xB0 addAttentionTargetIfNeeded__15dAcSalbageObj_cFv = .text:0x80191460; // type:function size:0x50 addAttentionTarget__15dAcSalbageObj_cFv = .text:0x801914B0; // type:function size:0xFC @@ -10302,7 +10302,7 @@ getBgAcchCirHeight__15dAcSalbageObj_cCFv = .text:0x80191800; // type:function si getBgAcchCirRadius__15dAcSalbageObj_cCFv = .text:0x80191810; // type:function size:0x8 scope:weak calcMtxFromSalbageNpc__15dAcSalbageObj_cFR6mMtx_c = .text:0x80191820; // type:function size:0x17C calcWorldMtx__15dAcSalbageObj_cFv = .text:0x801919A0; // type:function size:0x88 -isCarried__14SalbageRelatedCFv = .text:0x80191A30; // type:function size:0x8 scope:weak +isCarried__15dSalvageIfObj_cCFv = .text:0x80191A30; // type:function size:0x8 scope:weak updateMdl__15dAcSalbageObj_cFv = .text:0x80191A40; // type:function size:0x1B0 getPoscopy3YOffset__15dAcSalbageObj_cCFv = .text:0x80191BF0; // type:function size:0x8 scope:weak getPoscopy2YOffset__15dAcSalbageObj_cCFv = .text:0x80191C00; // type:function size:0x8 scope:weak @@ -10324,7 +10324,7 @@ initializeState_Demo__15dAcSalbageObj_cFv = .text:0x80191E20; // type:function s executeState_Demo__15dAcSalbageObj_cFv = .text:0x80191E30; // type:function size:0x4 finalizeState_Demo__15dAcSalbageObj_cFv = .text:0x80191E40; // type:function size:0x4 initializeState_DemoThrow__15dAcSalbageObj_cFv = .text:0x80191E50; // type:function size:0x164 -setNotCarried__14SalbageRelatedFv = .text:0x80191FC0; // type:function size:0xC scope:weak +setNotCarried__15dSalvageIfObj_cFv = .text:0x80191FC0; // type:function size:0xC scope:weak executeState_DemoThrow__15dAcSalbageObj_cFv = .text:0x80191FD0; // type:function size:0x4 finalizeState_DemoThrow__15dAcSalbageObj_cFv = .text:0x80191FE0; // type:function size:0x4 initializeState_Kill__15dAcSalbageObj_cFv = .text:0x80191FF0; // type:function size:0x4 @@ -10332,8 +10332,8 @@ executeState_Kill__15dAcSalbageObj_cFv = .text:0x80192000; // type:function size finalizeState_Kill__15dAcSalbageObj_cFv = .text:0x80192010; // type:function size:0x4 vt_0xD0__15dAcSalbageObj_cFv = .text:0x80192020; // type:function size:0x4 scope:weak __dt__15dAcSalbageObj_cFv = .text:0x80192030; // type:function size:0x100 scope:weak -__dt__14SalbageRelatedFv = .text:0x80192130; // type:function size:0x40 scope:weak -setNotHidden__14SalbageRelatedFv = .text:0x80192170; // type:function size:0xC scope:weak +__dt__15dSalvageIfObj_cFv = .text:0x80192130; // type:function size:0x40 scope:weak +setNotHidden__15dSalvageIfObj_cFv = .text:0x80192170; // type:function size:0xC scope:weak finalizeState__30sFStateID_c<15dAcSalbageObj_c>CFR15dAcSalbageObj_c = .text:0x80192180; // type:function size:0x30 scope:weak executeState__30sFStateID_c<15dAcSalbageObj_c>CFR15dAcSalbageObj_c = .text:0x801921B0; // type:function size:0x30 scope:weak initializeState__30sFStateID_c<15dAcSalbageObj_c>CFR15dAcSalbageObj_c = .text:0x801921E0; // type:function size:0x30 scope:weak @@ -35359,7 +35359,7 @@ lbl_8052ACC0 = .data:0x8052ACC0; // type:object size:0x10 sCylSrc = .data:0x8052ACD0; // type:object size:0x30 scope:local ...data.0 = .data:0x8052ACD0; // type:label scope:local __vt__15dAcSalbageObj_c = .data:0x8052AD00; // type:object size:0x100 -__vt__14SalbageRelated = .data:0x8052AE00; // type:object size:0x2C +__vt__15dSalvageIfObj_c = .data:0x8052AE00; // type:object size:0x2C @22347 = .data:0x8052AE2C; // type:object size:0xC scope:local @22348 = .data:0x8052AE38; // type:object size:0xC scope:local @22349 = .data:0x8052AE44; // type:object size:0xC scope:local diff --git a/include/d/a/d_a_salbage.h b/include/d/a/d_a_salbage.h new file mode 100644 index 00000000..cca447c1 --- /dev/null +++ b/include/d/a/d_a_salbage.h @@ -0,0 +1,19 @@ +#ifndef D_A_SALBAGE_H +#define D_A_SALBAGE_H + +#include "common.h" + +class dSalvageIf_c { +public: + /* vt 0x08 */ virtual ~dSalvageIf_c() {} + /* vt 0x0C */ virtual void setCarried() = 0; + /* vt 0x10 */ virtual void setNotCarried() = 0; + /* vt 0x14 */ virtual bool isCarried() const = 0; + /* vt 0x18 */ virtual void setHidden() = 0; + /* vt 0x1C */ virtual void setNotHidden() = 0; + /* vt 0x20 */ virtual bool isHidden() const = 0; + /* vt 0x24 */ virtual s32 getSalvageObjId() const = 0; + /* vt 0x28 */ virtual void doDemoThrow() = 0; +}; + +#endif diff --git a/include/d/a/d_a_salbage_obj.h b/include/d/a/d_a_salbage_obj.h index 762efb36..3afa45ca 100644 --- a/include/d/a/d_a_salbage_obj.h +++ b/include/d/a/d_a_salbage_obj.h @@ -6,6 +6,7 @@ #include "d/col/bg/d_bg_s_acch.h" #include "d/col/cc/d_cc_d.h" #include "d/d_shadow.h" +#include "d/a/d_a_salbage.h" #include "m/m3d/m_smdl.h" #include "m/m_mtx.h" #include "m/m_quat.h" @@ -23,33 +24,33 @@ enum SalvageObj_e { SALVAGE_OBJ_POT = 6, }; -class SalbageRelated { +class dSalvageIfObj_c : public dSalvageIf_c { public: - SalbageRelated(dAcSalbageObj_c *obj, s32 id) : mpObj(obj), mCarried(false), mHidden(false), mSalvageObjId(id) {} + dSalvageIfObj_c(dAcSalbageObj_c *obj, s32 id) : mpObj(obj), mCarried(false), mHidden(false), mSalvageObjId(id) {} - /* vt 0x08 */ virtual ~SalbageRelated() {} - /* vt 0x0C */ virtual void setCarried() { + /* vt 0x08 */ virtual ~dSalvageIfObj_c() {} + /* vt 0x0C */ virtual void setCarried() override { mCarried = true; } - /* vt 0x10 */ virtual void setNotCarried() { + /* vt 0x10 */ virtual void setNotCarried() override { mCarried = false; } - /* vt 0x14 */ virtual bool isCarried() const { + /* vt 0x14 */ virtual bool isCarried() const override { return mCarried; } - /* vt 0x18 */ virtual void setHidden() { + /* vt 0x18 */ virtual void setHidden() override { mHidden = true; } - /* vt 0x1C */ virtual void setNotHidden() { + /* vt 0x1C */ virtual void setNotHidden() override { mHidden = false; } - /* vt 0x20 */ virtual bool isHidden() const { + /* vt 0x20 */ virtual bool isHidden() const override { return mHidden; } - /* vt 0x24 */ virtual s32 getSalvageObjId() const { + /* vt 0x24 */ virtual s32 getSalvageObjId() const override { return mSalvageObjId; } - /* vt 0x28 */ virtual void doDemoThrow(); + /* vt 0x28 */ virtual void doDemoThrow() override; private: /* 0x04 */ dAcSalbageObj_c *mpObj; @@ -65,7 +66,7 @@ private: * the Salvage Robot NPC, AKA Scrapper. */ class dAcSalbageObj_c : public dAcObjBase_c { - friend class SalbageRelated; + friend class dSalvageIfObj_c; enum Behavior_e { /// The object is stationary and disappears when picked up @@ -81,7 +82,7 @@ public: : field_0x330(0), mpMdl(mdl), mStateMgr(*this), - mSalbageRelated(this, salvageObjId), + mSalvageIf(this, salvageObjId), mDowsingTarget(this, DowsingTarget::SLOT_NONE), mIsDemoState(false), mpNextStateId(nullptr) {} @@ -169,7 +170,7 @@ protected: /* 0x8AC */ STATE_MGR_DECLARE(dAcSalbageObj_c); /* 0x8E8 */ s32 mBehavior; /* 0x8EC */ bool mIsDemoState; - /* 0x8F0 */ SalbageRelated mSalbageRelated; + /* 0x8F0 */ dSalvageIfObj_c mSalvageIf; /* 0x900 */ f32 field_0x900; /* 0x904 */ s16 field_0x904; /* 0x908 */ mMtx_c mWorldSRMtx; diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h index 1f950092..30418a75 100644 --- a/include/d/a/obj/d_a_obj_base.h +++ b/include/d/a/obj/d_a_obj_base.h @@ -4,6 +4,7 @@ #include "c/c_math.h" #include "common.h" #include "d/a/d_a_base.h" +#include "d/a/d_a_salbage.h" #include "d/col/c/c_cc_d.h" #include "d/col/c/c_m3d_g_aab.h" #include "d/d_jnt_col.h" @@ -18,9 +19,6 @@ #include "m/m_vec.h" #include "m/types_m.h" -class SalbageRelated; - - // Ghidra: ActorObjectBase // size: 0x330 // vtable: 0x805015b8 @@ -54,7 +52,7 @@ public: /* 0x210 */ dLinkage_c mLinkage; /* 0x2B8 */ u32 mField_0x2B8; /* 0x2BC */ ActorLighting mLightingInfo; - /* 0x32C */ SalbageRelated *mpSalbageRelated; + /* 0x32C */ dSalvageIf_c *mpSalvageIf; public: mVec3_c &GetOldPosition() { diff --git a/src/d/a/d_a_salbage_obj.cpp b/src/d/a/d_a_salbage_obj.cpp index a26de1dc..2251e9b7 100644 --- a/src/d/a/d_a_salbage_obj.cpp +++ b/src/d/a/d_a_salbage_obj.cpp @@ -44,7 +44,7 @@ static const InteractionTargetDef sInteractionTargetDefs[] = { {0, 0, 1, EXAMINE_TALK, 0, 250.0f, 60.0f, 0.0f, -50.0f, 150.0f, 50.0f, 1.0f}, }; -void SalbageRelated::doDemoThrow() { +void dSalvageIfObj_c::doDemoThrow() { mpObj->mStateMgr.changeState(dAcSalbageObj_c::StateID_DemoThrow); } @@ -66,8 +66,8 @@ int dAcSalbageObj_c::actorExecute() { int dAcSalbageObj_c::preExecute() { // TODO - this matches, but so does `bool` conversion... int result = dAcObjBase_c::preExecute() == NOT_READY ? NOT_READY : SUCCEEDED; - if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalbageRelated.getSalvageObjId())) { - s32 id = mSalbageRelated.getSalvageObjId(); + if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalvageIf.getSalvageObjId())) { + s32 id = mSalvageIf.getSalvageObjId(); if (id != SALVAGE_OBJ_DIVINER_CRYSTAL && id != SALVAGE_OBJ_POT) { if (!EventManager::isInEvent()) { deleteRequest(); @@ -77,7 +77,7 @@ int dAcSalbageObj_c::preExecute() { } if (mBehavior == BEHAVIOR_STATIONARY) { - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalbageRelated.getSalvageObjId()) { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalvageIf.getSalvageObjId()) { if (!EventManager::isInEvent()) { deleteRequest(); } @@ -108,7 +108,7 @@ int dAcSalbageObj_c::preDraw() { if (dAcObjBase_c::preDraw() == NOT_READY) { return NOT_READY; } else { - return mSalbageRelated.isHidden() ? NOT_READY : SUCCEEDED; + return mSalvageIf.isHidden() ? NOT_READY : SUCCEEDED; } } @@ -142,9 +142,9 @@ void dAcSalbageObj_c::initSalbageObj() { mShadowRot.w = 180.0f; mScale.set(1.0f, 1.0f, 1.0f); mBehavior = getFromParams(4, 0xF); - mpSalbageRelated = &mSalbageRelated; + mpSalvageIf = &mSalvageIf; initCcAndBg(); - if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalbageRelated.getSalvageObjId())) { + if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalvageIf.getSalvageObjId())) { if (mBehavior == BEHAVIOR_CARRY && vt_0x80()) { mStateMgr.changeState(StateID_After); } else { @@ -156,12 +156,12 @@ void dAcSalbageObj_c::initSalbageObj() { forwardSpeed = 0.0f; velocity.set(0.0f, 0.0f, 0.0f); forwardAccel = 0.0f; - mSalbageRelated.setHidden(); - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalbageRelated.getSalvageObjId()) { + mSalvageIf.setHidden(); + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalvageIf.getSalvageObjId()) { mStateMgr.changeState(StateID_Kill); return; } else { - mSalbageRelated.setCarried(); + mSalvageIf.setCarried(); mStateMgr.changeState(StateID_Carried); } break; @@ -174,7 +174,7 @@ void dAcSalbageObj_c::initSalbageObj() { break; } default: { - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalbageRelated.getSalvageObjId()) { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalvageIf.getSalvageObjId()) { mStateMgr.changeState(StateID_Kill); return; } else { @@ -203,7 +203,7 @@ void dAcSalbageObj_c::doInteraction(s32 arg) { } void dAcSalbageObj_c::addAttentionTargetIfNeeded() { - switch (mSalbageRelated.getSalvageObjId()) { + switch (mSalvageIf.getSalvageObjId()) { case SALVAGE_OBJ_WATER_JAR: case SALVAGE_OBJ_POT: return; default: addAttentionTarget(); break; @@ -212,10 +212,10 @@ void dAcSalbageObj_c::addAttentionTargetIfNeeded() { void dAcSalbageObj_c::addAttentionTarget() { AttentionManager::sInstance->addTarget( - *this, sInteractionTargetDefs[mSalbageRelated.getSalvageObjId()], 0, nullptr + *this, sInteractionTargetDefs[mSalvageIf.getSalvageObjId()], 0, nullptr ); - InteractionTargetDef copy = sInteractionTargetDefs[mSalbageRelated.getSalvageObjId()]; + InteractionTargetDef copy = sInteractionTargetDefs[mSalvageIf.getSalvageObjId()]; copy.field_0x00 = 1; AttentionManager::sInstance->addTarget(*this, copy, 0, nullptr); } @@ -236,14 +236,14 @@ bool dAcSalbageObj_c::shouldBeActiveDowsingTarget() const { return false; } - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalbageRelated.getSalvageObjId()) { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalvageIf.getSalvageObjId()) { return false; } if (dSalvageMgr_c::sInstance->hasDowsingForSalvageObj(this) == false) { return false; } else { - return mSalbageRelated.getSalvageObjId() != SALVAGE_OBJ_POT; + return mSalvageIf.getSalvageObjId() != SALVAGE_OBJ_POT; } } @@ -266,7 +266,7 @@ void dAcSalbageObj_c::calcMtxFromSalbageNpc(mMtx_c &ret) { ret.ZXYrotM(rotation); } else { ret = npc->getCarriedObjMtx(); - mMtx_c rotMtx = dSalvageMgr_c::sInstance->getCarryRotMtx2(mSalbageRelated.getSalvageObjId()); + mMtx_c rotMtx = dSalvageMgr_c::sInstance->getCarryRotMtx2(mSalvageIf.getSalvageObjId()); MTXConcat(ret, rotMtx, ret); ret.getTranslation(position); } @@ -274,7 +274,7 @@ void dAcSalbageObj_c::calcMtxFromSalbageNpc(mMtx_c &ret) { mMtx_c dAcSalbageObj_c::calcWorldMtx() { mMtx_c ret; - if (mSalbageRelated.isCarried()) { + if (mSalvageIf.isCarried()) { calcMtxFromSalbageNpc(ret); } else { ret.transS(position); @@ -317,7 +317,7 @@ void dAcSalbageObj_c::initializeState_Wait() { mIsDowsingRegistered = true; } void dAcSalbageObj_c::executeState_Wait() { - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalbageRelated.getSalvageObjId()) { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalvageIf.getSalvageObjId()) { if (!dSalvageMgr_c::sInstance->mSlbRef.isLinked()) { mVec3_c pos(position.x, position.y + 100000.0f, position.z); dAcObjBase_c::create(fProfile::NPC_SLB, roomid, 0xFFFFFD01, &pos, nullptr, nullptr, -1); @@ -376,7 +376,7 @@ void dAcSalbageObj_c::initializeState_DemoThrow() { mBgObjAcch.SetRoofNone(); mBgObjAcch.SetGndThinCellingOff(); mBgAcchCir.SetWall(0.0f, 100.0f); - mSalbageRelated.setNotCarried(); + mSalvageIf.setNotCarried(); } void dAcSalbageObj_c::executeState_DemoThrow() {} void dAcSalbageObj_c::finalizeState_DemoThrow() {}