From cbd7e076c6815b9574e52bb86b7a40e7f47bbbe2 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Sun, 10 May 2026 20:39:34 -0400 Subject: [PATCH] Implement d_npc inlines --- include/d/d_com_inf_game.h | 2 +- include/d/d_event.h | 2 +- include/d/d_npc.h | 71 +++++++++++------------- src/d/actor/d_a_npc_bs1.cpp | 2 +- src/d/actor/d_a_npc_people.cpp | 30 +++++------ src/d/actor/d_a_npc_photo.cpp | 29 +++++----- src/d/actor/d_a_npc_roten.cpp | 65 ++++++++++++++-------- src/d/d_a_npc_mk_static.cpp | 34 ++++++------ src/d/d_npc.cpp | 98 +++++++++++++++++----------------- 9 files changed, 170 insertions(+), 163 deletions(-) diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index d2cc0d4a6..f7200ecfa 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -3306,7 +3306,7 @@ inline void dComIfGp_event_reset() { g_dComIfG_gameInfo.play.getEvent()->reset(); } -inline u32 dComIfGp_event_getPreItemNo() { +inline u8 dComIfGp_event_getPreItemNo() { return g_dComIfG_gameInfo.play.getEvent()->getPreItemNo(); } diff --git a/include/d/d_event.h b/include/d/d_event.h index 46229d3fb..2dc2caa05 100644 --- a/include/d/d_event.h +++ b/include/d/d_event.h @@ -120,7 +120,7 @@ public: fopAc_ac_c* getPt1() { return convPId(mPt1); } void setPt2(void* i_actor) { mPt2 = getPId(i_actor); } fopAc_ac_c* getPt2() { return convPId(mPt2); } - int getPreItemNo() { return mItemNo; } + u8 getPreItemNo() { return mItemNo; } f32 getCullRate() { return mCullFarClipRatio; } void setCullRate(f32 ratio) { mCullFarClipRatio = ratio; } diff --git a/include/d/d_npc.h b/include/d/d_npc.h index 43a054bcf..1d13205ce 100644 --- a/include/d/d_npc.h +++ b/include/d/d_npc.h @@ -157,47 +157,32 @@ public: void cutContinueTalkStart(); void cutTalkMsgProc(); - char* getActorName() { - return mpEvtStaffName; - } + char* getActorName() { return mpEvtStaffName; } + int getNowCut() { return mCurActIdx; } + bool getAttnFlag() { return mbAttention; } + void setAttnFlag(bool flag) { mbAttention = flag; } + bool getAttnNoTurnFlag() { return mbNoTurn; } + void setAttnNoTurnFlag(bool flag) { mbNoTurn = flag; } + f32 getMoveSpeed() { return mSpeed; } + cXyz getAttnPos() { return mPos; } + void setAttnPos(cXyz& pos) { mPos = pos; } + s16 getTurnSpeed() { return mTurnSpeed; } + void setJntCtrlPtr(dNpc_JntCtrl_c* ctrl) { mpJntCtrl = ctrl; } - int getNowCut() { - return mCurActIdx; - } - - bool getAttnFlag() { - return mbAttention; - } - - void setAttnFlag(bool flag) { - mbAttention = flag; - } - - void setAttnNoTurnFlag(bool flag) { - mbNoTurn = flag; - } - - f32 getMoveSpeed() { - return mSpeed; - } - - cXyz getAttnPos() { - return mPos; - } - - s16 getTurnSpeed() { - return mTurnSpeed; - } - - void setJntCtrlPtr(dNpc_JntCtrl_c* ctrl) { - mpJntCtrl = ctrl; - } - static fopAc_ac_c* findActorCallBack(fopAc_ac_c*, void*); }; // Size: 0x6C class dNpc_PathRun_c { public: + dPath* getPath() { return mPath; } + bool isPath() { return mPath != NULL; } + u8 getIdx() { return mIdx; } + void setIdx(u8 idx) { mIdx = idx; } + void clrIdx() { mIdx = 0; } + u8 getDir() { return mbDir; } + void setDir(u8 dir) { mbDir = dir; } + void turnDir() { mbDir ^= 1; } + bool setInfDrct(dPath* pPath); bool setInf(u8 pathIdx, s8 roomNo, u8 forwards); dPath* nextPath(s8 roomNo); @@ -219,15 +204,18 @@ public: bool setNearPathIndxMk2(cXyz*, u8, u8); bool chkInside(cXyz*); +private: /* 0x00 */ dPath* mPath; /* 0x04 */ u8 field_0x04; - /* 0x05 */ u8 mCurrPointIndex; - /* 0x06 */ u8 mbGoingForwards; + /* 0x05 */ u8 mIdx; + /* 0x06 */ u8 mbDir; /* 0x07 */ u8 field_0x07; }; // Size: 0x08 class dNpc_HeadAnm_c { public: + typedef void (dNpc_HeadAnm_c::*SwingProc)(void); + void swing_vertical_init(s16 param_1, s16 param_2, s16 param_3, int param_4); void swing_vertical(); void swing_horizone_init(s16 param_1, s16 param_2, s16 param_3, int param_4); @@ -237,20 +225,21 @@ public: dNpc_HeadAnm_c() { field_0x14 = 0.0f; field_0x18 = 0.0f; - field_0x1C = 0.0f; + field_0x1C = 0; field_0x1E = 0; field_0x20 = 0; field_0x00 = 0; field_0x02 = 0; field_0x04 = 0; } - - typedef void (dNpc_HeadAnm_c::*swing_func)(void); + void defaultCalcX(s16) {} + void defaultCalcY(s16) {} + void setProc(SwingProc proc) { mProc = proc; } /* 0x00 */ s16 field_0x00; /* 0x02 */ s16 field_0x02; /* 0x04 */ s16 field_0x04; - /* 0x08 */ swing_func mFunc; + /* 0x08 */ SwingProc mProc; /* 0x14 */ f32 field_0x14; /* 0x18 */ f32 field_0x18; /* 0x1C */ s16 field_0x1C; diff --git a/src/d/actor/d_a_npc_bs1.cpp b/src/d/actor/d_a_npc_bs1.cpp index 07830f3ee..4e1614c6d 100644 --- a/src/d/actor/d_a_npc_bs1.cpp +++ b/src/d/actor/d_a_npc_bs1.cpp @@ -1011,7 +1011,7 @@ u32 daNpc_Bs1_c::getMsg() { m740 = 0; } else if(dComIfGp_event_chkTalkXY()) { - u8 itemNo = dComIfGp_event_getPreItemNo(); + u8 itemNo = (u8)dComIfGp_event_getPreItemNo(); if(mType == 0) { if(isEmono(itemNo)) { diff --git a/src/d/actor/d_a_npc_people.cpp b/src/d/actor/d_a_npc_people.cpp index 1e8c8d28a..dfbba0ac8 100644 --- a/src/d/actor/d_a_npc_people.cpp +++ b/src/d/actor/d_a_npc_people.cpp @@ -4411,13 +4411,13 @@ cPhs_State daNpcPeople_c::createInit() { u8 pathIndex = getPrmRailID(); if(pathIndex != 0xFF) { mPathRun.setInf(pathIndex, fopAcM_GetRoomNo(this), true); - if(mPathRun.mPath == NULL) { + if(!mPathRun.isPath()) { return cPhs_ERROR_e; } fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e); - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); old.pos = point; current.pos = old.pos; mPathRun.incIdxLoop(); @@ -4940,7 +4940,7 @@ s32 daNpcPeople_c::executeWaitInit() { /* 00002240-00002500 .text executeWait__13daNpcPeople_cFv */ void daNpcPeople_c::executeWait() { if(!executeCommon()) { - if(mPathRun.mPath != NULL && m76E != 0 && m789 == 0 && m78A == 0) { + if(mPathRun.isPath() && m76E != 0 && m789 == 0 && m78A == 0) { m76E--; if(m76E == 0) { executeSetMode(3); @@ -5090,8 +5090,8 @@ s32 daNpcPeople_c::executeWalkInit() { void daNpcPeople_c::executeWalk() { if(!executeCommon()) { bool temp = false; - if(mPathRun.chkPointPass(current.pos, mPathRun.mbGoingForwards)) { - if(mPathRun.pointArg(mPathRun.mCurrPointIndex) == 0) { + if(mPathRun.chkPointPass(current.pos, mPathRun.getDir())) { + if(mPathRun.pointArg(mPathRun.getIdx()) == 0) { executeSetMode(8); } @@ -5106,7 +5106,7 @@ void daNpcPeople_c::executeWalk() { else { if(!temp) { if(m78F != 8) { - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); s16 angle; dNpc_calc_DisXZ_AngY(current.pos, point, NULL, &angle); m786 = m77A = angle; @@ -5123,9 +5123,9 @@ void daNpcPeople_c::executeWalk() { } } } - else if(mNpcType != 2 || !mPathRun.mbGoingForwards) { + else if(mNpcType != 2 || mPathRun.getDir() == 0) { mEtcFlag |= 4; - mPathRun.mbGoingForwards ^= 1; + mPathRun.turnDir(); executeSetMode(0); } else { @@ -5138,7 +5138,7 @@ void daNpcPeople_c::executeWalk() { /* 000029E8-00002B1C .text executeTurnInit__13daNpcPeople_cFv */ s32 daNpcPeople_c::executeTurnInit() { - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); s16 angle; dNpc_calc_DisXZ_AngY(current.pos, point, NULL, &angle); if(angle == current.angle.y && (mEtcFlag & 8) == 0) { @@ -5159,7 +5159,7 @@ void daNpcPeople_c::executeTurn() { temp = m77A; } else { - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); dNpc_calc_DisXZ_AngY(current.pos, point, 0, &temp); } @@ -5309,7 +5309,7 @@ void daNpcPeople_c::executeLetter() { mEtcFlag &= ~0x8; m79D = 1; m79E = 1; - mPathRun.mbGoingForwards ^= 0x1; + mPathRun.turnDir(); executeSetMode(6); } @@ -7641,7 +7641,7 @@ void daNpcPeople_c::chkAttention() { } else { m799 = 0; - if(mPathRun.mPath == NULL) { + if(!mPathRun.isPath()) { if(m770 != 0) { m770--; if(m770 == 0 && mNpcType == 0x5) { @@ -8335,9 +8335,9 @@ cXyz daNpcPeople_c::getDirDistToPos(s16 angle, f32 mag) { void daNpcPeople_c::warp() { if(fopAcM_GetParam(this) & 0x80000000) { fopAcM_SetParam(this, fopAcM_GetParam(this) & ~0x80000000); - if(mPathRun.mPath != NULL) { - mPathRun.mbGoingForwards = true; - mPathRun.mCurrPointIndex = 0; + if(mPathRun.isPath()) { + mPathRun.setDir(true); + mPathRun.setIdx(0); old.pos = mPathRun.getPoint(0); current.pos = old.pos; mPathRun.incIdxLoop(); diff --git a/src/d/actor/d_a_npc_photo.cpp b/src/d/actor/d_a_npc_photo.cpp index 5e122185e..c0acf6247 100644 --- a/src/d/actor/d_a_npc_photo.cpp +++ b/src/d/actor/d_a_npc_photo.cpp @@ -712,14 +712,14 @@ cPhs_State daNpcPhoto_c::createInit() { u8 pathIndex = getPrmRailID(); if(pathIndex != 0xFF) { mPathRun.setInf(pathIndex, fopAcM_GetRoomNo(this), true); - if(mPathRun.mPath == NULL) { + if(!mPathRun.isPath()) { return cPhs_ERROR_e; } - dPath_GetNextRoomPath(mPathRun.mPath, -1); + dPath_GetNextRoomPath(mPathRun.getPath(), -1); if(dComIfGs_isEventBit(l_save_dat.field_0x02)) { - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); old.pos = point; current.pos = old.pos; mPathRun.incIdxLoop(); @@ -939,7 +939,7 @@ void daNpcPhoto_c::executeSetMode(u8 param_1) { field_0x9A8 = l_npc_dat.field_0x4E + cM_rndF(l_npc_dat.field_0x50 - l_npc_dat.field_0x4E); break; case 3: - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); dNpc_calc_DisXZ_AngY(current.pos, point, NULL, &angle); if (angle == current.angle.y) { @@ -963,10 +963,7 @@ void daNpcPhoto_c::executeWait() { if(!dComIfGs_isEventBit(l_save_dat.field_0x02)){ field_0x988 = 150.0f; - f32 zPos = l_npc_dat.field_0x34; - field_0x958.x = 0.0f; - field_0x958.y = 0.0f; - field_0x958.z = zPos; + field_0x958.set(0.0f, 0.0f, l_npc_dat.field_0x34); if(mCyl.ChkCoHit()) { daNpcPhoto_c* pActor = (daNpcPhoto_c*)mCyl.GetCoHitAc(); @@ -1061,14 +1058,14 @@ void daNpcPhoto_c::executeTalk() { void daNpcPhoto_c::executeWalk() { if(!executeCommon()) { bool temp = false; - if(mPathRun.chkPointPass(current.pos, mPathRun.mbGoingForwards) && !mPathRun.nextIdxAuto()) { + if(mPathRun.chkPointPass(current.pos, mPathRun.getDir()) && !mPathRun.nextIdxAuto()) { temp = true; } if (field_0x9BD != 0) { executeSetMode(0); } else if (!temp) { - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); s16 angle; dNpc_calc_DisXZ_AngY(current.pos, point, NULL, &angle); field_0x9BA = angle; @@ -1078,9 +1075,9 @@ void daNpcPhoto_c::executeWalk() { m_jnt.setTrn(); field_0x984 = l_npc_dat.field_0x3C; - u8 pointIndex = mPathRun.mCurrPointIndex; + u8 pointIndex = mPathRun.getIdx(); - if (mPathRun.mbGoingForwards) { + if (mPathRun.getDir()) { pointIndex--; } else { pointIndex++; @@ -1103,7 +1100,7 @@ void daNpcPhoto_c::executeWalk() { void daNpcPhoto_c::executeTurn() { if (!executeCommon()) { s16 angle; - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); dNpc_calc_DisXZ_AngY(current.pos, point, NULL, &angle); // maybe not oldpos field_0x9BA = angle; field_0x994 = false; @@ -1398,7 +1395,7 @@ void daNpcPhoto_c::eventPosSetInit() { if(ac){ cXyz temp = ac->current.pos; - dPath* path = dPath_GetNextRoomPath(mPathRun.mPath, fopAcM_GetRoomNo(this)); + dPath* path = dPath_GetNextRoomPath(mPathRun.getPath(), fopAcM_GetRoomNo(this)); if(path != NULL){ dPnt* pnt = dPath_GetPnt(path, ac->getTagNo()); @@ -1432,8 +1429,8 @@ void daNpcPhoto_c::eventPosSetInit() { shape_angle.y = current.angle.y = field_0x9AE = angle; } dComIfGp_event_setTalkPartner(this); - mPathRun.mCurrPointIndex = mPathRun.mPath->m_num - 2; - mPathRun.mbGoingForwards = false; + mPathRun.setIdx(mPathRun.getPath()->m_num - 2); + mPathRun.setDir(0); executeSetMode(0); field_0x9C1 = 1; diff --git a/src/d/actor/d_a_npc_roten.cpp b/src/d/actor/d_a_npc_roten.cpp index ffa4df1b0..5e9768b65 100644 --- a/src/d/actor/d_a_npc_roten.cpp +++ b/src/d/actor/d_a_npc_roten.cpp @@ -1690,18 +1690,18 @@ BOOL daNpcRoten_c::createHeap() { field_0x6D4 = field_0x6D8->getModel(); m_jnt.setHeadJntNum(modelData->getJointName()->getIndex("head")); - JUT_ASSERT(0x632, m_jnt.getHeadJntNum() >= 0); + JUT_ASSERT(DEMO_SELECT(1585, 1586), m_jnt.getHeadJntNum() >= 0); m_jnt.setBackboneJntNum(modelData->getJointName()->getIndex("backbone1")); - JUT_ASSERT(0x637, m_jnt.getBackboneJntNum() >= 0); + JUT_ASSERT(DEMO_SELECT(1590, 1591), m_jnt.getBackboneJntNum() >= 0); if(!initTexPatternAnm(false)) { return false; } m_hand_L_jnt_num = modelData->getJointName()->getIndex("handL"); - JUT_ASSERT(0x63E, m_hand_L_jnt_num >= 0); + JUT_ASSERT(DEMO_SELECT(1597, 1598), m_hand_L_jnt_num >= 0); m_bag_jnt_num = modelData->getJointName()->getIndex("Bag1"); - JUT_ASSERT(0x642, m_bag_jnt_num >= 0); + JUT_ASSERT(DEMO_SELECT(1601, 1602), m_bag_jnt_num >= 0); for(u16 i = 0; i < modelData->getJointNum(); i++) { if(i == m_jnt.getHeadJntNum() || i == m_jnt.getBackboneJntNum()) { @@ -1726,16 +1726,16 @@ cPhs_State daNpcRoten_c::createInit() { int weight = 0xFF; if(getPrmRailID() != 0xFF) { mPathRun.setInf(getPrmRailID(), fopAcM_GetRoomNo(this), true); - if(mPathRun.mPath == NULL) { + if(!mPathRun.isPath()) { return cPhs_ERROR_e; } fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e); - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); old.pos = point; current.pos = old.pos; mPathRun.incIdxLoop(); - point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + point = mPathRun.getPoint(mPathRun.getIdx()); dNpc_calc_DisXZ_AngY(current.pos, point, NULL, ¤t.angle.y); field_0x9A6 = 1; weight = 0xFE; @@ -1762,9 +1762,14 @@ cPhs_State daNpcRoten_c::createInit() { fopAcM_setCullSizeBox(this, -200.0f, 0.0f, -200.0f, 200.0f, 300.0f, 200.0f); mObjAcch.CrrPos(*dComIfG_Bgsp()); + +#if VERSION == VERSION_DEMO + current.pos.y = home.pos.y = mObjAcch.GetGroundH(); +#else if(-G_CM3D_F_INF != mObjAcch.GetGroundH()) { current.pos.y = home.pos.y = mObjAcch.GetGroundH(); } +#endif setMtx(); mpMorf->getModel()->calc(); @@ -1784,8 +1789,18 @@ cPhs_State daNpcRoten_c::createInit() { /* 000011C8-0000122C .text _delete__12daNpcRoten_cFv */ bool daNpcRoten_c::_delete() { - dComIfG_resDeleteDemo(getPhaseP(), l_arcname_tbl[mNpcNo]); - if(heap && mpMorf) { +#if VERSION == VERSION_DEMO + if (field_0x9BC) +#endif + { + dComIfG_resDeleteDemo(getPhaseP(), l_arcname_tbl[mNpcNo]); + } + if ( +#if VERSION > VERSION_DEMO + heap && +#endif + mpMorf + ) { mpMorf->stopZelAnime(); } @@ -1916,7 +1931,7 @@ s32 daNpcRoten_c::executeWaitInit() { /* 00001790-00001808 .text executeWait__12daNpcRoten_cFv */ void daNpcRoten_c::executeWait() { - if(!executeCommon() && mPathRun.mPath != NULL && field_0x9A6 && !field_0x9B5) { + if(!executeCommon() && mPathRun.isPath() && field_0x9A6 && !field_0x9B5) { field_0x9A6--; if(field_0x9A6 == 0) { executeSetMode(3); @@ -1958,7 +1973,7 @@ s32 daNpcRoten_c::executeWalkInit() { void daNpcRoten_c::executeWalk() { if(!executeCommon()) { bool temp = false; - if(mPathRun.chkPointPass(current.pos, mPathRun.mbGoingForwards) && !mPathRun.nextIdxAuto()) { + if(mPathRun.chkPointPass(current.pos, mPathRun.getDir()) && !mPathRun.nextIdxAuto()) { temp = true; } @@ -1966,7 +1981,7 @@ void daNpcRoten_c::executeWalk() { executeSetMode(0); } else if(!temp) { - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); s16 angle; dNpc_calc_DisXZ_AngY(current.pos, point, NULL, &angle); field_0x9B0 = angle; @@ -1983,7 +1998,7 @@ void daNpcRoten_c::executeWalk() { } } else { - mPathRun.mbGoingForwards ^= 1; + mPathRun.turnDir(); executeSetMode(0); } } @@ -1993,7 +2008,7 @@ void daNpcRoten_c::executeWalk() { s32 daNpcRoten_c::executeTurnInit() { int ret = 3; - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); s16 angle; dNpc_calc_DisXZ_AngY(current.pos, point, NULL, &angle); if(angle == current.angle.y) { @@ -2009,7 +2024,7 @@ s32 daNpcRoten_c::executeTurnInit() { /* 00001C98-00001D5C .text executeTurn__12daNpcRoten_cFv */ void daNpcRoten_c::executeTurn() { if(!executeCommon()) { - cXyz point = mPathRun.getPoint(mPathRun.mCurrPointIndex); + cXyz point = mPathRun.getPoint(mPathRun.getIdx()); s16 angle; dNpc_calc_DisXZ_AngY(current.pos, point, NULL, &angle); field_0x9B0 = angle; @@ -2304,8 +2319,13 @@ bool daNpcRoten_c::eventMesSet() { void daNpcRoten_c::eventSetItemInit() { u8 itemIdx = l_item_dat[mNpcNo][field_0x9BE]; cXyz pos(0.0f, 0.0f, 0.0f); - u8 itemNo = itemIdx + FLOWER_1; - field_0x6F8 = fopAcM_createItemForPresentDemo(&pos, itemNo, daDitem_c::FLAG_UNK01 | daDitem_c::FLAG_UNK08, -1, fopAcM_GetRoomNo(this)); + field_0x6F8 = fopAcM_createItemForPresentDemo( + &pos, + (u8)(itemIdx + FLOWER_1), + daDitem_c::FLAG_UNK01 | daDitem_c::FLAG_UNK08, + -1, + fopAcM_GetRoomNo(this) + ); } /* 000028C4-0000290C .text eventSetItem__12daNpcRoten_cFv */ @@ -2475,7 +2495,7 @@ u32 daNpcRoten_c::getMsg() { msgNo = l_msg_xy_koukan_rupee[mNpcNo]; } else if(dComIfGp_event_chkTalkXY()) { - int itemNo = dComIfGp_event_getPreItemNo(); + u8 itemNo = dComIfGp_event_getPreItemNo(); if(isGetMap(itemNo)) { field_0x98C = l_msg_try_force; dComIfGs_setReserveItemEmpty(); @@ -2653,7 +2673,7 @@ void daNpcRoten_c::chkAttention() { field_0x9B6 = 0; field_0x9C4 = 0; - if(mPathRun.mPath == NULL) { + if(!mPathRun.isPath()) { if(field_0x9A8 != 0) { field_0x9A8--; } @@ -2717,7 +2737,7 @@ BOOL daNpcRoten_c::initTexPatternAnm(bool modify) { J3DModelData* modelData = mpMorf->getModel()->getModelData(); m_head_tex_pattern = static_cast(dComIfG_getObjectIDRes(l_arcname_tbl[mNpcNo], l_btp_ix_tbl[mNpcNo])); - JUT_ASSERT(0xBFF, m_head_tex_pattern != NULL); + JUT_ASSERT(DEMO_SELECT(3064, 3071), m_head_tex_pattern != NULL); if(!mBtpAnm.init(modelData, m_head_tex_pattern, TRUE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, modify, FALSE)) { return false; @@ -2815,7 +2835,7 @@ BOOL daNpcRoten_c::isGetMap(u8 itemNo) { s16 daNpcRoten_c::XyEventCB(int i_itemBtn) { s16 eventIdx; - int itemNo = dComIfGp_getSelectItem(i_itemBtn); + u8 itemNo = dComIfGp_getSelectItem(i_itemBtn); field_0x9BE = itemNo - FLOWER_1; if(isKoukanItem(itemNo) && dComIfGs_getEventReg(l_save_dat[mNpcNo].field_0x02) < 3 && !isGetMap(itemNo)) { if(dComIfGp_event_getTalkXYBtn() == dTalkBtn_X_e) { @@ -2868,7 +2888,8 @@ void daNpcRoten_c::setCollisionB() { /* 00003DD4-00003F08 .text setCollisionH__12daNpcRoten_cFv */ void daNpcRoten_c::setCollisionH() { - cMtx_copy(mpMorf->getModel()->getAnmMtx(m_jnt.getHeadJntNum()), *calc_mtx); + MtxP mtx = mpMorf->getModel()->getAnmMtx(m_jnt.getHeadJntNum()); + cMtx_copy(mtx, *calc_mtx); mDoMtx_stack_c::transS(l_npc_dat[mNpcNo].field_0x3C, 0.0f, 0.0f); cMtx_concat(*calc_mtx, mDoMtx_stack_c::get(), *calc_mtx); diff --git a/src/d/d_a_npc_mk_static.cpp b/src/d/d_a_npc_mk_static.cpp index a7564ddde..789816e04 100644 --- a/src/d/d_a_npc_mk_static.cpp +++ b/src/d/d_a_npc_mk_static.cpp @@ -33,7 +33,7 @@ void daNpc_Mk_Static_c::aroundWalk(fopAc_ac_c* param_1, fopAc_ac_c* param_2, u8 /* 800CB778-800CB88C .text turnPath__17daNpc_Mk_Static_cFP10fopAc_ac_cP14dNpc_PathRun_cUc */ u32 daNpc_Mk_Static_c::turnPath(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2, u8 options) { - cXyz local_2c = param_2->getPoint(param_2->mCurrPointIndex); + cXyz local_2c = param_2->getPoint(param_2->getIdx()); s16 local_48; dNpc_calc_DisXZ_AngY(param_1->current.pos, local_2c, NULL, &local_48); @@ -64,7 +64,7 @@ BOOL daNpc_Mk_Static_c::chkPath(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2, u8 } mPointIndex2 = mPointIndex1; - mPointIndex1 = param_2->mCurrPointIndex; + mPointIndex1 = param_2->getIdx(); return TRUE; } else { @@ -109,7 +109,7 @@ void daNpc_Mk_Static_c::init(u8 param_1, u16 param_2) { u8 daNpc_Mk_Static_c::goFarLink_3(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2) { daPy_lk_c* link_actor = daPy_getPlayerLinkActorClass(); dNpc_PathRun_c dStack_74; - dStack_74.setInfDrct(param_2->mPath); + dStack_74.setInfDrct(param_2->getPath()); if (mPointIndex2 == mPointIndex1) { return m0; @@ -148,14 +148,14 @@ u8 daNpc_Mk_Static_c::goFarLink_2(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2) cXyz local_80; cXyz local_74; dNpc_PathRun_c dStack_94; - dStack_94.setInfDrct(param_2->mPath); - dStack_94.mCurrPointIndex = mPointIndex2; - local_8c = dStack_94.getPoint(dStack_94.mCurrPointIndex); + dStack_94.setInfDrct(param_2->getPath()); + dStack_94.setIdx(mPointIndex2); + local_8c = dStack_94.getPoint(dStack_94.getIdx()); dStack_94.incIdxLoop(); - local_80 = dStack_94.getPoint(dStack_94.mCurrPointIndex); + local_80 = dStack_94.getPoint(dStack_94.getIdx()); dStack_94.decIdxLoop(); dStack_94.decIdxLoop(); - local_74 = dStack_94.getPoint(dStack_94.mCurrPointIndex); + local_74 = dStack_94.getPoint(dStack_94.getIdx()); s16 sVar5 = cLib_targetAngleY(&local_8c, &link_actor->current.pos); s16 sVar6 = cLib_targetAngleY(&local_8c, &local_80); @@ -185,7 +185,7 @@ u8 daNpc_Mk_Static_c::goFarLink_2(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2) } if (dStack_94.setNearPathIndxMk2(&link_actor->current.pos, mPointIndex2, 5)) { - int index_diff = dStack_94.mCurrPointIndex - mPointIndex2; + int index_diff = dStack_94.getIdx() - mPointIndex2; if ((index_diff > 0) == (abs(index_diff) <= 5)) { return 2; } else { @@ -200,7 +200,7 @@ u8 daNpc_Mk_Static_c::goFarLink_2(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2) /* 800CBE7C-800CBEE0 .text runaway_com2__17daNpc_Mk_Static_cFP14dNpc_PathRun_cUc */ void daNpc_Mk_Static_c::runaway_com2(dNpc_PathRun_c* param_1, u8 param_2) { - param_1->mCurrPointIndex = mPointIndex2; + param_1->setIdx(mPointIndex2); if (param_2 == 1) { param_1->incIdxLoop(); @@ -208,7 +208,7 @@ void daNpc_Mk_Static_c::runaway_com2(dNpc_PathRun_c* param_1, u8 param_2) { param_1->decIdxLoop(); } - mPointIndex1 = param_1->mCurrPointIndex; + mPointIndex1 = param_1->getIdx(); } /* 800CBEE0-800CC374 .text runAwayProc__17daNpc_Mk_Static_cFP10fopAc_ac_cP14dNpc_PathRun_cP8dCcD_CylPs */ @@ -224,9 +224,9 @@ u8 daNpc_Mk_Static_c::runAwayProc(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2, } switch (m0) { - case 0: + case 0: { f32 dVar8 = param_2->setNearPathIndxMk(¶m_1->current.pos); - mPointIndex1 = param_2->mCurrPointIndex; + mPointIndex1 = param_2->getIdx(); mPointIndex2 = mPointIndex1; if (dVar8 >= 50.0f) { @@ -234,8 +234,8 @@ u8 daNpc_Mk_Static_c::runAwayProc(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2, } else { return 3; } - - case 5: + } + case 5: { cXyz local_44 = param_2->getPoint(mPointIndex1); if ((local_44 - param_1->current.pos).absXZ() < 20.0f) { @@ -243,7 +243,7 @@ u8 daNpc_Mk_Static_c::runAwayProc(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2, } turnPath(param_1, param_2, 2); break; - + } case 3: if ((link_actor->current.pos - param_1->current.pos).absXZ() < 800.0f) { me = 10; @@ -314,7 +314,7 @@ bool daNpc_Mk_Static_c::chkGameSet() { /* 800CC400-800CC664 .text setRndPathPos__17daNpc_Mk_Static_cFP10fopAc_ac_cP14dNpc_PathRun_c */ void daNpc_Mk_Static_c::setRndPathPos(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2) { dBgS_GndChk local_90; - if (param_2->mPath != NULL) { + if (param_2->isPath()) { param_1->current.pos = param_2->getPoint((int) cM_rndF((int) param_2->maxPoint())); local_90.OffWall(); diff --git a/src/d/d_npc.cpp b/src/d/d_npc.cpp index ff2b2737b..174c4cc77 100644 --- a/src/d/d_npc.cpp +++ b/src/d/d_npc.cpp @@ -146,7 +146,7 @@ void dNpc_JntCtrl_c::setParam(s16 max_backbone_x, s16 max_backbone_y, s16 min_ba /* 8021ACA8-8021ACBC .text setInfDrct__14dNpc_PathRun_cFP5dPath */ bool dNpc_PathRun_c::setInfDrct(dPath* pPath) { mPath = pPath; - mCurrPointIndex = 0; + mIdx = 0; return true; } @@ -156,10 +156,10 @@ bool dNpc_PathRun_c::setInf(u8 pathIdx, s8 roomNo, u8 forwards) { bool setPath = false; mPath = 0; - mbGoingForwards = forwards; + mbDir = forwards; if(pathIdx != 0xFF) { mPath = dPath_GetRoomPath(pathIdx, roomNo); - mCurrPointIndex = 0; + clrIdx(); setPath = true; } @@ -194,19 +194,19 @@ bool dNpc_PathRun_c::chkPointPass(cXyz currPos, bool goingForwards) { bool passed = false; if (mPath) { cXyz target; - target.x = mPath->m_points[mCurrPointIndex].m_position.x; - target.z = mPath->m_points[mCurrPointIndex].m_position.z; + target.x = mPath->m_points[mIdx].m_position.x; + target.z = mPath->m_points[mIdx].m_position.z; f32 deltaX; f32 deltaZ; - if (mCurrPointIndex == 0) { + if (mIdx == 0) { deltaX = mPath->m_points[1].m_position.x - mPath->m_points[0].m_position.x; deltaZ = mPath->m_points[1].m_position.z - mPath->m_points[0].m_position.z; - } else if (mCurrPointIndex == mPath->m_num - 1) { + } else if (mIdx == mPath->m_num - 1) { deltaX = mPath->m_points[mPath->m_num - 1].m_position.x - mPath->m_points[mPath->m_num - 2].m_position.x; deltaZ = mPath->m_points[mPath->m_num - 1].m_position.z - mPath->m_points[mPath->m_num - 2].m_position.z; } else { - deltaX = mPath->m_points[mCurrPointIndex + 1].m_position.x - mPath->m_points[mCurrPointIndex - 1].m_position.x; - deltaZ = mPath->m_points[mCurrPointIndex + 1].m_position.z - mPath->m_points[mCurrPointIndex - 1].m_position.z; + deltaX = mPath->m_points[mIdx + 1].m_position.x - mPath->m_points[mIdx - 1].m_position.x; + deltaZ = mPath->m_points[mIdx + 1].m_position.z - mPath->m_points[mIdx - 1].m_position.z; } f32 f29 = cM_ssin(cM_atan2s(deltaX, deltaZ)) * (f32)0x7FFF; @@ -227,9 +227,9 @@ bool dNpc_PathRun_c::incIdx() { bool ret = true; if(mPath != 0) { - mCurrPointIndex += 1; - if(mCurrPointIndex >= mPath->m_num) { - mCurrPointIndex = mPath->m_num - 1; + mIdx += 1; + if(mIdx >= mPath->m_num) { + mIdx = mPath->m_num - 1; ret = false; } } @@ -242,9 +242,9 @@ bool dNpc_PathRun_c::incIdxLoop() { bool ret = true; if(mPath != 0) { - mCurrPointIndex += 1; - if(mCurrPointIndex >= mPath->m_num) { - mCurrPointIndex = 0; + mIdx += 1; + if(mIdx >= mPath->m_num) { + clrIdx(); ret = false; } } @@ -258,15 +258,15 @@ bool dNpc_PathRun_c::incIdxAuto() { if(mPath != 0) { if(dPath_ChkClose(mPath)) { - mCurrPointIndex += 1; - if(mCurrPointIndex >= mPath->m_num) { - mCurrPointIndex = 0; + mIdx += 1; + if(mIdx >= mPath->m_num) { + clrIdx(); } } else { - mCurrPointIndex += 1; - if(mCurrPointIndex >= mPath->m_num) { - mCurrPointIndex = mPath->m_num - 1; + mIdx += 1; + if(mIdx >= mPath->m_num) { + mIdx = mPath->m_num - 1; hitEnd = false; } } @@ -280,9 +280,9 @@ bool dNpc_PathRun_c::decIdx() { bool ret = true; if(mPath != 0) { - mCurrPointIndex -= 1; - if(mCurrPointIndex >= mPath->m_num) { - mCurrPointIndex = 0; + mIdx -= 1; + if(mIdx >= mPath->m_num) { + clrIdx(); ret = false; } } @@ -295,9 +295,9 @@ bool dNpc_PathRun_c::decIdxLoop() { bool ret = true; if(mPath != 0) { - mCurrPointIndex -= 1; - if(mCurrPointIndex >= mPath->m_num) { - mCurrPointIndex = mPath->m_num - 1; + mIdx -= 1; + if(mIdx >= mPath->m_num) { + mIdx = mPath->m_num - 1; ret = false; } } @@ -311,15 +311,15 @@ bool dNpc_PathRun_c::decIdxAuto() { if(mPath != 0) { if(dPath_ChkClose(mPath)) { - mCurrPointIndex -= 1; - if(mCurrPointIndex >= mPath->m_num) { - mCurrPointIndex = mPath->m_num - 1; + mIdx -= 1; + if(mIdx >= mPath->m_num) { + mIdx = mPath->m_num - 1; } } else { - mCurrPointIndex -= 1; - if(mCurrPointIndex >= mPath->m_num) { - mCurrPointIndex = 0; + mIdx -= 1; + if(mIdx >= mPath->m_num) { + clrIdx(); hitEnd = false; } } @@ -332,7 +332,7 @@ bool dNpc_PathRun_c::decIdxAuto() { bool dNpc_PathRun_c::nextIdx() { bool hitEnd; - if(mbGoingForwards) { + if(mbDir) { hitEnd = incIdx(); if(hitEnd == false) { decIdx(); @@ -352,7 +352,7 @@ bool dNpc_PathRun_c::nextIdx() { bool dNpc_PathRun_c::nextIdxAuto() { bool hitEnd; - if(mbGoingForwards) { + if(mbDir) { hitEnd = incIdxAuto(); if(hitEnd == 0) { decIdx(); @@ -430,7 +430,7 @@ bool dNpc_PathRun_c::setNearPathIndx(cXyz* param_1, f32 param_2) { } } - mCurrPointIndex = pointIdx; + mIdx = pointIdx; set = true; } @@ -453,7 +453,7 @@ f32 dNpc_PathRun_c::setNearPathIndxMk(cXyz* param_1) { } } - mCurrPointIndex = pointIdx; + mIdx = pointIdx; } return max_dist; @@ -478,7 +478,7 @@ bool dNpc_PathRun_c::setNearPathIndxMk2(cXyz* param_1, u8 param_2, u8 param_3) { } } - mCurrPointIndex = pointIdx; + mIdx = pointIdx; } return set; @@ -489,12 +489,12 @@ bool dNpc_PathRun_c::chkInside(cXyz* param_1) { cXyz point, point2, point3; setNearPathIndx(param_1, 0.0f); - point2 = getPoint(mCurrPointIndex); + point2 = getPoint(mIdx); decIdxLoop(); - point = getPoint(mCurrPointIndex); + point = getPoint(mIdx); incIdxLoop(); incIdxLoop(); - point3 = getPoint(mCurrPointIndex); + point3 = getPoint(mIdx); s16 angle1 = cLib_targetAngleY(&point2, &point); s16 angle2 = cLib_targetAngleY(&point2, param_1); @@ -715,12 +715,12 @@ bool dNpc_setAnm_2(mDoExt_McaMorf* pMorf, int loopMode, f32 morf, f32 speed, int /* 8021C238-8021C2E8 .text swing_vertical_init__14dNpc_HeadAnm_cFsssi */ void dNpc_HeadAnm_c::swing_vertical_init(s16 param_1, s16 param_2, s16 param_3, int param_4) { - if(param_4 == 0 || mFunc != &dNpc_HeadAnm_c::swing_vertical) { + if(param_4 == 0 || mProc != &dNpc_HeadAnm_c::swing_vertical) { field_0x1C = 0; field_0x20 = param_1; field_0x1E = param_2; field_0x14 = param_3; - mFunc = &dNpc_HeadAnm_c::swing_vertical; + setProc(&dNpc_HeadAnm_c::swing_vertical); } } @@ -733,18 +733,18 @@ void dNpc_HeadAnm_c::swing_vertical() { cLib_addCalcAngleS(&field_0x02, 0, 4, 0x1000, 0x100); if (temp2 < 0 && field_0x1C >= 0 && --field_0x20 <= 0) { - mFunc = NULL; + setProc(NULL); } } /* 8021C3C8-8021C478 .text swing_horizone_init__14dNpc_HeadAnm_cFsssi */ void dNpc_HeadAnm_c::swing_horizone_init(s16 param_1, s16 param_2, s16 param_3, int param_4) { - if(param_4 == 0 || mFunc != &dNpc_HeadAnm_c::swing_vertical) { + if(param_4 == 0 || mProc != &dNpc_HeadAnm_c::swing_vertical) { field_0x1C = 0; field_0x20 = param_1; field_0x1E = param_2; field_0x18 = param_3; - mFunc = &dNpc_HeadAnm_c::swing_horizone; + setProc(&dNpc_HeadAnm_c::swing_horizone); } } @@ -757,14 +757,14 @@ void dNpc_HeadAnm_c::swing_horizone() { cLib_addCalcAngleS(&field_0x02, temp, 4, 0x1000, 0x100); if (temp2 < 0 && field_0x1C >= 0 && --field_0x20 <= 0) { - mFunc = NULL; + setProc(NULL); } } /* 8021C55C-8021C5D8 .text move__14dNpc_HeadAnm_cFv */ void dNpc_HeadAnm_c::move() { - if(mFunc) { - (this->*mFunc)(); + if(mProc) { + (this->*mProc)(); } else { cLib_addCalcAngleS(&field_0x00, 0, 4, 0x1000, 0x100);