summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_npc_tks.cpp
diff options
context:
space:
mode:
authorMax Roncace <me@caseif.net>2026-01-13 17:58:15 -0500
committerGitHub <noreply@github.com>2026-01-13 14:58:15 -0800
commitc0e0bbaaf3ff70413498d2ce41f281e8aa41db07 (patch)
treeb7b24673595d7226d7d135a09802d25f86cf6214 /src/d/actor/d_a_npc_tks.cpp
parent235cb9a9ad1b23da2a562c7b3bc5c25f2404299a (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.cpp133
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(&current.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());
}