diff options
| author | Max Roncace <me@caseif.net> | 2026-01-13 17:58:15 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-13 14:58:15 -0800 |
| commit | c0e0bbaaf3ff70413498d2ce41f281e8aa41db07 (patch) | |
| tree | b7b24673595d7226d7d135a09802d25f86cf6214 /src/d/actor/d_a_npc_tks.cpp | |
| parent | 235cb9a9ad1b23da2a562c7b3bc5c25f2404299a (diff) | |
Clean up HIO for TUs using HIOParam/Param_c/HIO_c pattern (#3043)
Diffstat (limited to 'src/d/actor/d_a_npc_tks.cpp')
| -rw-r--r-- | src/d/actor/d_a_npc_tks.cpp | 133 |
1 files changed, 79 insertions, 54 deletions
diff --git a/src/d/actor/d_a_npc_tks.cpp b/src/d/actor/d_a_npc_tks.cpp index 1a104cb9dd..161de1d346 100644 --- a/src/d/actor/d_a_npc_tks.cpp +++ b/src/d/actor/d_a_npc_tks.cpp @@ -133,7 +133,7 @@ enum RES_Name { /* 0x2 */ K_TUBO02, }; -static daNpcTks_Param_c l_HIO; +static NPC_TKS_HIO_CLASS l_HIO; static daNpc_GetParam3 l_bckGetParamList[22] = { {-1, J3DFrameCtrl::EMode_LOOP}, @@ -201,22 +201,6 @@ static char* l_arcName = "TKS"; static char* l_myName = "Tks"; -daNpcTks_c::daNpcTks_c() {} - -daNpcTks_c::~daNpcTks_c() { - for (int i = 0; l_loadRes_list[mTksTsubo.mTsuboType][i] >= 0; i++) { - dComIfG_resDelete(&mPhases[i], l_arcNames[l_loadRes_list[mTksTsubo.mTsuboType][i]]); - } - - if (heap != NULL) { - mAnm_p->stopZelAnime(); - } - - if (parentActorID != fpcM_ERROR_PROCESS_ID_e) { - fopAcM_delete(parentActorID); - } -} - daNpcTks_HIOParam const daNpcTks_Param_c::m = { 90.0f, -3.0f, @@ -264,6 +248,42 @@ daNpcTks_HIOParam const daNpcTks_Param_c::m = { 5.0f, }; +#if DEBUG +daNpcTks_HIO_c::daNpcTks_HIO_c() { + m = daNpcTks_Param_c::m; +} + +void daNpcTks_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) { + // NONMATCHING +} + +void daNpcTks_HIO_c::genMessage(JORMContext* ctx) { + // NONMATCHING +} +#endif + +daNpcTks_c::daNpcTks_c() {} + +daNpcTks_c::~daNpcTks_c() { + for (int i = 0; l_loadRes_list[mTksTsubo.mTsuboType][i] >= 0; i++) { + dComIfG_resDelete(&mPhases[i], l_arcNames[l_loadRes_list[mTksTsubo.mTsuboType][i]]); + } + + if (heap != NULL) { + mAnm_p->stopZelAnime(); + } + + if (parentActorID != fpcM_ERROR_PROCESS_ID_e) { + fopAcM_delete(parentActorID); + } + +#if DEBUG + if (mpHIO != NULL) { + mpHIO->removeHIO(); + } +#endif +} + cPhs__Step daNpcTks_c::Create() { fopAcM_ct(this, daNpcTks_c); @@ -309,7 +329,12 @@ cPhs__Step daNpcTks_c::Create() { mSound.init(¤t.pos, &eyePos, 3, 1); mTksTsubo.mSound.init(&mTksTsubo.mPos, &mTksTsubo.mPos, 3, 1); - mAcchCir.SetWall(daNpcTks_Param_c::m.common.width, daNpcTks_Param_c::m.common.knee_length); +#if DEBUG + mpHIO = &l_HIO; + mpHIO->entryHIO("はぐれ天空人"); +#endif + + mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length); mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); mAcch.SetRoofNone(); @@ -317,13 +342,13 @@ cPhs__Step daNpcTks_c::Create() { mGndChk = mAcch.m_gnd; mGroundH = mAcch.GetGroundH(); - mCcStts.Init(daNpcTks_Param_c::m.common.weight, 0, this); + mCcStts.Init(mpHIO->m.common.weight, 0, this); mCyl.Set(mCcDCyl); mCyl.SetStts(&mCcStts); mCyl.SetTgType(0); mCyl.SetTgSPrm(0); - mCyl.SetH(daNpcTks_Param_c::m.common.height); - mCyl.SetR(daNpcTks_Param_c::m.common.width); + mCyl.SetH(mpHIO->m.common.height); + mCyl.SetR(mpHIO->m.common.width); mTksTsubo.mCyl.Set(mCcDCyl); mTksTsubo.mCyl.SetStts(&mCcStts); mTksTsubo.mCyl.SetTgType(0xD8FBFDFF); @@ -400,7 +425,7 @@ int daNpcTks_c::Execute() { int daNpcTks_c::Draw() { mAnm_p->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm); - draw(FALSE, FALSE, daNpcTks_Param_c::m.common.real_shadow_size, NULL, FALSE); + draw(FALSE, FALSE, mpHIO->m.common.real_shadow_size, NULL, FALSE); return 1; } @@ -423,7 +448,7 @@ int daNpcTks_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { case JNT_NECK1: case JNT_NECK2: case JNT_HEAD: - setLookatMtx(jntNo, i_jointList, daNpcTks_Param_c::m.common.neck_rotation_ratio); + setLookatMtx(jntNo, i_jointList, mpHIO->m.common.neck_rotation_ratio); break; } @@ -611,7 +636,7 @@ void daNpcTks_c::reset() { mMode = 0; field_0x138a = true; mPlayerArea = -1; - scale.setall(daNpcTks_Param_c::m.common.scale); + scale.setall(mpHIO->m.common.scale); dKy_tevstr_init(&mTksTsubo.mTevStr, fopAcM_GetRoomNo(this), 0xFF); setAngle(shape_angle.y); @@ -754,8 +779,8 @@ BOOL daNpcTks_c::setAction(actionFunc action) { int daNpcTks_c::getPlayerArea() { f32 fVar3, fVar2, fVar1; - fVar1 = std::pow(daNpcTks_Param_c::m.area_a_dist, 2.0f); - fVar2 = std::pow(daNpcTks_Param_c::m.area_b_dist, 2.0f); + fVar1 = std::pow(mpHIO->m.area_a_dist, 2.0f); + fVar2 = std::pow(mpHIO->m.area_b_dist, 2.0f); fVar3 = fopAcM_searchPlayerDistanceXZ2(this); if (fVar3 > 0.0f && fVar3 <= fVar2) { @@ -770,9 +795,9 @@ int daNpcTks_c::getPlayerArea() { }; void daNpcTks_c::playExpression() { - daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, daNpcTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, mpHIO->m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat0[1] = {&dat0}; - daNpcF_anmPlayData dat1 = {ANM_NONE, daNpcTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat1 = {ANM_NONE, mpHIO->m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat1[1] = {&dat1}; daNpcF_anmPlayData** ppDat[2] = { @@ -786,13 +811,13 @@ void daNpcTks_c::playExpression() { }; void daNpcTks_c::playMotion() { - daNpcF_anmPlayData dat0 = {ANM_WAIT_A, daNpcTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat0 = {ANM_WAIT_A, mpHIO->m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat0[1] = {&dat0}; - daNpcF_anmPlayData dat1 = {ANM_SWIM, daNpcTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat1 = {ANM_SWIM, mpHIO->m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat1[1] = {&dat1}; - daNpcF_anmPlayData dat2 = {ANM_RUN, daNpcTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat2 = {ANM_RUN, mpHIO->m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat2[1] = {&dat2}; - daNpcF_anmPlayData dat3 = {ANM_WALK_A, daNpcTks_Param_c::m.common.morf_frame, 0}; + daNpcF_anmPlayData dat3 = {ANM_WALK_A, mpHIO->m.common.morf_frame, 0}; daNpcF_anmPlayData* pDat3[1] = {&dat3}; daNpcF_anmPlayData dat4a = {ANM_JUMP_S, 4.0f, 1}; daNpcF_anmPlayData dat4b = {ANM_FLY, 0.0f, 0}; @@ -825,14 +850,14 @@ void daNpcTks_c::lookat() { daPy_py_c* player = NULL; J3DModel* model = mAnm_p->getModel(); BOOL i_snap = FALSE; - f32 body_angleX_min = daNpcTks_Param_c::m.common.body_angleX_min; - f32 body_angleX_max = daNpcTks_Param_c::m.common.body_angleX_max; - f32 body_angleY_min = daNpcTks_Param_c::m.common.body_angleY_min; - f32 body_angleY_max = daNpcTks_Param_c::m.common.body_angleY_max; - f32 head_angleX_min = field_0x138a ? 0.0f : daNpcTks_Param_c::m.common.head_angleX_min; - f32 head_angleX_max = field_0x138a ? 0.0f : daNpcTks_Param_c::m.common.head_angleX_max; - f32 head_angleY_min = daNpcTks_Param_c::m.common.head_angleY_min; - f32 head_angleY_max = daNpcTks_Param_c::m.common.head_angleY_max; + f32 body_angleX_min = mpHIO->m.common.body_angleX_min; + f32 body_angleX_max = mpHIO->m.common.body_angleX_max; + f32 body_angleY_min = mpHIO->m.common.body_angleY_min; + f32 body_angleY_max = mpHIO->m.common.body_angleY_max; + f32 head_angleX_min = field_0x138a ? 0.0f : mpHIO->m.common.head_angleX_min; + f32 head_angleX_max = field_0x138a ? 0.0f : mpHIO->m.common.head_angleX_max; + f32 head_angleY_min = mpHIO->m.common.head_angleY_min; + f32 head_angleY_max = mpHIO->m.common.head_angleY_max; s16 angle_delta = mCurAngle.y - mOldAngle.y; cXyz lookatPos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]}; csXyz* lookatAngle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]}; @@ -903,7 +928,7 @@ void daNpcTks_c::playTsuboAnm() { }; BOOL daNpcTks_c::checkFindPlayer() { - f32 fVar1 = pow(daNpcTks_Param_c::m.area_a_dist, 2.0); + f32 fVar1 = pow(mpHIO->m.area_a_dist, 2.0); f32 fVar2 = fopAcM_searchPlayerDistanceXZ2(this); mActorMngr[0].remove(); @@ -984,7 +1009,7 @@ void daNpcTks_c::setMotionAnm(int i_index, f32 i_morf) { mMotionLoops = 0; if (i_index == ANM_RUN) { - mAnm_p->setPlaySpeed(speedF / daNpcTks_Param_c::m.walk_spd); + mAnm_p->setPlaySpeed(speedF / mpHIO->m.walk_spd); } else { mAnm_p->setPlaySpeed(1.0f); } @@ -1224,7 +1249,7 @@ void daNpcTks_c::hide() { case 0: setMotionAnm(ANM_HIDE, 0.0f); field_0x138a = true; - field_0x1370 = cLib_getRndValue<int>(daNpcTks_Param_c::m.hide_time_1, daNpcTks_Param_c::m.hide_time_2 - daNpcTks_Param_c::m.hide_time_1); + field_0x1370 = cLib_getRndValue<int>(mpHIO->m.hide_time_1, mpHIO->m.hide_time_2 - mpHIO->m.hide_time_1); speedF = 0.0f; mMode = 2; break; @@ -1321,7 +1346,7 @@ void daNpcTks_c::showUpWait() { case 0: setMotionAnm(ANM_SHOW_UP_WAIT, 0.0f); field_0x138a = true; - field_0x1370 = cLib_getRndValue<int>(daNpcTks_Param_c::m.show_up_wait_time_1, daNpcTks_Param_c::m.show_up_wait_time_2 - daNpcTks_Param_c::m.show_up_wait_time_1); + field_0x1370 = cLib_getRndValue<int>(mpHIO->m.show_up_wait_time_1, mpHIO->m.show_up_wait_time_2 - mpHIO->m.show_up_wait_time_1); speedF = 0.0f; mMode = 2; break; @@ -1499,7 +1524,7 @@ void daNpcTks_c::broken() { mTksTsubo.field_0x586 = 0; fopAcM_onSwitch(this, getSwitchNo()); speedF = 0.0f; - speed.y = daNpcTks_Param_c::m.launch_spd; + speed.y = mpHIO->m.launch_spd; mMode = 2; break; @@ -1572,8 +1597,8 @@ void daNpcTks_c::demo_appear() { cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e); field_0x138a = false; mTksTsubo.field_0x586 = 0; - speedF = daNpcTks_Param_c::m.movement_spd; - speed.y = daNpcTks_Param_c::m.launch_spd; + speedF = mpHIO->m.movement_spd; + speed.y = mpHIO->m.launch_spd; break; case '0004': @@ -2882,9 +2907,9 @@ static int daNpcTks_IsDelete(void* a_this) { } void daNpcTks_c::setParam() { - mAcchCir.SetWallR(daNpcTks_Param_c::m.common.width); - mAcchCir.SetWallH(daNpcTks_Param_c::m.common.knee_length); - gravity = fopAcM_checkCarryNow(this) != 0 ? 0.0f: daNpcTks_Param_c::m.common.gravity; + mAcchCir.SetWallR(mpHIO->m.common.width); + mAcchCir.SetWallH(mpHIO->m.common.knee_length); + gravity = fopAcM_checkCarryNow(this) != 0 ? 0.0f: mpHIO->m.common.gravity; maxFallSpeed = -50.0f; } @@ -2945,14 +2970,14 @@ void daNpcTks_c::setAttnPos() { mEyeAngle.x = 0; } - attention_info.position.set(current.pos.x, current.pos.y + daNpcTks_Param_c::m.common.attention_offset, current.pos.z); + attention_info.position.set(current.pos.x, current.pos.y + mpHIO->m.common.attention_offset, current.pos.z); if (!fopAcM_checkCarryNow(this)) { if (!field_0x138a) { mCyl.SetC(current.pos); #if DEBUG - mCyl.SetH(daNpcTks_Param_c::m.common.height); - mCyl.SetR(daNpcTks_Param_c::m.common.width); + mCyl.SetH(mpHIO->m.common.height); + mCyl.SetR(mpHIO->m.common.width); #endif dComIfG_Ccsp()->Set(&mCyl); } @@ -3005,7 +3030,7 @@ void daNpcTks_c::drawOtherMdls() { } mTksTsubo.mShadowKey = dComIfGd_setShadow(mTksTsubo.mShadowKey, 1, model, - pcVar1, daNpcTks_Param_c::m.common.real_shadow_size, + pcVar1, mpHIO->m.common.real_shadow_size, 30.0f, pcVar1->y, fVar1, *polyBase, &mTksTsubo.mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); } |
