diff --git a/config/SOUE01/rels/d_a_b_lastbossNP/symbols.txt b/config/SOUE01/rels/d_a_b_lastbossNP/symbols.txt index 37f81471..16799fb3 100644 --- a/config/SOUE01/rels/d_a_b_lastbossNP/symbols.txt +++ b/config/SOUE01/rels/d_a_b_lastbossNP/symbols.txt @@ -30,8 +30,8 @@ doDelete__14dAcBlastboss_cFv = .text:0x000015A0; // type:function size:0x34 actorExecute__14dAcBlastboss_cFv = .text:0x000015E0; // type:function size:0x17A8 executeState__83sStateMgr_c<14dAcBlastboss_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00002D90; // type:function size:0x10 getStateID__83sStateMgr_c<14dAcBlastboss_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00002DA0; // type:function size:0x10 -ChkAtHit__10dCcD_CheckFv = .text:0x00002DB0; // type:function size:0x48 -ChkTgHit__10dCcD_CheckFv = .text:0x00002E00; // type:function size:0x4C +ChkAtHit__8cCcD_ObjFv = .text:0x00002DB0; // type:function size:0x48 +ChkTgHit__8cCcD_ObjFv = .text:0x00002E00; // type:function size:0x4C timingB__Q214dAcBlastboss_c10callback_cFUlPQ34nw4r3g3d13WorldMtxManipQ34nw4r3g3d6ResMdl = .text:0x00002E50; // type:function size:0x85C initializeState_Fight__14dAcBlastboss_cFv = .text:0x000036B0; // type:function size:0xBC executeState_Fight__14dAcBlastboss_cFv = .text:0x00003770; // type:function size:0x718 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 41c3fdef..3fefff01 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -18794,8 +18794,8 @@ ChkTgBit23__8cCcD_ObjCFv = .text:0x80328E80; // type:function size:0xC ChkTgBit20__8cCcD_ObjCFv = .text:0x80328E90; // type:function size:0xC ChkTgBit24__8cCcD_ObjCFv = .text:0x80328EA0; // type:function size:0xC ChkTgBit25__8cCcD_ObjCFv = .text:0x80328EB0; // type:function size:0xC -GetTgSoundID__8cCcD_ObjCFv = .text:0x80328EC0; // type:function size:0x8 -GetTg_0x6A__8cCcD_ObjCFv = .text:0x80328ED0; // type:function size:0x8 +GetTgAtCutDir__8cCcD_ObjCFv = .text:0x80328EC0; // type:function size:0x8 +GetTgAtCutAng__8cCcD_ObjCFv = .text:0x80328ED0; // type:function size:0x8 ChkTgBit8__8cCcD_ObjCFv = .text:0x80328EE0; // type:function size:0xC GetTg_0x4A__8cCcD_ObjCFv = .text:0x80328EF0; // type:function size:0x8 GetTgActor__8cCcD_ObjFv = .text:0x80328F00; // type:function size:0x8 diff --git a/include/d/a/b/d_a_b_lastboss.h b/include/d/a/b/d_a_b_lastboss.h index 3adbcf20..a76701d3 100644 --- a/include/d/a/b/d_a_b_lastboss.h +++ b/include/d/a/b/d_a_b_lastboss.h @@ -10,6 +10,7 @@ #include "m/m3d/m_smdl.h" #include "m/m_angle.h" #include "m/m_vec.h" +#include "nw4r/math/math_arithmetic.h" #include "s/s_State.hpp" #include "toBeSorted/d_emitter.h" #include "toBeSorted/d_enemy_sword_mdl.h" @@ -42,6 +43,10 @@ struct UnkLastBossCcSph2 { /* 0x08C */ mVec3_c field_0x08C[10]; /* 0x104 */ mVec3_c field_0x104[10]; /* 0x17C */ dCcD_Linked mCc; + + f32 getAbs_0x010() const { + return nw4r::math::FAbs(field_0x010); + } }; class dAcBlastboss_c : public dAcEnBase_c { @@ -297,6 +302,11 @@ public: STATE_FUNC_DECLARE(dAcBlastboss_c, Stun); STATE_FUNC_DECLARE(dAcBlastboss_c, ThunderWait); + STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcBlastboss_c); + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcBlastboss_c); + STATE_MGR_DEFINE_UTIL_ISSTATE(dAcBlastboss_c); + STATE_MGR_DEFINE_UTIL_GETSTATEID(dAcBlastboss_c); + private: void setAnm(const char *anim, f32 blend); void forceSetAnm(const char *anim, f32 blend); diff --git a/include/d/col/c/c_cc_d.h b/include/d/col/c/c_cc_d.h index a6165353..6c701aeb 100644 --- a/include/d/col/c/c_cc_d.h +++ b/include/d/col/c/c_cc_d.h @@ -328,7 +328,7 @@ struct cCcD_SrcGObjTg { /* 0x04 */ u32 mSPrm; /* 0x08 */ cCcD_SrcGObjTgInfo mInfo; /* 0x0C */ u16 field_0x0C; - /* 0x0E */ u16 field_0x0E; + /* 0x0E */ u16 mCutDir; // cCcD_CutDir }; enum dCcD_ObjAtType { @@ -386,7 +386,21 @@ struct cCcD_SrcGObjAtInfo { enum cCcD_AtSPrm { AT_SPRM_DAMAGE = 0x4, }; +enum cCcD_CutDir { + CUT_DIR_NONE = 0, + CUT_DIR_U = (1 << 0), // 0x0001 + CUT_DIR_LU = (1 << 1), // 0x0002 + CUT_DIR_L = (1 << 2), // 0x0004 + CUT_DIR_LD = (1 << 3), // 0x0008 + CUT_DIR_D = (1 << 4), // 0x0010 + CUT_DIR_RD = (1 << 5), // 0x0020 + CUT_DIR_R = (1 << 6), // 0x0040 + CUT_DIR_RU = (1 << 7), // 0x0080 + CUT_DIR_STAB = (1 << 8), // 0x0100 + CUT_DIR_ALL = + (CUT_DIR_U | CUT_DIR_LU | CUT_DIR_L | CUT_DIR_LD | CUT_DIR_D | CUT_DIR_RD | CUT_DIR_R | CUT_DIR_RU | CUT_DIR_STAB) +}; struct cCcD_SrcGObjAt { /* 0x00 */ u32 mType; /* 0x04 */ u32 mSPrm; @@ -395,8 +409,8 @@ struct cCcD_SrcGObjAt { /* 0x0D */ u8 field_0xD; /* 0x0E */ u8 field_0xE; /* 0x0F */ u8 field_0xF; - /* 0x10 */ u16 field_0x10; - /* 0x12 */ s16 field_0x12; + /* 0x10 */ u16 mCutDir; // cCcD_CutDir + /* 0x12 */ s16 mCutAng; }; struct cCcD_SrcGObjCo { @@ -595,12 +609,12 @@ public: return mAtHitSrc.mType; } - void SetFlag_0xA(u16 flag) { - mSrc.field_0x0E = flag; + void SetCutDir(u16 flag) { + mSrc.mCutDir = flag; } - u16 GetFlag_0xA(u16 mask) const { - return mSrc.field_0x0E & mask; + u16 ChkCutDir(u16 mask) const { + return mSrc.mCutDir & mask; } void ClrSet() { OffSPrm(1); @@ -816,8 +830,8 @@ public: bool ChkTgBit23() const; bool ChkTgBit24() const; bool ChkTgBit25() const; - s32 GetTgSoundID() const; - s16 GetTg_0x6A() const; + s32 GetTgAtCutDir() const; + s16 GetTgAtCutAng() const; bool ChkTgBit8() const; u8 GetTg_0x4A() const; dAcObjBase_c *GetTgActor(); @@ -879,10 +893,8 @@ public: void SetAtRpm(u32 f) { mAt.SetRPrm(f); } - - // Related to directional attacks? - void SetTgFlag_0xA(u16 flag) { - mTg.SetFlag_0xA(flag); + void SetTgCutDir(u16 flag) { + mTg.SetCutDir(flag); } void SetTgSrcField_0x0C(u16 val) { diff --git a/include/d/d_cc.h b/include/d/d_cc.h index 7da5092d..8619e1e3 100644 --- a/include/d/d_cc.h +++ b/include/d/d_cc.h @@ -55,13 +55,6 @@ public: void foreachCc(ccCbFunc f, void *cbArg) const; void foreachCc2(ccCbFunc f, void *cbArg) const; - // This find function is used by a lot of other - // TUs, all of which own the function passed as - // a ptmf. It's not immediately clear how this works, - // does every actor subclass the LinkedCollider___, - // or are the functions all added here for the other - // files to implement? d_a_b_lastboss commits a typing crime here - // to make it work... typedef bool (cCcD_Obj::*ccPtmf)(); cCcD_Obj *find(ccPtmf f) const; diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h index 4c1e77a2..3506940c 100644 --- a/include/d/d_player_act.h +++ b/include/d/d_player_act.h @@ -468,19 +468,6 @@ public: ATTACK_FINAL_BLOW = 11, }; - enum SpecificPlayerAttackDirection_e { - /* 0x000 */ ATTACK_DIRECTION_NONE = 0, - /* 0x001 */ ATTACK_DIRECTION_DOWN = 1 << 0, - /* 0x002 */ ATTACK_DIRECTION_DOWNRIGHT = 1 << 1, - /* 0x004 */ ATTACK_DIRECTION_RIGHT = 1 << 2, - /* 0x008 */ ATTACK_DIRECTION_UPRIGHT = 1 << 3, - /* 0x010 */ ATTACK_DIRECTION_UP = 1 << 4, - /* 0x020 */ ATTACK_DIRECTION_UPLEFT = 1 << 5, - /* 0x040 */ ATTACK_DIRECTION_LEFT = 1 << 6, - /* 0x080 */ ATTACK_DIRECTION_DOWNLEFT = 1 << 7, - /* 0x100 */ ATTACK_DIRECTION_STAB = 1 << 8, - }; - enum ModelUpdateFlags_e { UPDATE_MODEL_SWORD = 0x20, UPDATE_MODEL_SHIELD = 0x40, diff --git a/src/REL/d/a/b/d_a_b_lastboss.cpp b/src/REL/d/a/b/d_a_b_lastboss.cpp index b93d5546..b0e68a20 100644 --- a/src/REL/d/a/b/d_a_b_lastboss.cpp +++ b/src/REL/d/a/b/d_a_b_lastboss.cpp @@ -58,13 +58,13 @@ STATE_DEFINE(dAcBlastboss_c, ThunderWait); static dCcD_SrcCyl sSrcCyl1 = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BELLOWS | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000), 0x4103, {0, 0x4, 0x407}, 0x0, - 0x0}, + CUT_DIR_NONE}, /* mObjCo */ {0x0}}, /* mCylInf */ {40.f, 300.f} @@ -72,9 +72,8 @@ static dCcD_SrcCyl sSrcCyl1 = { static dCcD_SrcCyl sSrcCyl2 = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ - {AT_TYPE_BELLOWS, 0x103, {0, 0x4, 0x407}, 0x0, 0x0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {AT_TYPE_BELLOWS, 0x103, {0, 0x4, 0x407}, 0x0, CUT_DIR_NONE}, /* mObjCo */ {0x0}}, /* mCylInf */ {70.f, 30.f} @@ -82,9 +81,8 @@ static dCcD_SrcCyl sSrcCyl2 = { static dCcD_SrcCyl sSrcCyl3 = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ - {0x0, 0x0, {0, 0x0, 0x407}, 0x0, 0x0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {0x0, 0x0, {0, 0x0, 0x407}, 0x0, CUT_DIR_NONE}, /* mObjCo */ {0xE5}}, /* mCylInf */ {100.f, 250.f} @@ -92,9 +90,8 @@ static dCcD_SrcCyl sSrcCyl3 = { static dCcD_SrcSph sSrcSph1 = { /* mObjInf */ - {/* mObjAt */ {AT_TYPE_DAMAGE, 0x2008D, {0, 0, 0}, 4, 0, 0, 0, 0, 0}, - /* mObjTg */ - {0, 0, {0, 0x0, 0x407}, 0, 0}, + {/* mObjAt */ {AT_TYPE_DAMAGE, 0x2008D, {0, 0, 0}, 4, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {0, 0, {0, 0x0, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0}}, /* mSphInf */ {100.0f} @@ -102,9 +99,8 @@ static dCcD_SrcSph sSrcSph1 = { static dCcD_SrcSph sSrcSph2 = { /* mObjInf */ - {/* mObjAt */ {AT_TYPE_DAMAGE, 0x22008D, {0, 0, 4}, 8, 0, 0, 0, 0, 0}, - /* mObjTg */ - {AT_TYPE_0x800000 | AT_TYPE_BUGNET, 0x103, {0, 0x19, 0x407}, 0, 0}, + {/* mObjAt */ {AT_TYPE_DAMAGE, 0x22008D, {0, 0, 4}, 8, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {AT_TYPE_0x800000 | AT_TYPE_BUGNET, 0x103, {0, 0x19, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0}}, /* mSphInf */ {100.0f} @@ -112,9 +108,8 @@ static dCcD_SrcSph sSrcSph2 = { static dCcD_SrcSph sSrcSph = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ - {AT_TYPE_BELLOWS, 0x4103, {0, 0x0, 0x40F}, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {AT_TYPE_BELLOWS, 0x4103, {0, 0x0, 0x40F}, 0, CUT_DIR_NONE}, /* mObjCo */ {0}}, /* mSphInf */ {30.0f} @@ -212,7 +207,7 @@ int dAcBlastboss_c::create() { mMaxSpeed = -80.0f; mBoundingBox.Set(mVec3_c(-200.0f, -300.0f, -200.0f), mVec3_c(200.0f, 300.0f, 200.0f)); - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); field_0x1132 = true; mCounter = cM::rndF(65536.0f); @@ -309,7 +304,7 @@ int dAcBlastboss_c::actorExecute() { checkDamage(); if (mpSwordBattleGame == nullptr || mpSwordBattleGame->checkFightStarted() == true) { - mStateMgr.executeState(); + executeState(); } mRotation.x = mAngle.x; @@ -444,7 +439,7 @@ int dAcBlastboss_c::actorExecute() { nodeMtx.YrotS(mRotation.y); mVec3_c tmpCc; - if (link->isAttacking() && mStateMgr.isState(StateID_Guard)) { + if (link->isAttacking() && isState(StateID_Guard)) { if (mGuardDirection == GUARD_BT) { tmpCc.x = 0.0f; tmpCc.y = 0.0f; @@ -461,7 +456,7 @@ int dAcBlastboss_c::actorExecute() { tmpCc.z = 130.0f; } mCc1.SetR(20.0f); - } else if (mStateMgr.isState(StateID_ThunderWait)) { + } else if (isState(StateID_ThunderWait)) { tmpCc.set(0.0f, 0.0f, 0.0f); mCc1.SetR(150.0f); } else { @@ -704,7 +699,7 @@ int dAcBlastboss_c::actorExecute() { MTXMultVec(rotMtx, v3, v3); mAttackKnockbackX = v3.x; mAttackKnockbackZ = v3.z; - mStateMgr.changeState(StateID_Stun); + changeState(StateID_Stun); } } mLightInfo.mPos = mThunderBeamPosition; @@ -755,7 +750,7 @@ int dAcBlastboss_c::actorExecute() { SceneflagManager *mgr = SceneflagManager::sInstance; if (mgr != nullptr) { - if (mStateMgr.isState(StateID_ThunderWait)) { + if (isState(StateID_ThunderWait)) { mgr->setFlag(getRoomId(), mThunderWaitSceneFlag); } else { mgr->unsetFlag(getRoomId(), mThunderWaitSceneFlag); @@ -773,25 +768,6 @@ int dAcBlastboss_c::actorExecute() { return SUCCEEDED; } -struct dCcD_Check : public cCcD_Obj { - bool ChkAtHit(); - bool ChkTgHit(); -}; - -bool dCcD_Check::ChkAtHit() { - if (cCcD_Obj::ChkAtHit()) { - return true; - } - return false; -} - -bool dCcD_Check::ChkTgHit() { - if (cCcD_Obj::ChkTgHit()) { - return true; - } - return false; -} - void dAcBlastboss_c::callback_c::timingB(u32 nodeId, nw4r::g3d::WorldMtxManip *manip, nw4r::g3d::ResMdl mdl) { u32 baseNodeIdSkirt = 0; u32 baseNodeIdHair = 0; @@ -1006,7 +982,7 @@ void dAcBlastboss_c::executeState_Fight() { if (mXZDistanceToLink < 200.0f) { field_0x1180++; if (field_0x1180 > 40) { - mStateMgr.changeState(StateID_PunchAttack); + changeState(StateID_PunchAttack); return; } } else if (mXZDistanceToLink >= puVar2 + 200.0f && mTimers[TIMER_0] == 0) { @@ -1047,7 +1023,7 @@ void dAcBlastboss_c::executeState_Fight() { } else if (!link->isRecovering()) { field_0x117E++; if (field_0x117E > 70) { - mStateMgr.changeState(StateID_DashAttack); + changeState(StateID_DashAttack); return; } } else { @@ -1115,10 +1091,9 @@ void dAcBlastboss_c::executeState_Fight() { checkForCloseRangeAttack(); checkForCounter(); } - mCc1.SetTgFlag_0xA(0x1FF); + mCc1.SetTgCutDir(CUT_DIR_ALL); } else { - // TODO - mCc1.SetTgFlag_0xA(0); + mCc1.SetTgCutDir(CUT_DIR_NONE); } if (mTimers[TIMER_4] == 1) { @@ -1154,13 +1129,12 @@ void dAcBlastboss_c::executeState_Attack() { dAcPy_c *link = dAcPy_c::GetLinkM(); field_0x1131 = 1; f32 speed = 0.0f; - // TODO major typing crime here but I'm not sure how this actually works - cCcD_Obj *atHit = mSwordMdl.mCcList.find((dColliderLinkedList::ccPtmf)&dCcD_Check::ChkAtHit); + cCcD_Obj *atHit = mSwordMdl.mCcList.findAtHit(); switch (mSubState) { case SUB_STATE_0: { if (field_0x1152 >= 15 && mMdl.getAnm().checkFrame(7.0f) && cM::rnd() < 0.1f) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); field_0x113F = 20; } else { if (mMdl.getAnm().getFrame() < 20.0f) { @@ -1188,7 +1162,7 @@ void dAcBlastboss_c::executeState_Attack() { } case SUB_STATE_1: { if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } break; } @@ -1201,17 +1175,17 @@ void dAcBlastboss_c::executeState_Attack() { if (field_0x113E != 0) { if (mIsPhaseTwo) { mSubState = SUB_STATE_0; - mStateMgr.changeState(StateID_CounterAttack); + changeState(StateID_CounterAttack); return; } - mCc1.SetTgFlag_0xA(0); + mCc1.SetTgCutDir(CUT_DIR_NONE); } else { if (mpCurrentAnm == "AttackR") { - mCc1.SetTgFlag_0xA(0xE); + mCc1.SetTgCutDir(CUT_DIR_LD | CUT_DIR_L | CUT_DIR_LU); } else if (mpCurrentAnm == "AttackL") { - mCc1.SetTgFlag_0xA(0xE0); + mCc1.SetTgCutDir(CUT_DIR_RD | CUT_DIR_R | CUT_DIR_RU); } else { - mCc1.SetTgFlag_0xA(0x1); + mCc1.SetTgCutDir(CUT_DIR_U); } } checkForCounter(); @@ -1261,7 +1235,7 @@ void dAcBlastboss_c::executeState_CounterAttack() { int targetFrame = 42; if (mMdl.getAnm().checkFrame(targetFrame) && mXZDistanceToLink > 400.0f) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); return; } if (mMdl.getAnm().getFrame() >= 52.0f) { @@ -1285,18 +1259,18 @@ void dAcBlastboss_c::executeState_CounterAttack() { if (link->checkCurrentAction(/* BACKFLIP */ 0x62)) { field_0x113E = 20; } - mCc1.SetTgFlag_0xA(0); + mCc1.SetTgCutDir(CUT_DIR_NONE); if (field_0x113E != 0) { field_0x1142 = 0; field_0x1134 = 0; } else if (b) { - mCc1.SetTgFlag_0xA(0x1FF); + mCc1.SetTgCutDir(CUT_DIR_ALL); field_0x1142 = 0; checkForCounter(); } if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } mSpeed = speed; } @@ -1310,7 +1284,7 @@ void dAcBlastboss_c::initializeState_PunchAttack() { void dAcBlastboss_c::executeState_PunchAttack() { f32 speed = 0.0f; field_0x1131 = 1; - mCc1.SetTgFlag_0xA(0); + mCc1.SetTgCutDir(CUT_DIR_NONE); sLib::addCalcAngle(mAngle.y.ref(), mYAngleToLink, 2, 0x800); if (mMdl.getAnm().getFrame() < 15.0f) { speed = -10.0f; @@ -1325,7 +1299,7 @@ void dAcBlastboss_c::executeState_PunchAttack() { field_0x1139 = 0; } if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } mSpeed = speed; } @@ -1340,12 +1314,12 @@ void dAcBlastboss_c::executeState_DashAttack() { field_0x1131 = 1; f32 targetSpeed = 0.0f; f32 stepSize = 40.0f; // never set differently - mCc1.SetTgFlag_0xA(0x1FF); + mCc1.SetTgCutDir(CUT_DIR_ALL); sLib::addCalcAngle(mAngle.y.ref(), mYAngleToLink, 2, 0x1000); switch (mSubState) { case SUB_STATE_0: { if (mXZDistanceToLink < 400.0f) { - mStateMgr.changeState(StateID_CounterAttack); + changeState(StateID_CounterAttack); return; } setAnm("AttackJumpStart", 5.0f); @@ -1373,7 +1347,7 @@ void dAcBlastboss_c::executeState_DashAttack() { setAnm("AttackJumpEnd", 0.0f); mSubState = SUB_STATE_3; } else if (mTimers[TIMER_0] == 0) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } break; } @@ -1389,7 +1363,7 @@ void dAcBlastboss_c::executeState_DashAttack() { } if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } break; } @@ -1415,7 +1389,7 @@ void dAcBlastboss_c::executeState_SmallAttack() { field_0x1131 = 1; f32 targetSpeed = 0.0f; - mCc1.SetTgFlag_0xA(0); + mCc1.SetTgCutDir(CUT_DIR_NONE); switch (mSubState) { case SUB_STATE_0: { if (mMdl.getAnm().getFrame() >= 31.0f && mMdl.getAnm().getFrame() <= 33.0f) { @@ -1438,7 +1412,7 @@ void dAcBlastboss_c::executeState_SmallAttack() { } if (mMdl.getAnm().checkFrame(44.0f) && mSubState != SUB_STATE_1) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mpCurrentAnm = nullptr; setAnm("WaitBt", 40.0f); field_0x113E = 10; @@ -1452,7 +1426,7 @@ void dAcBlastboss_c::executeState_SmallAttack() { } if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } sLib::addCalcScaledDiff(&mSpeed, targetSpeed, 1.0f, 20.0f); @@ -1467,7 +1441,7 @@ void dAcBlastboss_c::initializeState_ThunderAttack() { void dAcBlastboss_c::executeState_ThunderAttack() { field_0x1131 = 1; f32 targetSpeed = 0.0f; - mCc1.SetTgFlag_0xA(0); + mCc1.SetTgCutDir(CUT_DIR_NONE); sLib::addCalcAngle(mAngle.y.ref(), mYAngleToLink, 2, 0x400); if (mMdl.getAnm().getFrame() >= 21.0f && mMdl.getAnm().getFrame() <= 25.0f) { mSwordMdl.enable(); @@ -1494,7 +1468,7 @@ void dAcBlastboss_c::executeState_ThunderAttack() { } } if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } sLib::addCalcScaledDiff(&mSpeed, targetSpeed, 1.0f, 5.0f); @@ -1516,16 +1490,16 @@ void dAcBlastboss_c::executeState_Guard() { }; static const u32 sGuardFlags[] = { - 0x8 | 0x4 | 0x2, - 0x8 | 0x4 | 0x2, - 0x10 | 0x8 | 0x4 | 0x2, - 0x80 | 0x40 | 0x20, - 0x80 | 0x40 | 0x20, - 0x80 | 0x40 | 0x20 | 0x10, - 0x80 | 0x2 | 0x1, - 0x20 | 0x10 | 0x8, - 0x100, - 0x100 | 0x80 | 0x40 | 0x20 | 0x10 | 0x8 | 0x4 | 0x2 | 0x1, + CUT_DIR_LD | CUT_DIR_L | CUT_DIR_LU, // GUARD_RIGHT + CUT_DIR_LD | CUT_DIR_L | CUT_DIR_LU, // GUARD_UPRIGHT + CUT_DIR_D | CUT_DIR_LD | CUT_DIR_L | CUT_DIR_LU, // GUARD_DOWNRIGHT + CUT_DIR_RU | CUT_DIR_R | CUT_DIR_RD, // GUARD_LEFT + CUT_DIR_RU | CUT_DIR_R | CUT_DIR_RD, // GUARD_UPLEFT + CUT_DIR_RU | CUT_DIR_R | CUT_DIR_RD | CUT_DIR_D, // GUARD_DOWNLEFT + CUT_DIR_RU | CUT_DIR_LU | CUT_DIR_U, // GUARD_UP + CUT_DIR_RD | CUT_DIR_D | CUT_DIR_LD, // GUARD_DOWN + CUT_DIR_STAB, // GUARD_CENTER + CUT_DIR_ALL, }; switch (mSubState) { @@ -1555,11 +1529,11 @@ void dAcBlastboss_c::executeState_Guard() { if (mGuardDirection == GUARD_BT) { field_0x1133 = 1; if (mTimers[TIMER_0] == 0) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mTimers[TIMER_4] = 15; } } else if (mMdl.getAnm().getFrame() >= 13.0f) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mTimers[TIMER_4] = 15; } @@ -1591,7 +1565,7 @@ void dAcBlastboss_c::executeState_Guard() { } case SUB_STATE_11: { if (mMdl.getAnm().getFrame() >= 13.0f) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mTimers[TIMER_4] = 15; } break; @@ -1607,21 +1581,21 @@ void dAcBlastboss_c::executeState_Guard() { setAnmRate(1.0f); if (link->isAttacking()) { switch (dAcPy_c::GetLinkM()->getSpecificAttackDirection()) { - case daPlayerActBase_c::ATTACK_DIRECTION_DOWN: mGuardDirection = GUARD_UP; break; - case daPlayerActBase_c::ATTACK_DIRECTION_LEFT: mGuardDirection = GUARD_LEFT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT: mGuardDirection = GUARD_UPLEFT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT: mGuardDirection = GUARD_DOWNLEFT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_RIGHT: mGuardDirection = GUARD_RIGHT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT: mGuardDirection = GUARD_UPRIGHT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT: mGuardDirection = GUARD_DOWNRIGHT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_UP: mGuardDirection = GUARD_DOWN; break; - default: mGuardDirection = GUARD_CENTER; break; + case CUT_DIR_U: mGuardDirection = GUARD_UP; break; + case CUT_DIR_R: mGuardDirection = GUARD_LEFT; break; + case CUT_DIR_RU: mGuardDirection = GUARD_UPLEFT; break; + case CUT_DIR_RD: mGuardDirection = GUARD_DOWNLEFT; break; + case CUT_DIR_L: mGuardDirection = GUARD_RIGHT; break; + case CUT_DIR_LU: mGuardDirection = GUARD_UPRIGHT; break; + case CUT_DIR_LD: mGuardDirection = GUARD_DOWNRIGHT; break; + case CUT_DIR_D: mGuardDirection = GUARD_DOWN; break; + default: mGuardDirection = GUARD_CENTER; break; } setAnm(sGuardNames[mGuardDirection], 3.0); } } - mCc1.SetTgFlag_0xA(sGuardFlags[mGuardDirection]); + mCc1.SetTgCutDir(sGuardFlags[mGuardDirection]); checkForRangeAttack(); } void dAcBlastboss_c::finalizeState_Guard() {} @@ -1629,13 +1603,9 @@ void dAcBlastboss_c::finalizeState_Guard() {} void dAcBlastboss_c::initializeState_GuardBreak() { s32 side; s32 attackDir = dAcPy_c::GetLinkM()->getSpecificAttackDirection(); - if (attackDir == daPlayerActBase_c::ATTACK_DIRECTION_LEFT || - attackDir == daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT || - attackDir == daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT) { + if (attackDir == CUT_DIR_R || attackDir == CUT_DIR_RU || attackDir == CUT_DIR_RD) { side = 0; - } else if (attackDir == daPlayerActBase_c::ATTACK_DIRECTION_RIGHT || - attackDir == daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT || - attackDir == daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT) { + } else if (attackDir == CUT_DIR_L || attackDir == CUT_DIR_LU || attackDir == CUT_DIR_LD) { side = 1; } else { side = (s32)cM::rndF(1.99f); @@ -1651,7 +1621,7 @@ void dAcBlastboss_c::initializeState_GuardBreak() { } void dAcBlastboss_c::executeState_GuardBreak() { if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mTimers[TIMER_4] = 15; } @@ -1659,7 +1629,7 @@ void dAcBlastboss_c::executeState_GuardBreak() { mSpeed = -30.0f; } sLib::addCalcScaled(&mSpeed, 1.0f, 4.0f); - mCc1.SetTgFlag_0xA(0x1FF); + mCc1.SetTgCutDir(CUT_DIR_ALL); checkForCounter(); } void dAcBlastboss_c::finalizeState_GuardBreak() {} @@ -1676,13 +1646,13 @@ void dAcBlastboss_c::executeState_Damage() { dAcPy_c *link = dAcPy_c::GetLinkM(); sLib::addCalcScaled(&mSpeed, 1.0f, 2.0f); if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mTimers[TIMER_4] = 15; mTimers[TIMER_2] = 0; } field_0x113E = 0; if (mIsPhaseTwo == 0 && !link->isAttackingSpin()) { - mCc1.SetTgFlag_0xA(0x1FF); + mCc1.SetTgCutDir(CUT_DIR_ALL); } checkForCounter(); } @@ -1718,11 +1688,11 @@ void dAcBlastboss_c::executeState_SitDamage() { } case SUB_STATE_2: { if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mTimers[TIMER_4] = 15; } checkForCounter(); - mCc1.SetTgFlag_0xA(0x1FF); + mCc1.SetTgCutDir(CUT_DIR_ALL); return; } case SUB_STATE_5: { @@ -1749,7 +1719,7 @@ void dAcBlastboss_c::executeState_SitDamage() { } } } - mCc1.SetTgFlag_0xA(0); + mCc1.SetTgCutDir(CUT_DIR_NONE); } void dAcBlastboss_c::finalizeState_SitDamage() {} @@ -1863,7 +1833,7 @@ void dAcBlastboss_c::executeState_Down() { field_0x1131 = 2; } if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mTimers[TIMER_4] = 15; } break; @@ -1894,10 +1864,10 @@ void dAcBlastboss_c::executeState_Down() { mSubState = SUB_STATE_20; } else { if (field_0x113B >= 3 && mXZDistanceToLink < 500.0f) { - mStateMgr.changeState(StateID_Attack); + changeState(StateID_Attack); mMdl.setFrame(10.0f); } else { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mTimers[TIMER_4] = 15; } } @@ -1923,7 +1893,7 @@ void dAcBlastboss_c::executeState_Down() { case SUB_STATE_21: { mIsDown = false; if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); mTimers[TIMER_4] = 15; mLightingStrikeState = LIGHTNING_STRIKE_FINISH; } @@ -1988,7 +1958,7 @@ void dAcBlastboss_c::executeState_Stun() { } } if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } break; } @@ -1996,13 +1966,13 @@ void dAcBlastboss_c::executeState_Stun() { sLib::addCalcScaled(&mSpeed, 1.0f, 10.0f); if (mChanceAttackCounter >= 7) { - mCc1.SetTgFlag_0xA(0x1FF); + mCc1.SetTgCutDir(CUT_DIR_ALL); checkForCounter(); } else { if (mInvulnerabilityTimerMaybe != 0) { - mCc1.SetTgFlag_0xA(0x1FF); + mCc1.SetTgCutDir(CUT_DIR_ALL); } else { - mCc1.SetTgFlag_0xA(0); + mCc1.SetTgCutDir(CUT_DIR_NONE); } } } @@ -2016,7 +1986,7 @@ void dAcBlastboss_c::initializeState_ThunderWait() { } void dAcBlastboss_c::executeState_ThunderWait() { dAcPy_c *link = dAcPy_c::GetLinkM(); - mCc1.SetTgFlag_0xA(0); + mCc1.SetTgCutDir(CUT_DIR_NONE); switch (mSubState) { case SUB_STATE_0: { @@ -2028,7 +1998,7 @@ void dAcBlastboss_c::executeState_ThunderWait() { } case SUB_STATE_1: { if (link->checkSwordAndMoreStates(0x400000)) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } else if (mTimers[TIMER_0] == 0) { dLightEnv_c::GetPInstance()->setField_0x38DC(7); mSubState = SUB_STATE_5; @@ -2051,11 +2021,11 @@ void dAcBlastboss_c::executeState_ThunderWait() { } case SUB_STATE_5: { if (mMdl.getAnm().getFrame() >= 20.0f) { - mCc1.SetTgFlag_0xA(0x1FF); + mCc1.SetTgCutDir(CUT_DIR_ALL); checkForCounter(); } if (mMdl.getAnm().isStop()) { - mStateMgr.changeState(StateID_Fight); + changeState(StateID_Fight); } break; } @@ -2070,25 +2040,21 @@ bool dAcBlastboss_c::checkDamage() { mMtx_c mtx; mHealth = 400; - // TODO: typing crime - cCcD_Obj *atHit = mSwordMdl.mCcList.find((dColliderLinkedList::ccPtmf)&dCcD_Check::ChkAtHit); + cCcD_Obj *atHit = mSwordMdl.mCcList.findAtHit(); if (atHit != nullptr && atHit->GetAtFlag0x8()) { field_0x113E = 20; } if (sLib::calcTimer(&field_0x1134) == 0) { - // TODO: regswap between unk and link. - // Making this a u16 or s16 fixes regalloc but breaks instructions... s32 unk = someEnemyDamageCollisionStuffMaybe(mCcList, nullptr); - // TODO: typing crime - cCcD_Obj *tgHit = mCcList.find((dColliderLinkedList::ccPtmf)&dCcD_Check::ChkTgHit); + cCcD_Obj *tgHit = mCcList.findTgHit(); if (tgHit == nullptr) { return false; } - dAcPy_c *link = dAcPy_c::GetLinkM(); - s32 mLastAttackDirection = link->getSpecificAttackDirection(); + s32 mLastAttackDirection = dAcPy_c::GetLinkM()->getSpecificAttackDirection(); + const dAcPy_c *link = dAcPy_c::GetLink(); // TODO: enum? switch (unk) { @@ -2106,19 +2072,19 @@ bool dAcBlastboss_c::checkDamage() { MTXMultVec(mtx, v, v2); mAttackKnockbackX = v2.x; mAttackKnockbackZ = v2.z; - mStateMgr.changeState(StateID_Stun); + changeState(StateID_Stun); break; } if (tgHit->ChkTgAtHitType(AT_TYPE_0x800000)) { mGuardDirection = GUARD_UP; - mStateMgr.changeState(StateID_Guard); + changeState(StateID_Guard); break; } mMdlCallback.field_0x04.set(7); if (field_0x113F != 0) { mSubState = SUB_STATE_1; - mStateMgr.changeState(StateID_CounterAttack); + changeState(StateID_CounterAttack); break; } else if (mGuardDirection == GUARD_BT) { if (classifyAttackDirection(mLastAttackDirection) == classifyAttackDirection(mLastAttackDir)) { @@ -2128,7 +2094,7 @@ bool dAcBlastboss_c::checkDamage() { } if (mNumConsecutiveSameDirectionAttacks >= 2) { mSubState = SUB_STATE_1; - mStateMgr.changeState(StateID_CounterAttack); + changeState(StateID_CounterAttack); break; } @@ -2142,7 +2108,7 @@ bool dAcBlastboss_c::checkDamage() { mMdlCallback.field_0x18 -= 0x7D0; } if (mNumConsecutiveOppositeDirectionAttacks >= 1) { - mStateMgr.changeState(StateID_GuardBreak); + changeState(StateID_GuardBreak); } } else if (mLastAttackDir >= 0) { if (classifyAttackDirection(mLastAttackDirection) == classifyAttackDirection(mLastAttackDir)) { @@ -2158,7 +2124,7 @@ bool dAcBlastboss_c::checkDamage() { (mSecondLastAttackDirection >= 0 && (classifyAttackDirection(mSecondLastAttackDirection) & 2) == (classifyAttackDirection(mLastAttackDirection) & 2))) { mSubState = SUB_STATE_0; - mStateMgr.changeState(StateID_CounterAttack); + changeState(StateID_CounterAttack); } else { if (mNumConsecutiveOppositeDirectionAttacks >= 1) { field_0x113E = 25; @@ -2186,7 +2152,7 @@ bool dAcBlastboss_c::checkDamage() { tgHit->ChkTgAtHitType(AT_TYPE_BOMB) || tgHit->ChkTgAtHitType(AT_TYPE_ARROW) || tgHit->ChkTgAtHitType(AT_TYPE_WHIP) || tgHit->ChkTgAtHitType(AT_TYPE_0x40))) { mGuardDirection = GUARD_UP; - mStateMgr.changeState(StateID_Guard); + changeState(StateID_Guard); if (tgHit->ChkTgAtHitType(AT_TYPE_BOMB)) { field_0x11A4 = 30.0f; @@ -2212,7 +2178,7 @@ bool dAcBlastboss_c::checkDamage() { MTXMultVec(mtx, v, v2); mAttackKnockbackX = v2.x; mAttackKnockbackZ = v2.z; - mStateMgr.changeState(StateID_Stun); + changeState(StateID_Stun); break; } @@ -2224,22 +2190,22 @@ bool dAcBlastboss_c::checkDamage() { if (mIsPhaseTwo >= 0) { if (field_0x1152 == 30) { dStageMgr_c::GetInstance()->fn_80199B60(4); - mStateMgr.changeState(StateID_Down); + changeState(StateID_Down); mLightingStrikeState = LIGHTNING_STRIKE_START_DEMO; startSound(SE_BLasBos_DownHit); break; } } else { if (field_0x1152 == 50) { - mStateMgr.changeState(StateID_Down); + changeState(StateID_Down); field_0x1152 = 45; break; } } - if ((!field_0x113E && (mStateMgr.isState(StateID_Attack) || mStateMgr.isState(StateID_SmallAttack) || - mStateMgr.isState(StateID_CounterAttack))) || - mStateMgr.isState(StateID_ThunderWait)) { + if ((!field_0x113E && + (isState(StateID_Attack) || isState(StateID_SmallAttack) || isState(StateID_CounterAttack))) || + isState(StateID_ThunderWait)) { field_0x1188 = 10; break; } @@ -2249,7 +2215,7 @@ bool dAcBlastboss_c::checkDamage() { break; } - if (mStateMgr.isState(StateID_Stun)) { + if (isState(StateID_Stun)) { mNumConsecutiveSameDirectionAttacks = 0; mSecondLastAttackDirection = mLastAttackDirection; mChanceAttackCounter++; @@ -2264,15 +2230,13 @@ bool dAcBlastboss_c::checkDamage() { field_0x1138 = 10; field_0x11B8 = 5.0f; field_0x11A4 = 7.0f; - if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_LEFT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT) { + if (mLastAttackDirection == CUT_DIR_R || mLastAttackDirection == CUT_DIR_RU || + mLastAttackDirection == CUT_DIR_RD) { field_0x1137 = 1; - } else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_RIGHT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT) { + } else if (mLastAttackDirection == CUT_DIR_L || mLastAttackDirection == CUT_DIR_LU || + mLastAttackDirection == CUT_DIR_LD) { field_0x1137 = 2; - } else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_STAB) { + } else if (mLastAttackDirection == CUT_DIR_STAB) { field_0x1137 = 3; } else { field_0x1137 = 0; @@ -2281,7 +2245,7 @@ bool dAcBlastboss_c::checkDamage() { break; } - if (mStateMgr.isState(StateID_SitDamage)) { + if (isState(StateID_SitDamage)) { mNumConsecutiveSameDirectionAttacks = 0; mSecondLastAttackDirection = mLastAttackDirection; mChanceAttackCounter++; @@ -2291,12 +2255,12 @@ bool dAcBlastboss_c::checkDamage() { mChanceAttackCounter = 0; field_0x1152 = 30; dStageMgr_c::GetInstance()->fn_80199B60(4); - mStateMgr.changeState(StateID_Down); + changeState(StateID_Down); mLightingStrikeState = LIGHTNING_STRIKE_START_DEMO; startSound(SE_BLasBos_DownHit); break; } - mStateMgr.changeState(StateID_Down); + changeState(StateID_Down); field_0x1152 = 45; break; } @@ -2310,15 +2274,13 @@ bool dAcBlastboss_c::checkDamage() { mAttackKnockbackZ = v2.z; field_0x11B8 = 5.0f; field_0x11A4 = 7.0f; - if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_LEFT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT) { + if (mLastAttackDirection == CUT_DIR_R || mLastAttackDirection == CUT_DIR_RU || + mLastAttackDirection == CUT_DIR_RD) { field_0x1137 = 1; - } else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_RIGHT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT) { + } else if (mLastAttackDirection == CUT_DIR_L || mLastAttackDirection == CUT_DIR_LU || + mLastAttackDirection == CUT_DIR_LD) { field_0x1137 = 2; - } else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWN) { + } else if (mLastAttackDirection == CUT_DIR_U) { field_0x1137 = 3; } else { field_0x1137 = 0; @@ -2329,10 +2291,10 @@ bool dAcBlastboss_c::checkDamage() { } if (mChanceAttackCounter >= 3) { - mStateMgr.changeState(StateID_SitDamage); + changeState(StateID_SitDamage); mChanceAttackCounter = 0; } else { - mStateMgr.changeState(StateID_Damage); + changeState(StateID_Damage); } mNumConsecutiveSameDirectionAttacks = -1; @@ -2347,15 +2309,13 @@ bool dAcBlastboss_c::checkDamage() { field_0x1138 = 10; field_0x11B8 = 5.0f; field_0x11A4 = 7.0f; - if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_LEFT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT) { + if (mLastAttackDirection == CUT_DIR_R || mLastAttackDirection == CUT_DIR_RU || + mLastAttackDirection == CUT_DIR_RD) { field_0x1137 = 1; - } else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_RIGHT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT || - mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT) { + } else if (mLastAttackDirection == CUT_DIR_L || mLastAttackDirection == CUT_DIR_LU || + mLastAttackDirection == CUT_DIR_LD) { field_0x1137 = 2; - } else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_STAB) { + } else if (mLastAttackDirection == CUT_DIR_STAB) { field_0x1137 = 3; } else { field_0x1137 = 0; @@ -2400,7 +2360,7 @@ bool dAcBlastboss_c::checkForCloseRangeAttack() { if (mXZDistanceToLink < 500.0f) { if (mIsPhaseTwo != 0) { if (mTimers[TIMER_2] == 0) { - mStateMgr.changeState(StateID_Attack); + changeState(StateID_Attack); ret = true; } } else { @@ -2410,14 +2370,14 @@ bool dAcBlastboss_c::checkForCloseRangeAttack() { mLinkCloseRangeShieldTime = 0; } if (mLinkCloseRangeShieldTime > 40) { - mStateMgr.changeState(StateID_PunchAttack); + changeState(StateID_PunchAttack); ret = true; } else if (mTimers[TIMER_2] == 0) { if (checkForLinkSwordBySwordHit() && cM::rnd() < 0.35f) { - mStateMgr.changeState(StateID_SmallAttack); + changeState(StateID_SmallAttack); ret = true; } else { - mStateMgr.changeState(StateID_Attack); + changeState(StateID_Attack); ret = true; } mLinkCloseRangeShieldTime = 0; @@ -2444,27 +2404,27 @@ bool dAcBlastboss_c::checkForRangeAttack() { if (mIsPhaseTwo != 0) { if (field_0x1162 >= 20) { - mStateMgr.changeState(StateID_DashAttack); + changeState(StateID_DashAttack); return true; } else if (mIsSwordEmpowered) { if ((link->checkSwordAndMoreStates(0x400000) && mStunCounter != 0) || (mXZDistanceToLink < 1500.0f && mTimers[TIMER_3] == 0)) { - mStateMgr.changeState(StateID_ThunderAttack); + changeState(StateID_ThunderAttack); ret = true; } } else { if (link->checkSwordAndMoreStates(0x400000)) { if ((mCounter & 0x7) == 0 && mStunCounter != 0) { - mStateMgr.changeState(StateID_DashAttack); + changeState(StateID_DashAttack); ret = true; } } else { if (mXZDistanceToLink < 1500.0f && dLightEnv_c::GetPInstance()->getField_0x38DC() == 6) { if (field_0x1162 > 10) { - mStateMgr.changeState(StateID_DashAttack); + changeState(StateID_DashAttack); ret = true; } else { - mStateMgr.changeState(StateID_ThunderWait); + changeState(StateID_ThunderWait); ret = true; } } @@ -2498,22 +2458,20 @@ bool dAcBlastboss_c::checkForCounter() { s32 attackDir = link->getSpecificAttackDirection(); - if (mStateMgr.isState(StateID_Attack)) { + if (isState(StateID_Attack)) { if (mpCurrentAnm == "AttackR" && - (attackDir == dAcPy_c::ATTACK_DIRECTION_RIGHT || attackDir == dAcPy_c::ATTACK_DIRECTION_UPRIGHT || - attackDir == dAcPy_c::ATTACK_DIRECTION_DOWNRIGHT)) { + (attackDir == CUT_DIR_L || attackDir == CUT_DIR_LD || attackDir == CUT_DIR_LU)) { mGuardDirection = GUARD_RIGHT; - } else if (mpCurrentAnm == "AttackL" && (attackDir == dAcPy_c::ATTACK_DIRECTION_LEFT || - attackDir == dAcPy_c::ATTACK_DIRECTION_UPLEFT || - attackDir == dAcPy_c::ATTACK_DIRECTION_DOWNLEFT)) { + } else if (mpCurrentAnm == "AttackL" && + (attackDir == CUT_DIR_R || attackDir == CUT_DIR_RD || attackDir == CUT_DIR_RU)) { mGuardDirection = GUARD_LEFT; - } else if (mpCurrentAnm == "AttackU" && attackDir == daPlayerActBase_c::ATTACK_DIRECTION_DOWN) { + } else if (mpCurrentAnm == "AttackU" && attackDir == CUT_DIR_U) { mGuardDirection = GUARD_UP; } else { return false; } - mStateMgr.changeState(StateID_Guard); + changeState(StateID_Guard); mSubState = SUB_STATE_10; } else { if ((mIsPhaseTwo > 0 || mXZDistanceToLink < 200.0f) && mNumConsecutiveOppositeDirectionAttacks < 1) { @@ -2521,18 +2479,18 @@ bool dAcBlastboss_c::checkForCounter() { } switch (attackDir) { - case daPlayerActBase_c::ATTACK_DIRECTION_DOWN: mGuardDirection = GUARD_UP; break; - case daPlayerActBase_c::ATTACK_DIRECTION_LEFT: mGuardDirection = GUARD_LEFT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT: mGuardDirection = GUARD_UPLEFT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT: mGuardDirection = GUARD_DOWNLEFT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_RIGHT: mGuardDirection = GUARD_RIGHT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT: mGuardDirection = GUARD_UPRIGHT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT: mGuardDirection = GUARD_DOWNRIGHT; break; - case daPlayerActBase_c::ATTACK_DIRECTION_UP: mGuardDirection = GUARD_DOWN; break; - default: mGuardDirection = GUARD_CENTER; break; + case CUT_DIR_U: mGuardDirection = GUARD_UP; break; + case CUT_DIR_R: mGuardDirection = GUARD_LEFT; break; + case CUT_DIR_RU: mGuardDirection = GUARD_UPLEFT; break; + case CUT_DIR_RD: mGuardDirection = GUARD_DOWNLEFT; break; + case CUT_DIR_L: mGuardDirection = GUARD_RIGHT; break; + case CUT_DIR_LU: mGuardDirection = GUARD_UPRIGHT; break; + case CUT_DIR_LD: mGuardDirection = GUARD_DOWNRIGHT; break; + case CUT_DIR_D: mGuardDirection = GUARD_DOWN; break; + default: mGuardDirection = GUARD_CENTER; break; } - if (!mStateMgr.isState(StateID_Guard)) { - mStateMgr.changeState(StateID_Guard); + if (!isState(StateID_Guard)) { + changeState(StateID_Guard); } mSubState = SUB_STATE_0; @@ -2647,7 +2605,6 @@ void dAcBlastboss_c::updateMainNodeTransforms() { sLib::addCalcAngle(mMdlCallback.field_0x1A.ref(), 0, 4, 400); } } - void dAcBlastboss_c::updateSkirtHairTransforms() { static const u16 sNodeIds[] = { B_LAST_BOSS_NODE_skirtAU1, B_LAST_BOSS_NODE_skirtBU1, B_LAST_BOSS_NODE_skirtCU1, B_LAST_BOSS_NODE_skirtDU1, @@ -2696,14 +2653,11 @@ void dAcBlastboss_c::updateSkirtHairTransforms() { MTXMultVec(mtx, t, field_0x1268[i].field_0x014[0]); field_0x1268[i].field_0x014[0] += v; if (nw4r::math::FAbs(field_0x1268[i].field_0x010) < 1.0f) { - // TODO - regswaps between tmp and abs result - f32 tmp = field_0x1268[(i + 1) & 7].field_0x010; - if (nw4r::math::FAbs(tmp) > 1.0f) { - field_0x1268[i].field_0x010 = tmp * 0.5f; + if (nw4r::ut::Abs(field_0x1268[(i + 1) & 7].field_0x010) > 1.0f) { + field_0x1268[i].field_0x010 = field_0x1268[(i + 1) & 7].field_0x010 * 0.5f; } - tmp = field_0x1268[(i - 1) & 7].field_0x010; - if (nw4r::math::FAbs(tmp) > 1.0f) { - field_0x1268[i].field_0x010 = tmp * 0.5f; + if (nw4r::ut::Abs(field_0x1268[(i - 1) & 7].field_0x010) > 1.0f) { + field_0x1268[i].field_0x010 = field_0x1268[(i - 1) & 7].field_0x010 * 0.5f; } } @@ -2956,56 +2910,56 @@ void dAcBlastboss_c::updateHairTransform(s32 level) { mtx.YrotS(cc.field_0x002); mtx.XrotM(cc.field_0x004); - MTXMultVec(mtx, t2, t2); + mtx.multVec(t2, t2); - f32 f1 = field_0x11B8; + f32 f13; + f32 fX2; f32 f2 = -field_0x11B8; + f32 fZ2; f32 f4 = 0.9f; f32 fAdd = -5.0f; + f32 f1 = field_0x11B8; f32 fScale = 1.0f; for (u32 i = 1; i < 5; i++, v1++, v2++, v3++) { v.x = f1 * mAng(mCounter * 12000 - (i * 20000)).sin(); v.y = f1 * mAng(mCounter * 10000 - (i * 20000)).sin(); v.z = f2; - v.x += mAng(mCounter * 10000 - (i * 20000)).sin() * fScale; - v.y += mAng(mCounter * 12000 - (i * 20000)).sin() * fScale; - MTXMultVec(mtx, v, v); - + v.x += fScale * mAng(mCounter * 10000 - (i * 20000)).sin(); + v.y += fScale * mAng(mCounter * 12000 - (i * 20000)).sin(); + mtx.multVec(v, v); f1 *= 1.6f; - f32 f13; if (field_0x113D != 0) { - f13 = fAdd + v1[0].y + t2.y + v3[0].y + v.y; - if (f13 < mPositionCopy2.y) { - f13 = mPositionCopy2.y; + f32 f = v1[0].y + fAdd + t2.y + v3[0].y + v.y; + if (f < mPositionCopy2.y) { + f = mPositionCopy2.y; } - f13 = f13 - v1[-1].y; + f13 = f - v1[-1].y; } else if (mIsDown) { - f13 = fAdd + v1[0].y + v3[0].y; - if (f13 <= 0.0f) { - f13 = 0.0f; + f32 f = v1[0].y + fAdd + v3[0].y; + if (f <= 0.0f) { + f = 0.0f; } - f13 = f13 - v1[-1].y; + f13 = f - v1[-1].y; v.set(0.0f, 0.0f, 0.0f); } else { - f13 = fAdd + (v1[0].y - v1[-1].y) + t2.y + v3[0].y + v.y; + f13 = (v1[0].y - v1[-1].y) + fAdd + t2.y + v3[0].y + v.y; } - f32 fX2 = (v1[0].x - v1[-1].x) + t2.x + v3[0].x + v.x; - f32 fZ2 = (v1[0].z - v1[-1].z) + t2.z + v3[0].z + v.z; + fX2 = (v1[0].x - v1[-1].x) + t2.x + v3[0].x + v.x; + fZ2 = (v1[0].z - v1[-1].z) + t2.z + v3[0].z + v.z; t2.x *= 0.6f; t2.y *= 0.6f; t2.z *= 0.6f; v2[0].y = cM::atan2s(fX2, fZ2); - f32 f8 = nw4r::math::FSqrt(fX2 * fX2 + fZ2 * fZ2); - v2[0].x = -cM::atan2s(f13, f8); + v2[0].x = -cM::atan2s(f13, nw4r::math::FSqrt(fX2 * fX2 + fZ2 * fZ2)); v2[0].z = cc.field_0x006; mtx2.YrotS(v2[0].y); mtx2.XrotM(v2[0].x); - MTXMultVec(mtx2, t1, v); + mtx2.multVec(t1, v); v3[0] = v1[0]; v1[0] = v1[-1] + v; @@ -3045,22 +2999,26 @@ bool dAcBlastboss_c::checkForLinkSwordBySwordHit() { return ret; } +inline f32 getScale() { + s32 scale = 95; + return scale / 100.0f; +} u8 dAcBlastboss_c::classifyAttackDirection(s32 attackDir) { switch (attackDir) { - case daPlayerActBase_c::ATTACK_DIRECTION_LEFT: - case daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT: - case daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT: return 0; + case CUT_DIR_R: + case CUT_DIR_RU: + case CUT_DIR_RD: return 0; - case daPlayerActBase_c::ATTACK_DIRECTION_RIGHT: - case daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT: - case daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT: return 1; + case CUT_DIR_L: + case CUT_DIR_LU: + case CUT_DIR_LD: return 1; - case daPlayerActBase_c::ATTACK_DIRECTION_DOWN: return 2; - case daPlayerActBase_c::ATTACK_DIRECTION_UP: return 3; + case CUT_DIR_U: return 2; + case CUT_DIR_D: return 3; - case daPlayerActBase_c::ATTACK_DIRECTION_STAB: return 4; + case CUT_DIR_STAB: return 4; - default: return -1; + default: return -1; } } @@ -3306,9 +3264,7 @@ void dAcBlastboss_c::executeLightningStrike() { cam->setEventCamView(tmp1, field_0x2D04, field_0x2CFC, 0.0f); if (b2) { mtx1.transS(0.5f, 0.5f, 0.0f); - // REGSWAP - s32 scale = 95; - mtx1.scaleM(scale / 100.0f, scale / 100.0f, 0.0f); + mtx1.scaleM(getScale(), getScale(), 0.0f); mtx1.transM(-0.5f, -0.5f, 0.0f); dStageMgr_c::GetInstance()->procfn_800192F0(0x96, mtx1, 0x32); } diff --git a/src/REL/d/a/e/d_a_e_ks.cpp b/src/REL/d/a/e/d_a_e_ks.cpp index fc397e1c..c2eba199 100644 --- a/src/REL/d/a/e/d_a_e_ks.cpp +++ b/src/REL/d/a/e/d_a_e_ks.cpp @@ -127,9 +127,9 @@ SPECIAL_ACTOR_PROFILE(E_KS, dAcEKs_c, fProfile::E_KS, 0xFE, 0, 4099); static dCcD_SrcSph sSrcSph = { { - /* mObjAt */ {AT_TYPE_DAMAGE, 0x1D, {0, 0, 0}, 2, 0, 0, 0, 0, 0}, + /* mObjAt */ {AT_TYPE_DAMAGE, 0x1D, {0, 0, 0}, 2, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ - {~AT_TYPE_COMMON0, 0x200303, {0, 1, 0x40F}, 8, 0}, + {~AT_TYPE_COMMON0, 0x200303, {0, 1, 0x40F}, 8, CUT_DIR_NONE}, /* mObjCo*/ {0xE5}, }, {35.f} @@ -293,27 +293,27 @@ void dAcEKs_c::fn_155_A60() { s16 a = 0; s16 x = -cLib::targetAngleX(mPosition, dAcPy_c::GetLink()->mPosition); - if (mSph.GetTgSoundID() == 0x01) { + if (mSph.GetTgAtCutDir() == CUT_DIR_U) { x += 0x2000; - } else if (mSph.GetTgSoundID() == 0x80) { + } else if (mSph.GetTgAtCutDir() == CUT_DIR_RU) { a = 0x1000; x += 0x1000; - } else if (mSph.GetTgSoundID() == 0x40) { + } else if (mSph.GetTgAtCutDir() == CUT_DIR_R) { a = 0x2000; - } else if (mSph.GetTgSoundID() == 0x20) { + } else if (mSph.GetTgAtCutDir() == CUT_DIR_RD) { a = 0x1000; x += -0x1000; - } else if (mSph.GetTgSoundID() == 0x10) { + } else if (mSph.GetTgAtCutDir() == CUT_DIR_D) { x += -0x2000; - } else if (mSph.GetTgSoundID() == 0x08) { + } else if (mSph.GetTgAtCutDir() == CUT_DIR_LD) { a = -0x1000; x += -0x1000; - } else if (mSph.GetTgSoundID() == 0x04) { + } else if (mSph.GetTgAtCutDir() == CUT_DIR_L) { a = -0x2000; - } else if (mSph.GetTgSoundID() == 0x02) { + } else if (mSph.GetTgAtCutDir() == CUT_DIR_LU) { a = -0x1000; x += 0x1000; - } else if (mSph.GetTgSoundID() == 0x100) { + } else if (mSph.GetTgAtCutDir() == CUT_DIR_STAB) { x += -0x4000; } diff --git a/src/REL/d/a/e/d_a_e_remly.cpp b/src/REL/d/a/e/d_a_e_remly.cpp index ad4cfdbd..8ad28f0a 100644 --- a/src/REL/d/a/e/d_a_e_remly.cpp +++ b/src/REL/d/a/e/d_a_e_remly.cpp @@ -51,8 +51,8 @@ SPECIAL_ACTOR_PROFILE(E_REMLY, dAcEremly_c, fProfile::E_REMLY, 0xE1, 0, 3); static dCcD_SrcSph sSphSrc = { - {{AT_TYPE_DAMAGE, 0xD, {0, 0, 0}, 2, 0, 0, 0, 0}, - {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x303, {0, 0, 0x40F}, 8, 0}, + {{AT_TYPE_DAMAGE, 0xD, {0, 0, 0}, 2, 0, 0, CUT_DIR_NONE, 0}, + {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x303, {0, 0, 0x40F}, 8, CUT_DIR_NONE}, {0xE5}}, {50.f}, }; diff --git a/src/REL/d/a/e/d_a_e_skytail.cpp b/src/REL/d/a/e/d_a_e_skytail.cpp index cbacdebf..98b522fa 100644 --- a/src/REL/d/a/e/d_a_e_skytail.cpp +++ b/src/REL/d/a/e/d_a_e_skytail.cpp @@ -45,18 +45,18 @@ static mVec3_c sArrVecs[5] = { /* clang-format off */ static dCcD_SrcSph sCcSrcHead = { - {{AT_TYPE_DAMAGE,0x1D, {0, 0, 0}, 4, 0, 0, 0}, - {~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0x18, 0x407}, 0, 0}, + {{AT_TYPE_DAMAGE,0x1D, {0, 0, 0}, 4, 0, CUT_DIR_NONE, 0}, + {~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0x18, 0x407}, 0, CUT_DIR_NONE}, {0xC5}}, {180.0f},}; static dCcD_SrcSph sCcSrcSpine = { - {{AT_TYPE_DAMAGE,0x1D, {0, 0, 0}, 4, 0, 0, 0}, - {~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0x18, 0x407}, 0, 0}, + {{AT_TYPE_DAMAGE,0x1D, {0, 0, 0}, 4, 0, CUT_DIR_NONE, 0}, + {~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0x18, 0x407}, 0, CUT_DIR_NONE}, {0xC5}}, {170.0f},}; static dCcD_SrcSph sCcSrcRear = { - {{0, 0, {0, 0, 0}, 0, 0, 0, 0}, - {~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0, 0x407}, 0, 0}, + {{0, 0, {0, 0, 0}, 0, 0, CUT_DIR_NONE, 0}, + {~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0, 0x407}, 0, CUT_DIR_NONE}, {0xC5}}, {200.0f},}; /* clang-format on */ diff --git a/src/REL/d/a/e/d_a_e_sm.cpp b/src/REL/d/a/e/d_a_e_sm.cpp index 41f43331..2ae4bdc2 100644 --- a/src/REL/d/a/e/d_a_e_sm.cpp +++ b/src/REL/d/a/e/d_a_e_sm.cpp @@ -46,8 +46,9 @@ SPECIAL_ACTOR_PROFILE(E_SM, dAcEsm_c, fProfile::E_SM, 0xEB, 0, 4098); static dCcD_SrcSph sSphSrc = { /* mObjInf */ - {/* mObjAt */ {AT_TYPE_DAMAGE, 0xD, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x3303, {0, 3, 0x40F}, 8, 0}, + {/* mObjAt */ {AT_TYPE_DAMAGE, 0xD, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ + {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x3303, {0, 3, 0x40F}, 8, CUT_DIR_NONE}, /* mObjCo */ {0xC5}}, /* mSphInf */ {50.f}, diff --git a/src/REL/d/a/npc/d_a_npc_bee.cpp b/src/REL/d/a/npc/d_a_npc_bee.cpp index ad571d57..23a93b27 100644 --- a/src/REL/d/a/npc/d_a_npc_bee.cpp +++ b/src/REL/d/a/npc/d_a_npc_bee.cpp @@ -41,8 +41,9 @@ SPECIAL_ACTOR_PROFILE(NPC_BEE, dAcNpcBee_c, fProfile::NPC_BEE, 0x123, 0, 0); static dCcD_SrcSph beeColliderSrc = { - /* mObjInf */ {/* mObjAt */ {AT_TYPE_0x2000000, 0x20000F, {0, 0, 0}, 1, 0, 0, 0, 0, 0}, - /* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_BOMB, 0x00004011, {0, 00, 0x40F}, 8, 0}, + /* mObjInf */ + {/* mObjAt */ {AT_TYPE_0x2000000, 0x20000F, {0, 0, 0}, 1, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_BOMB, 0x00004011, {0, 00, 0x40F}, 8, CUT_DIR_NONE}, /* mObjCo */ {0}}, /* mSphInf */ {15.0f} @@ -381,10 +382,8 @@ void dAcNpcBee_c::handleBeeFlyingStates(dAcNpcBeeSingleBee *bee) { dodgedSword = false; local_98 = dAcPy_c::GetLink()->getPosition() - bee->mPos; if (local_98.squareMagXZ() < 90000.f) { - if (dAcPy_c::GetLink()->getSpecificAttackDirection() == - (s16)daPlayerActBase_c::ATTACK_DIRECTION_LEFT || - dAcPy_c::GetLink()->getSpecificAttackDirection() == - (s16)daPlayerActBase_c::ATTACK_DIRECTION_RIGHT) { + if (dAcPy_c::GetLink()->getSpecificAttackDirection() == (s16)CUT_DIR_R || + dAcPy_c::GetLink()->getSpecificAttackDirection() == (s16)CUT_DIR_L) { local_98.y += 150.f; if (std::fabsf(local_98.y) < 50.f) { if (local_98.y < 0.f) { diff --git a/src/REL/d/a/obj/d_a_obj_barrel.cpp b/src/REL/d/a/obj/d_a_obj_barrel.cpp index 79fb7ce2..7eb83dd0 100644 --- a/src/REL/d/a/obj/d_a_obj_barrel.cpp +++ b/src/REL/d/a/obj/d_a_obj_barrel.cpp @@ -91,13 +91,13 @@ STATE_DEFINE(dAcOBarrel_c, Rebirth); namespace { static dCcD_SrcCyl sSrcCyl = { { - /* mObjAt */ {AT_TYPE_PHYSICS, 0x10013, {0, 0, 0}, 4, 0, 0, 0, 0, 0}, + /* mObjAt */ {AT_TYPE_PHYSICS, 0x10013, {0, 0, 0}, 4, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x2000111, {0, 0xF, 0x407}, 0, - 0}, + CUT_DIR_NONE}, /* mObjCo*/ {0xE9}, }, { @@ -106,13 +106,13 @@ static dCcD_SrcCyl sSrcCyl = { }; static dCcD_SrcSph sSrcSph = { { - /* mObjAt */ {AT_TYPE_PHYSICS, 0x10003, {0, 0, 0}, 4, 0, 0, 0, 0, 0}, + /* mObjAt */ {AT_TYPE_PHYSICS, 0x10003, {0, 0, 0}, 4, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x2000111, {0, 0xF, 0x407}, 0, - 0}, + CUT_DIR_NONE}, /* mObjCo*/ {0xE9}, }, {55.f} diff --git a/src/REL/d/a/obj/d_a_obj_bird_sp.cpp b/src/REL/d/a/obj/d_a_obj_bird_sp.cpp index 73a39ddf..aef47d7f 100644 --- a/src/REL/d/a/obj/d_a_obj_bird_sp.cpp +++ b/src/REL/d/a/obj/d_a_obj_bird_sp.cpp @@ -10,9 +10,9 @@ // clang-format off dCcD_SrcSph dAcObjBirdSp_c::sCcSrc = { /* mObjInf */ { - /* mObjAt */ {0, 2, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + /* mObjAt */ {0, 2, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, // AT_TYPE_COMMON0 - AT_TYPE_WIND - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x00000105, {0, 00, 0x407}, 0, 0}, + /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x00000105, {0, 00, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0x00004029}}, /* mSphInf */ {1000.0f} }; diff --git a/src/REL/d/a/obj/d_a_obj_block_underground.cpp b/src/REL/d/a/obj/d_a_obj_block_underground.cpp index 3b1326cf..04e639de 100644 --- a/src/REL/d/a/obj/d_a_obj_block_underground.cpp +++ b/src/REL/d/a/obj/d_a_obj_block_underground.cpp @@ -43,8 +43,8 @@ const char *const dAcOBlockUnderground::sDzbPlcNames[4] = { const dCcD_SrcCyl dAcOBlockUnderground::sCylSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {AT_TYPE_BOMB, 0x11, {0, 8, 0x407}, 0x0, 0x0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {AT_TYPE_BOMB, 0x11, {0, 8, 0x407}, 0x0, CUT_DIR_NONE}, /* mObjCo */ {0}}, /* mCylInf */ {50.f, 100.f} diff --git a/src/REL/d/a/obj/d_a_obj_chair.cpp b/src/REL/d/a/obj/d_a_obj_chair.cpp index b618aa17..f6be0b97 100644 --- a/src/REL/d/a/obj/d_a_obj_chair.cpp +++ b/src/REL/d/a/obj/d_a_obj_chair.cpp @@ -32,13 +32,13 @@ char *CHAIR_FILES[9] = { static dCcD_SrcCyl sChairColData = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000), 0x111, {0, 0x7, 0x407}, 0x0, - 0x0}, + CUT_DIR_NONE}, /* mObjCo */ {0xE9}}, /* mCylInf */ {40.f, 50.f} diff --git a/src/REL/d/a/obj/d_a_obj_cloud_dive.cpp b/src/REL/d/a/obj/d_a_obj_cloud_dive.cpp index 7e87cbd5..4158e89a 100644 --- a/src/REL/d/a/obj/d_a_obj_cloud_dive.cpp +++ b/src/REL/d/a/obj/d_a_obj_cloud_dive.cpp @@ -16,9 +16,8 @@ const f32 dAcOcloudDive_c::height = 40.0f; dCcD_SrcCyl dAcOcloudDive_c::sCylSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ - {AT_TYPE_BOMB, 0x111, {0, 0, 0x407}, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {AT_TYPE_BOMB, 0x111, {0, 0, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0}}, /* mCylInf */ {100.f, 10.f} diff --git a/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp b/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp index b82aef58..2916aff1 100644 --- a/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp +++ b/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp @@ -29,13 +29,12 @@ SPECIAL_ACTOR_PROFILE(OBJ_DUNGEON_SHIP, dAcODungeonShip_c, fProfile::OBJ_DUNGEON dCcD_SrcCps dAcODungeonShip_c::sCcSrc = { { - - {0, 0x1003E, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {0, 0x1003E, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 0, 0x407}, 0, - 0}, + CUT_DIR_NONE}, {0xE8}, }, {1000.0f}, diff --git a/src/REL/d/a/obj/d_a_obj_flying_clawshot_target.cpp b/src/REL/d/a/obj/d_a_obj_flying_clawshot_target.cpp index 33b6a7dd..4c8e59d4 100644 --- a/src/REL/d/a/obj/d_a_obj_flying_clawshot_target.cpp +++ b/src/REL/d/a/obj/d_a_obj_flying_clawshot_target.cpp @@ -39,8 +39,8 @@ bool dAcOFlyingClawshotTarget_c::createHeap() { // clang-format off const cCcD_SrcGObj dAcOFlyingClawshotTarget_c::sColSrc = { - /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {0, 6, 0x407}, 0, 0}, + /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {0, 6, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0x0} }; // clang-format on diff --git a/src/REL/d/a/obj/d_a_obj_grass_coil.cpp b/src/REL/d/a/obj/d_a_obj_grass_coil.cpp index 1ece5d83..78ea0801 100644 --- a/src/REL/d/a/obj/d_a_obj_grass_coil.cpp +++ b/src/REL/d/a/obj/d_a_obj_grass_coil.cpp @@ -21,14 +21,14 @@ STATE_DEFINE(dAcOgrassCoil_c, Wait); dCcD_SrcCyl dAcOgrassCoil_c::sCylSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ {AT_TYPE_SWORD | AT_TYPE_BOMB | AT_TYPE_0x40 | AT_TYPE_SLINGSHOT | AT_TYPE_WHIP | AT_TYPE_ARROW | AT_TYPE_CLAWSHOT | AT_TYPE_0x800000, 0x200111, {0, 0xb, 0x407}, 0x0, - 0x0}, + CUT_DIR_NONE}, /* mObjCo */ {0x29}}, /* mCylInf */ {50.f, 130.f} diff --git a/src/REL/d/a/obj/d_a_obj_grave.cpp b/src/REL/d/a/obj/d_a_obj_grave.cpp index 437c83a4..2efe3048 100644 --- a/src/REL/d/a/obj/d_a_obj_grave.cpp +++ b/src/REL/d/a/obj/d_a_obj_grave.cpp @@ -28,13 +28,13 @@ STATE_DEFINE(dAcOGrave_c, Wait); STATE_DEFINE(dAcOGrave_c, Move); dCcD_SrcUnk dAcOGrave_c::sUnkSrc = { - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 6, 0x407}, 0, - 0}, + CUT_DIR_NONE}, /* mObjCo */ {0}}, {-65.0f, 0.0f, -25.0f, 65.0f, 156.0f, 25.0f}, }; diff --git a/src/REL/d/a/obj/d_a_obj_ivy_rope.cpp b/src/REL/d/a/obj/d_a_obj_ivy_rope.cpp index cfbe3258..df8cd5a3 100644 --- a/src/REL/d/a/obj/d_a_obj_ivy_rope.cpp +++ b/src/REL/d/a/obj/d_a_obj_ivy_rope.cpp @@ -40,14 +40,14 @@ InteractionTargetDef dAcOivyRope_c::sInteraction = { dCcD_SrcCps dAcOivyRope_c::sCpsSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ {AT_TYPE_0x800000 | AT_TYPE_BEETLE | AT_TYPE_CLAWSHOT | AT_TYPE_ARROW | AT_TYPE_WHIP | AT_TYPE_SLINGSHOT | AT_TYPE_BOMB | AT_TYPE_SWORD, 0x111, {0, 0x19, 0x407}, 0, - 0}, + CUT_DIR_NONE}, /* mObjCo */ {0x4029}}, /* mCpsInf */ {10.f} @@ -55,9 +55,9 @@ dCcD_SrcCps dAcOivyRope_c::sCpsSrc = { dCcD_SrcSph dAcOivyRope_c::sSphSrc = { /* mObjInf */ - {/* mObjAt */ {AT_TYPE_DAMAGE, 0x11, {0, 0, 0}, 1, 0, 0, 0, 0, 0}, + {/* mObjAt */ {AT_TYPE_DAMAGE, 0x11, {0, 0, 0}, 1, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ - {~AT_TYPE_COMMON0, 0x111, {0, 0, 0x407}, 0, 0}, + {~AT_TYPE_COMMON0, 0x111, {0, 0, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0x29}}, /* mSphInf */ {100.f} @@ -65,9 +65,9 @@ dCcD_SrcSph dAcOivyRope_c::sSphSrc = { dCcD_SrcCyl dAcOivyRope_c::sCylSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ - {AT_TYPE_BELLOWS, 0x311, {0, 0, 8}, 8, 0}, + {AT_TYPE_BELLOWS, 0x311, {0, 0, 8}, 8, CUT_DIR_NONE}, /* mObjCo */ {0x109}}, /* mCylInf */ {10.f, 750.f} diff --git a/src/REL/d/a/obj/d_a_obj_pinwheel.cpp b/src/REL/d/a/obj/d_a_obj_pinwheel.cpp index e38af748..31144cdf 100644 --- a/src/REL/d/a/obj/d_a_obj_pinwheel.cpp +++ b/src/REL/d/a/obj/d_a_obj_pinwheel.cpp @@ -21,9 +21,13 @@ STATE_DEFINE(dAcOpinwheel_c, Deceleration); dCcD_SrcSph dAcOpinwheel_c::sSphSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ - {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 6, 0x8}, 8, 0}, + {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), + 0x111, + {0, 6, 0x8}, + 8, + CUT_DIR_NONE}, /* mObjCo */ {0xE9}}, /* mSphInf */ {50.f}, diff --git a/src/REL/d/a/obj/d_a_obj_rope_igaiga.cpp b/src/REL/d/a/obj/d_a_obj_rope_igaiga.cpp index 35b71ecc..77774cb1 100644 --- a/src/REL/d/a/obj/d_a_obj_rope_igaiga.cpp +++ b/src/REL/d/a/obj/d_a_obj_rope_igaiga.cpp @@ -36,9 +36,13 @@ STATE_DEFINE(dAcOropeIgaiga_c, Water); dCcD_SrcSph dAcOropeIgaiga_c::sSphSrc = { /* mObjInf */ - {/* mObjAt */ {AT_TYPE_DAMAGE, 0x1F, {0, 0, 0}, 1, 0, 0, 0, 0, 0}, + {/* mObjAt */ {AT_TYPE_DAMAGE, 0x1F, {0, 0, 0}, 1, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ - {~(AT_TYPE_WIND | AT_TYPE_0x8000 | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_BUGNET), 0x311, {0, 0, 0x407}, 0, 0}, + {~(AT_TYPE_WIND | AT_TYPE_0x8000 | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_BUGNET), + 0x311, + {0, 0, 0x407}, + 0, + CUT_DIR_NONE}, /* mObjCo */ {0xA9}}, /* mSphInf */ {20.f}, diff --git a/src/REL/d/a/obj/d_a_obj_seat_sword.cpp b/src/REL/d/a/obj/d_a_obj_seat_sword.cpp index 83f194bd..b9d8f4d8 100644 --- a/src/REL/d/a/obj/d_a_obj_seat_sword.cpp +++ b/src/REL/d/a/obj/d_a_obj_seat_sword.cpp @@ -25,8 +25,8 @@ STATE_DEFINE(dAcOSeatSword_c, Get); dCcD_SrcCyl dAcOSeatSword_c::sCylSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {0, 0x311, {0, 0, 0x407}, 0x0, 0x0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {0, 0x311, {0, 0, 0x407}, 0x0, CUT_DIR_NONE}, /* mObjCo */ {0xE9}}, /* mCylInf */ {20.f, 100.f} diff --git a/src/REL/d/a/obj/d_a_obj_soil.cpp b/src/REL/d/a/obj/d_a_obj_soil.cpp index 5a06cbf0..57cebabf 100644 --- a/src/REL/d/a/obj/d_a_obj_soil.cpp +++ b/src/REL/d/a/obj/d_a_obj_soil.cpp @@ -39,9 +39,9 @@ STATE_DEFINE(dAcOsoil_c, Ready); dCcD_SrcCyl dAcOsoil_c::sCylSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ - {0, 0x111, {0, 0, 0x407}, 0, 0}, + {0, 0x111, {0, 0, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0xC9}}, /* mCylInf */ {10.f, 15.f} diff --git a/src/REL/d/a/obj/d_a_obj_spike.cpp b/src/REL/d/a/obj/d_a_obj_spike.cpp index 3db060fe..9188021b 100644 --- a/src/REL/d/a/obj/d_a_obj_spike.cpp +++ b/src/REL/d/a/obj/d_a_obj_spike.cpp @@ -2,16 +2,20 @@ #include "d/a/obj/d_a_obj_base.h" #include "d/col/cc/d_cc_s.h" +#include "f/f_base.h" SPECIAL_ACTOR_PROFILE(OBJ_SPIKE, dAcOspike_c, fProfile::OBJ_SPIKE, 0x1D9, 0, 2); -// clang-format off dCcD_SrcUnk dAcOspike_c::sCcSrc = { - {{AT_TYPE_DAMAGE, 0x2003F, {0, 0, 0}, 1, 0, 0, 0, 0}, - {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, }, - {0}}, - {-1.0f, -246.0f, -472.0f, 73.0f, 255.0f, 482.0f}}; -// clang-format on + {{AT_TYPE_DAMAGE, 0x2003F, {0, 0, 0}, 1, 0, 0, CUT_DIR_NONE, 0}, + {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), + 0x111, + {0x0, 0x06, 0x407}, + 0, + CUT_DIR_NONE}, + {0}}, + {-1.0f, -246.0f, -472.0f, 73.0f, 255.0f, 482.0f} +}; const mVec3_c dAcOspike_c::sVec1 = mVec3_c(-1.0f, -246.0f, -472.0f); const mVec3_c dAcOspike_c::sVec2 = mVec3_c(73.0f, 255.0f, 482.0f); @@ -68,19 +72,19 @@ int dAcOspike_c::create() { } int dAcOspike_c::doDelete() { - return 1; + return SUCCEEDED; } int dAcOspike_c::actorExecute() { mStateMgr.executeState(); mCollision.cM3dGUnk::Set(mPosition, mRotation.y); dCcS::GetInstance()->Set(&mCollision); - return 1; + return SUCCEEDED; } int dAcOspike_c::draw() { drawModelType1(&mMdl); - return 1; + return SUCCEEDED; } void dAcOspike_c::initializeState_Wait() {} diff --git a/src/REL/d/a/obj/d_a_obj_tarzan_pole.cpp b/src/REL/d/a/obj/d_a_obj_tarzan_pole.cpp index a4d9897e..cd66c54b 100644 --- a/src/REL/d/a/obj/d_a_obj_tarzan_pole.cpp +++ b/src/REL/d/a/obj/d_a_obj_tarzan_pole.cpp @@ -16,8 +16,8 @@ SPECIAL_ACTOR_PROFILE(OBJ_TARZAN_POLE, dAcOTarzanPole_c, fProfile::OBJ_TARZAN_PO // clang-format off dCcD_SrcSph dAcOTarzanPole_c::sCcSrc = { /* mObjInf */ { - /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {(AT_TYPE_WHIP | AT_TYPE_WIND), 0x800311, {0, 0, 0x407}, 0x0000, 0x0000}, + /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {(AT_TYPE_WHIP | AT_TYPE_WIND), 0x800311, {0, 0, 0x407}, 0x0000, CUT_DIR_NONE}, /* mObjCo */ {0x00000000}}, /* mSphInf */ {10.0f} }; diff --git a/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp b/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp index 4f1e0e87..4eb1b451 100644 --- a/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp +++ b/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp @@ -18,12 +18,12 @@ f32 dAcOtoD3StoneFigure_c::sRadius = 85.0f; f32 dAcOtoD3StoneFigure_c::sHeight = 290.0f; dCcD_SrcCyl dAcOtoD3StoneFigure_c::sCcSrc = { - {{0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {{0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1000111, {0, 0x06, 0x407}, 0, - 0}, + CUT_DIR_NONE}, {0xE9}}, {dAcOtoD3StoneFigure_c::sRadius, dAcOtoD3StoneFigure_c::sHeight} }; diff --git a/src/REL/d/a/obj/d_a_obj_triforce.cpp b/src/REL/d/a/obj/d_a_obj_triforce.cpp index 9eaaec27..640762ea 100644 --- a/src/REL/d/a/obj/d_a_obj_triforce.cpp +++ b/src/REL/d/a/obj/d_a_obj_triforce.cpp @@ -10,8 +10,8 @@ SPECIAL_ACTOR_PROFILE(OBJ_TRIFORCE, dAcOtriforce_c, fProfile::OBJ_TRIFORCE, 0x15 // clang-format off dCcD_SrcSph dAcOtriforce_c::sCcSrc = { - {{0, 0, 0, 0, 0, 0, 0, 0, 0}, - {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, 0}, + {{0, 0, 0, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, CUT_DIR_NONE}, {0xE9}}, {150.0f}}; // clang-format on diff --git a/src/REL/d/a/obj/d_a_obj_tubo.cpp b/src/REL/d/a/obj/d_a_obj_tubo.cpp index 83a90f23..232483c4 100644 --- a/src/REL/d/a/obj/d_a_obj_tubo.cpp +++ b/src/REL/d/a/obj/d_a_obj_tubo.cpp @@ -52,8 +52,9 @@ STATE_DEFINE(dAcOtubo_c, Rebirth); dCcD_SrcSph dAcOtubo_c::sSphSrc = { /* mObjInf */ - {/* mObjAt */ {AT_TYPE_PHYSICS, 0x12, {0, 0, 0}, 2, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x801111, {0, 0xA, 0x40F}, 8, 0}, + {/* mObjAt */ {AT_TYPE_PHYSICS, 0x12, {0, 0, 0}, 2, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ + {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x801111, {0, 0xA, 0x40F}, 8, CUT_DIR_NONE}, /* mObjCo */ {0x1E9}}, /* mSphInf */ {30.f}, diff --git a/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp b/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp index 1a42712d..3e600b80 100644 --- a/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp +++ b/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp @@ -34,8 +34,9 @@ STATE_DEFINE(dAcOTumbleWeed_c, Slope); dCcD_SrcSph dAcOTumbleWeed_c::sSphSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x111, {0, 8, 0x40F}, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ + {~(AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x111, {0, 8, 0x40F}, 0, CUT_DIR_NONE}, /* mObjCo */ {0xE9}}, /* mSphInf */ {60.f}, diff --git a/src/REL/d/a/obj/d_a_obj_warp_hole.cpp b/src/REL/d/a/obj/d_a_obj_warp_hole.cpp index b61cf595..0172c815 100644 --- a/src/REL/d/a/obj/d_a_obj_warp_hole.cpp +++ b/src/REL/d/a/obj/d_a_obj_warp_hole.cpp @@ -3,6 +3,7 @@ #include "c/c_lib.h" #include "d/a/d_a_player.h" #include "d/a/npc/d_a_npc_talk_kensei.h" +#include "d/col/c/c_cc_d.h" #include "d/col/cc/d_cc_s.h" #include "d/d_sc_game.h" #include "d/d_vec.h" @@ -13,9 +14,13 @@ SPECIAL_ACTOR_PROFILE(OBJ_WARP_HOLE, dAcOwarpHole_c, fProfile::OBJ_WARP_HOLE, 0x dCcD_SrcCyl dAcOwarpHole_c::sCylSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ - {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000), 0x111, {0, 0, 0x407}, 0, 0}, + {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000), + 0x111, + {0, 0, 0x407}, + 0, + CUT_DIR_NONE}, /* mObjCo */ {0x29}}, /* mCylInf */ {320.f, 300.f} diff --git a/src/REL/d/t/d_t_reaction.cpp b/src/REL/d/t/d_t_reaction.cpp index 5ede15d2..89bf731c 100644 --- a/src/REL/d/t/d_t_reaction.cpp +++ b/src/REL/d/t/d_t_reaction.cpp @@ -21,8 +21,8 @@ const f32 dTgReaction_c::sHeight = 100.0f; // clang-format off dCcD_SrcCyl dTgReaction_c::sCcSrc = { - {{0, 0, 0, 0, 0, 0, 0, 0, 0}, - {AT_TYPE_BELLOWS, 0x213, {0, 0, 0x8},0x8}, + {{0, 0, 0, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + {AT_TYPE_BELLOWS, 0x213, {0, 0, 0x8},0x8, CUT_DIR_NONE}, {0xE8}}, {dTgReaction_c::sRadius, dTgReaction_c::sHeight} }; @@ -74,19 +74,19 @@ int dTgReaction_c::create() { switch (getReactType()) { case REACT_SLINGSHOT: mCollision.SetTgType(AT_TYPE_SLINGSHOT); - mCollision.SetTgFlag_0xA(0); + mCollision.SetTgCutDir(CUT_DIR_NONE); mCollision.SetR(sCcSrc.mCylInf.mRadius * mScale.x); mCollision.SetH(sCcSrc.mCylInf.mHeight * mScale.y); break; case REACT_GUST_BELLOWS: mCollision.SetTgType(AT_TYPE_BELLOWS); - mCollision.SetTgFlag_0xA(8); + mCollision.SetTgCutDir(CUT_DIR_LD); mCollision.SetR(sCcSrc.mCylInf.mRadius * mScale.x); mCollision.SetH(sCcSrc.mCylInf.mHeight * mScale.y); break; case REACT_UNDERWATER: mCollision.SetTgType(AT_TYPE_BUBBLE); - mCollision.SetTgFlag_0xA(0); + mCollision.SetTgCutDir(CUT_DIR_NONE); mCollision.SetR(sCcSrc.mCylInf.mRadius * mScale.x); mCollision.SetH(sCcSrc.mCylInf.mHeight * mScale.y); break; diff --git a/src/d/a/d_a_item.cpp b/src/d/a/d_a_item.cpp index dbd17943..8b66fc41 100644 --- a/src/d/a/d_a_item.cpp +++ b/src/d/a/d_a_item.cpp @@ -260,8 +260,12 @@ static const GlitteringSporeRupeeChance sSporeRupeeChances[] = { }; static const dCcD_SrcCyl sSrcCyl = { - {{0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - {~(AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 0x08, 0x407}, 0, 0}, + {{0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + {~(AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), + 0x111, + {0, 0x08, 0x407}, + 0, + CUT_DIR_NONE}, {0xE9}}, {40.0f, 60.0f} }; diff --git a/src/d/a/d_a_salbage_obj.cpp b/src/d/a/d_a_salbage_obj.cpp index 33c183ee..81b7173d 100644 --- a/src/d/a/d_a_salbage_obj.cpp +++ b/src/d/a/d_a_salbage_obj.cpp @@ -26,9 +26,9 @@ STATE_DEFINE(dAcSalbageObj_c, Kill); static dCcD_SrcCyl sCylSrc = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ - {~0, 0x111, {0, 0x02, 0x407}, 0, 0}, + {~0, 0x111, {0, 0x02, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0xE9}}, /* mCylInf */ {0.0f, 0.0f} diff --git a/src/d/a/obj/d_a_obj_arrow.cpp b/src/d/a/obj/d_a_obj_arrow.cpp index 41c919b0..ef1ebdac 100644 --- a/src/d/a/obj/d_a_obj_arrow.cpp +++ b/src/d/a/obj/d_a_obj_arrow.cpp @@ -66,10 +66,10 @@ STATE_DEFINE(dAcArrow_c, Bound); // clang-format off cCcD_SrcGObj dAcArrow_c::sCcSrcInf = { - {AT_TYPE_ARROW, 0x8BB, {0x15,0, 0}, sDamageArrMaybe[0], 0, 0, 0, 0, 0}, + {AT_TYPE_ARROW, 0x8BB, {0x15,0, 0}, sDamageArrMaybe[0], 0, 0, 0, CUT_DIR_NONE, 0}, { ~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_ARROW | AT_TYPE_0x100 | AT_TYPE_WIND | AT_TYPE_SLINGSHOT), - 0x210, {0, 0, 0x407}, 0, 0 + 0x210, {0, 0, 0x407}, 0, CUT_DIR_NONE }, {0}, }; @@ -80,8 +80,8 @@ dCcD_SrcCps dAcArrow_c::sCc1 = { }; const dCcD_SrcSph dAcArrow_c::sCc2 = { - {{0x0, 0x0, 0x0, 0, 0, 0, 0, 0, 0}, - {AT_TYPE_SWORD, 0x211, {0, 0, 0x407}, 0, 0}, + {{0x0, 0x0, 0x0, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + {AT_TYPE_SWORD, 0x211, {0, 0, 0x407}, 0, CUT_DIR_NONE}, {0xC28}}, {100.0f}, }; diff --git a/src/d/a/obj/d_a_obj_bomb.cpp b/src/d/a/obj/d_a_obj_bomb.cpp index 339548d5..05d5e931 100644 --- a/src/d/a/obj/d_a_obj_bomb.cpp +++ b/src/d/a/obj/d_a_obj_bomb.cpp @@ -85,9 +85,13 @@ STATE_DEFINE(dAcBomb_c, WindCarry); dCcD_SrcSph sSphSrc = { /* mObjInf */ - {/* mObjAt */ {AT_TYPE_BOMB, 0x1803E, {0, 0, 0}, sHIO.getSomething(), 0, 0, 0, 0, 0}, + {/* mObjAt */ {AT_TYPE_BOMB, 0x1803E, {0, 0, 0}, sHIO.getSomething(), 0, 0, 0, CUT_DIR_NONE, 0}, /* mObjTg */ - {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_0x10), 0x800111, {0, 0x0A, 0x40F}, 0, 0}, + {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_0x10), + 0x800111, + {0, 0x0A, 0x40F}, + 0, + CUT_DIR_NONE}, /* mObjCo */ {0xE9}}, /* mSphInf */ {sHIO.getBombScale()} diff --git a/src/d/a/obj/d_a_obj_boomerang.cpp b/src/d/a/obj/d_a_obj_boomerang.cpp index ad220988..d7c707f1 100644 --- a/src/d/a/obj/d_a_obj_boomerang.cpp +++ b/src/d/a/obj/d_a_obj_boomerang.cpp @@ -32,8 +32,8 @@ dBgS_BeetleLinChk dAcBoomerang_c::sLinChk; dCcD_SrcSph dAcBoomerang_c::sSphSrc = { - {{AT_TYPE_BEETLE, BoomerangAtFlags, {4, 0, 0}, 0, 1, 0, 0, 0}, - {~AT_TYPE_COMMON0, 0x291, {0, 0, 0x407}, 0, 0}, + {{AT_TYPE_BEETLE, BoomerangAtFlags, {4, 0, 0}, 0, 1, 0, CUT_DIR_NONE, 0}, + {~AT_TYPE_COMMON0, 0x291, {0, 0, 0x407}, 0, CUT_DIR_NONE}, {0x28}}, {15.f} }; diff --git a/src/d/a/obj/d_a_obj_fairy.cpp b/src/d/a/obj/d_a_obj_fairy.cpp index 7dd556e3..e6b173e7 100644 --- a/src/d/a/obj/d_a_obj_fairy.cpp +++ b/src/d/a/obj/d_a_obj_fairy.cpp @@ -32,8 +32,8 @@ SPECIAL_ACTOR_PROFILE(OBJ_FAIRY, dAcOFairy_c, fProfile::OBJ_FAIRY, 0x22D, 0, 0x2 static dCcD_SrcSph sSphSrc1 = { /* mObjInf */ - {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_WIND, 0x200311, {0, 0, 0x40F}, 0, 0}, + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_WIND, 0x200311, {0, 0, 0x40F}, 0, CUT_DIR_NONE}, /* mObjCo */ {0}}, /* mSphInf */ {30.f}, @@ -41,8 +41,8 @@ static dCcD_SrcSph sSphSrc1 = { static dCcD_SrcSph sSphSrc2 = { /* mObjInf */ - {/* mObjAt */ {0, 0x0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {0, 0x0, {0, 0, 0x40F}, 0, 0}, + {/* mObjAt */ {0, 0x0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {0, 0x0, {0, 0, 0x40F}, 0, CUT_DIR_NONE}, /* mObjCo */ {0x29}}, /* mSphInf */ {10.f}, diff --git a/src/d/a/obj/d_a_obj_tbox.cpp b/src/d/a/obj/d_a_obj_tbox.cpp index 45ce812f..55363407 100644 --- a/src/d/a/obj/d_a_obj_tbox.cpp +++ b/src/d/a/obj/d_a_obj_tbox.cpp @@ -92,8 +92,8 @@ static char *const sOpenEventNames[] = { // clang-format off // TODO just copied from somewhere const cCcD_SrcGObj dAcTbox_c::sColSrc = { - /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0, 0x407}, 0, 0}, + /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0xE9} }; // clang-format on @@ -1079,8 +1079,8 @@ int dAcTbox_c::create() { if (mVariant == SMALL) { // clang-format off static const dCcD_SrcUnk s3 = {{ - /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {7, 0x407}, 0, 0}, + /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {7, 0, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0x0}}, {0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f}, }; @@ -1090,8 +1090,8 @@ int dAcTbox_c::create() { } else { // clang-format off static const dCcD_SrcUnk s4 = {{ - /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {6, 0x407}, 0, 0}, + /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0}, + /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {6, 0, 0x407}, 0, CUT_DIR_NONE}, /* mObjCo */ {0x0}}, {0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f}, }; diff --git a/src/d/col/c/c_cc_d.cpp b/src/d/col/c/c_cc_d.cpp index ebf84503..64ab3163 100644 --- a/src/d/col/c/c_cc_d.cpp +++ b/src/d/col/c/c_cc_d.cpp @@ -486,12 +486,12 @@ bool cCcD_Obj::ChkTgBit25() const { return mTg.MskAtHitSPrm(0x2000000); } -s32 cCcD_Obj::GetTgSoundID() const { - return mTg.mAtHitSrc.field_0x10; +s32 cCcD_Obj::GetTgAtCutDir() const { + return mTg.mAtHitSrc.mCutDir; } -s16 cCcD_Obj::GetTg_0x6A() const { - return mTg.mAtHitSrc.field_0x12; +s16 cCcD_Obj::GetTgAtCutAng() const { + return mTg.mAtHitSrc.mCutAng; } bool cCcD_Obj::ChkTgBit8() const { diff --git a/src/d/tg/d_t_mass_object.cpp b/src/d/tg/d_t_mass_object.cpp index 6c58db5b..a9ebc8e5 100644 --- a/src/d/tg/d_t_mass_object.cpp +++ b/src/d/tg/d_t_mass_object.cpp @@ -874,9 +874,9 @@ bool dTgMassObjInstance::checkForHit( } hitPosition = link->mPosition; distance = mGroundHeight.distance(hitPosition); - if ((s32)link->getSpecificAttackDirection() == dAcPy_c::ATTACK_DIRECTION_DOWN || - (s32)link->getSpecificAttackDirection() == dAcPy_c::ATTACK_DIRECTION_UP || - (s32)link->getSpecificAttackDirection() == dAcPy_c::ATTACK_DIRECTION_STAB) { + if ((s32)link->getSpecificAttackDirection() == CUT_DIR_U || + (s32)link->getSpecificAttackDirection() == CUT_DIR_D || + (s32)link->getSpecificAttackDirection() == CUT_DIR_STAB) { if (distance < fVar20) { isNotCut = 0; } else { @@ -893,8 +893,8 @@ bool dTgMassObjInstance::checkForHit( hitPosition = dAcPy_c::GetLink()->getSwordPos(); distance = mGroundHeight.distance(hitPosition); - if ((s32)link->getSpecificAttackDirection() != dAcPy_c::ATTACK_DIRECTION_DOWNRIGHT && - (s32)link->getSpecificAttackDirection() != dAcPy_c::ATTACK_DIRECTION_DOWNLEFT) { + if ((s32)link->getSpecificAttackDirection() != CUT_DIR_LU && + (s32)link->getSpecificAttackDirection() != CUT_DIR_RU) { return true; } if (distance >= fVar21) { diff --git a/src/toBeSorted/d_enemy_sword_mdl.cpp b/src/toBeSorted/d_enemy_sword_mdl.cpp index aee66acc..366a5535 100644 --- a/src/toBeSorted/d_enemy_sword_mdl.cpp +++ b/src/toBeSorted/d_enemy_sword_mdl.cpp @@ -1,6 +1,7 @@ #include "toBeSorted/d_enemy_sword_mdl.h" #include "common.h" +#include "d/col/c/c_cc_d.h" #include "d/col/cc/d_cc_s.h" #include "d/d_sc_game.h" #include "m/m3d/m_shadow.h" @@ -11,8 +12,8 @@ dCcD_SrcCps sCcSrc = { { - {AT_TYPE_DAMAGE, 0x8D, {1, 0, 0}, 1, 0, 0, 0, 0, 0}, - {0, 0, {0, 0, 0x407}, 0, 0}, + {AT_TYPE_DAMAGE, 0x8D, {1, 0, 0}, 1, 0, 0, 0, CUT_DIR_NONE, 0}, + {0, 0, {0, 0, 0x407}, 0, CUT_DIR_NONE}, {0}, }, {30.0f},