summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_npc_the.cpp
diff options
context:
space:
mode:
authorhev7 <143887945+hev7@users.noreply.github.com>2025-10-26 11:03:16 +0000
committerGitHub <noreply@github.com>2025-10-26 13:03:16 +0200
commita61d0272a683f99dcfe367ad31310532391cd12a (patch)
tree18a476d2c3f82cae650c78b1e562de315452319a /src/d/actor/d_a_npc_the.cpp
parent6bd013741b620402bcf46d1b714776db5c366b96 (diff)
NPC work, obj_szbridge matching (#2757)
* Some NPC work * Fix impal * Hopefully fix regressions in debug * HIO work for more NPCs * fix regressions * obj_szbridge matching * Fix literals
Diffstat (limited to 'src/d/actor/d_a_npc_the.cpp')
-rw-r--r--src/d/actor/d_a_npc_the.cpp684
1 files changed, 216 insertions, 468 deletions
diff --git a/src/d/actor/d_a_npc_the.cpp b/src/d/actor/d_a_npc_the.cpp
index 0b94b95b7e..cd1595a862 100644
--- a/src/d/actor/d_a_npc_the.cpp
+++ b/src/d/actor/d_a_npc_the.cpp
@@ -3,248 +3,66 @@
* NPC - Telma
*/
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
-#include "d/actor/d_a_npc_the.h"
-#include "SSystem/SComponent/c_math.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
+#include "SSystem/SComponent/c_math.h"
+#include "d/actor/d_a_npc_the.h"
#include "d/actor/d_a_tag_evtarea.h"
-#include "dol2asm.h"
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__10daNpcThe_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10daNpcThe_cFv();
-extern "C" void ctrlJoint__10daNpcThe_cFP8J3DJointP8J3DModel();
-extern "C" void createHeapCallBack__10daNpcThe_cFP10fopAc_ac_c();
-extern "C" void __dt__15J3DTevKColorAnmFv();
-extern "C" void __ct__15J3DTevKColorAnmFv();
-extern "C" void __dt__14J3DTevColorAnmFv();
-extern "C" void __ct__14J3DTevColorAnmFv();
-extern "C" void __dt__11J3DTexNoAnmFv();
-extern "C" void __ct__11J3DTexNoAnmFv();
-extern "C" void __dt__12J3DTexMtxAnmFv();
-extern "C" void __ct__12J3DTexMtxAnmFv();
-extern "C" void __dt__14J3DMatColorAnmFv();
-extern "C" void __ct__14J3DMatColorAnmFv();
-extern "C" void ctrlJointCallBack__10daNpcThe_cFP8J3DJointi();
-extern "C" void setExpressionAnm__10daNpcThe_cFib();
-extern "C" void setExpressionBtp__10daNpcThe_cFi();
-extern "C" void setMotionAnm__10daNpcThe_cFif();
-extern "C" void wait__10daNpcThe_cFPv();
-extern "C" void setMotion__10daNpcThe_cFifi();
-extern "C" void setExpression__10daNpcThe_cFif();
-extern "C" void waitTW__10daNpcThe_cFPv();
-extern "C" void talk__10daNpcThe_cFPv();
-extern "C" void test__10daNpcThe_cFPv();
-extern "C" bool EvCut_TwResistance__10daNpcThe_cFi();
-extern "C" void EvCut_Introduction__10daNpcThe_cFi();
-extern "C" static void daNpcThe_Create__FPv();
-extern "C" void create__10daNpcThe_cFv();
-extern "C" void reset__10daNpcThe_cFv();
-extern "C" static void daNpcThe_Delete__FPv();
-extern "C" static void daNpcThe_Execute__FPv();
-extern "C" static void daNpcThe_Draw__FPv();
-extern "C" static bool daNpcThe_IsDelete__FPv();
-extern "C" void calc__11J3DTexNoAnmCFPUs();
-extern "C" void setParam__10daNpcThe_cFv();
-extern "C" void main__10daNpcThe_cFv();
-extern "C" void playMotion__10daNpcThe_cFv();
-extern "C" void playExpression__10daNpcThe_cFv();
-extern "C" void doEvent__10daNpcThe_cFv();
-extern "C" void ctrlBtk__10daNpcThe_cFv();
-extern "C" void setAttnPos__10daNpcThe_cFv();
-extern "C" void lookat__10daNpcThe_cFv();
-extern "C" bool drawDbgInfo__10daNpcThe_cFv();
-extern "C" void func_80AFB490(void* _this, s16);
-extern "C" void __sinit_d_a_npc_the_cpp();
-extern "C" void __dt__18daNpcF_ActorMngr_cFv();
-extern "C" void __ct__18daNpcF_ActorMngr_cFv();
-extern "C" void __dt__15daNpcF_Lookat_cFv();
-extern "C" void __dt__5csXyzFv();
-extern "C" void __ct__5csXyzFv();
-extern "C" void __dt__4cXyzFv();
-extern "C" void __ct__4cXyzFv();
-extern "C" void __dt__8daNpcF_cFv();
-extern "C" void __ct__8daNpcF_cFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void setCollisions__8daNpcF_cFv();
-extern "C" void drawOtherMdls__8daNpcF_cFv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz();
-extern "C" void adjustShapeAngle__10daNpcThe_cFv();
-extern "C" void __dt__16daNpcThe_Param_cFv();
-extern "C" static void func_80AFBDE8();
-extern "C" static void func_80AFBDF0();
-extern "C" u8 const m__16daNpcThe_Param_c[108];
-extern "C" extern char const* const d_a_npc_the__stringBase0;
-extern "C" void* mEvtCutNameList__10daNpcThe_c[4];
-extern "C" u8 mEvtCutList__10daNpcThe_c[48];
-static cPhs__Step daNpcThe_Create(void*);
-static int daNpcThe_Delete(void*);
-static int daNpcThe_Execute(void*);
-static int daNpcThe_IsDelete(void*);
-static int daNpcThe_Draw(void*);
-
-//
-// External References:
-//
-
-extern "C" void changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform();
-extern "C" void
-__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
-extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs();
-extern "C" void fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz();
-extern "C" void fpcSch_JudgeForPName__FPvPv();
-extern "C" void getLayerNo__14dComIfG_play_cFi();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGs_wolfeye_effect_check__Fv();
-extern "C" void isEventBit__11dSv_event_cCFUs();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void reset__14dEvt_control_cFv();
-extern "C" void reset__14dEvt_control_cFPv();
-extern "C" void setPtI_Id__14dEvt_control_cFUi();
-extern "C" void setObjectArchive__16dEvent_manager_cFPc();
-extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc();
-extern "C" void endCheck__16dEvent_manager_cFs();
-extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
-extern "C" void getIsAddvance__16dEvent_manager_cFi();
-extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
-extern "C" void getMyNowCutName__16dEvent_manager_cFi();
-extern "C" void cutEnd__16dEvent_manager_cFi();
-extern "C" void ChkPresentEnd__16dEvent_manager_cFv();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWallR__12dBgS_AcchCirFf();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void initialize__18daNpcF_ActorMngr_cFv();
-extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c();
-extern "C" void remove__18daNpcF_ActorMngr_cFv();
-extern "C" void getActorP__18daNpcF_ActorMngr_cFv();
-extern "C" void initialize__15daNpcF_MatAnm_cFv();
-extern "C" void initialize__15daNpcF_Lookat_cFv();
-extern "C" void setParam__15daNpcF_Lookat_cFffffffffffffsP4cXyz();
-extern "C" void calc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fPP5csXyziii();
-extern "C" void execute__8daNpcF_cFv();
-extern "C" void draw__8daNpcF_cFiifP11_GXColorS10i();
-extern "C" void srchAttnActor1__8daNpcF_cFPvPv();
-extern "C" void setMtx__8daNpcF_cFv();
-extern "C" void setMtx2__8daNpcF_cFv();
-extern "C" void initialize__8daNpcF_cFv();
-extern "C" void getTrnsfrmKeyAnmP__8daNpcF_cFPci();
-extern "C" void getTexPtrnAnmP__8daNpcF_cFPci();
-extern "C" void getTexSRTKeyAnmP__8daNpcF_cFPci();
-extern "C" void setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii();
-extern "C" void setBckAnm__8daNpcF_cFP15J3DAnmTransformfiiib();
-extern "C" void setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi();
-extern "C" void setBtkAnm__8daNpcF_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi();
-extern "C" void setEnvTevColor__8daNpcF_cFv();
-extern "C" void setRoomNo__8daNpcF_cFv();
-extern "C" void playExpressionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData();
-extern "C" void playMotionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData();
-extern "C" void setLookatMtx__8daNpcF_cFiPif();
-extern "C" void ctrlMsgAnm__8daNpcF_cFRiRiP10fopAc_ac_ci();
-extern "C" void orderEvent__8daNpcF_cFiPcUsUsUcUs();
-extern "C" void initTalk__8daNpcF_cFiPP10fopAc_ac_c();
-extern "C" void talkProc__8daNpcF_cFPiiPP10fopAc_ac_c();
-extern "C" void step__8daNpcF_cFsiii();
-extern "C" void getDistTableIdx__8daNpcF_cFii();
-extern "C" void getEvtAreaTagP__8daNpcF_cFii();
-extern "C" void getAttnActorP__8daNpcF_cFiPFPvPv_Pvffffsii();
-extern "C" void chkFindPlayer2__8daNpcF_cFis();
-extern "C" void daNpcF_chkEvtBit__FUl();
-extern "C" void daNpcF_offTmpBit__FUl();
-extern "C" void dKy_darkworld_check__Fv();
-extern "C" void __ct__10dMsgFlow_cFv();
-extern "C" void __dt__10dMsgFlow_cFv();
-extern "C" void getEventId__10dMsgFlow_cFPi();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void cM_atan2s__Fff();
-extern "C" void __ct__11cBgS_GndChkFv();
-extern "C" void __dt__11cBgS_GndChkFv();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
-extern "C" void __ct__10Z2CreatureFv();
-extern "C" void __dt__10Z2CreatureFv();
-extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs();
-extern "C" void initialize__14J3DMaterialAnmFv();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void __ptmf_test();
-extern "C" void __ptmf_cmpr();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
-extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" u8 mCcDCyl__8daNpcF_c[68];
-extern "C" extern void* __vt__8daNpcF_c[18];
-extern "C" extern void* __vt__15daNpcF_MatAnm_c[4 + 6 /* padding */];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" extern void* __vt__14J3DMaterialAnm[4];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz4cXyz();
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
+
+/* 80AFBE0C-80AFBE78 000000 006C+00 11/11 0/0 0/0 .rodata m__16daNpcThe_Param_c */
+const daNpcThe_HIOParam daNpcThe_Param_c::m = {
+ 220.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 400.0f, // real_shadow_size
+ 255.0f, // weight
+ 200.0f, // height
+ 35.0f, // knee_length
+ 40.0f, // width
+ 0.0f, // body_angleX_max
+ -20.0f, // body_angleX_min
+ 10.0f, // body_angleY_max
+ -10.0f, // body_angleY_min
+ 30.0f, // head_angleX_max
+ -20.0f, // head_angleX_min
+ 45.0f, // head_angleY_max
+ -45.0f, // head_angleY_min
+ 0.6f, // neck_rotation_ratio
+ 12.0f, // morf_frame
+ 3, // talk_distance
+ 6, // talk_angle
+ 5, // attention_distance
+ 6, // attention_angle
+ 80.0f, // fov
+ 500.0f, // search_distance
+ 300.0f, // search_height
+ -300.0f, // search_depth
+ 60, // attention_time
+ 8, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ 0, // debug_mode_ON
+ 0, // debug_info_ON
+};
+
+#if DEBUG
+daNpcThe_HIO_c::daNpcThe_HIO_c() {
+ m = daNpcThe_Param_c::m;
+}
+
+void daNpcThe_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ // TODO
+}
+
+void daNpcThe_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
/* 80AFC67C-80AFC680 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static daNpcThe_Param_c l_HIO;
+NPC_THE_HIO_CLASS l_HIO;
/* 80AFC1F0-80AFC200 000020 0010+00 1/1 0/0 0/0 .data l_bmdGetParamList */
static daNpc_GetParam1 l_bmdGetParamList[2] = {
@@ -332,7 +150,10 @@ static char* l_resNames[4] = {
/* 80AFC390-80AFC3A0 0001C0 0010+00 0/2 0/0 0/0 .data l_evtGetParamList */
static int l_evtGetParamList[4] = {
- 0, 3, 3, 0,
+ 0,
+ 3,
+ 3,
+ 0,
};
/* 80AFC3A0-80AFC3B0 -00001 0010+00 0/2 0/0 0/0 .data l_evtNames */
@@ -365,14 +186,11 @@ int daNpcThe_c::Draw() {
mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm);
ActionFn action_test = &test;
int is_test = mpActionFn == action_test;
- return draw(is_test, false, daNpcThe_Param_c::m.mShadowDepth, NULL, false);
+ return draw(is_test, false, mpHIO->m.common.real_shadow_size, NULL, false);
}
/* 80AF76CC-80AF7850 0000EC 0184+00 1/1 0/0 0/0 .text __ct__10daNpcThe_cFv */
-// NONMATCHING daNpcF_c constructor needs to not be inlined
-daNpcThe_c::daNpcThe_c() {
- /* empty function */
-}
+daNpcThe_c::daNpcThe_c() {}
/* 80AF78E0-80AF7AE0 000300 0200+00 1/0 0/0 0/0 .text __dt__10daNpcThe_cFv */
daNpcThe_c::~daNpcThe_c() {
@@ -384,55 +202,18 @@ daNpcThe_c::~daNpcThe_c() {
}
}
-/* 80AFBE0C-80AFBE78 000000 006C+00 11/11 0/0 0/0 .rodata m__16daNpcThe_Param_c */
-daNpcThe_Param_c::param const daNpcThe_Param_c::m = {
- 220.0f, // mAttnOffsetY
- -3.0f, // mGravity
- 1.0f, // mScale
- 400.0f, // mShadowDepth
- 255.0f, // mCcWeight
- 200.0f, // mCylH
- 35.0f, // mWallH
- 40.0f, // mWallR
- 0.0f, // mBodyUpAngle
- -20.0f, // mBodyDownAngle
- 10.0f, // mBodyLeftAngle
- -10.0f, // mBodyRightAngle
- 30.0f, // mHeadUpAngle
- -20.0f, // mHeadDownAngle
- 45.0f, // mHeadLeftAngle
- -45.0f, // mHeadRightAngle
- 0.6f, // mNeckAngleScl
- 12.0f, // mMorfFrames
- 3, // mSpeakDistIdx
- 6, // mSpeakAngleIdx
- 5, // mTalkDistIdx
- 6, // mTalkAngleIdx
- 80.0f, // mAttnFovY
- 500.0f, // mAttnRadius
- 300.0f, // mAttnUpperY
- -300.0f, // mAttnLowerY
- 60,
- 8, // mDamageTimer
- 0, // mTestExpression
- 0, // mTestMotion
- 0, // mTestLookMode
- false, // mTest
-};
-
int daNpcThe_c::CreateHeap() {
J3DModelData* model_data = NULL;
mTwilight = dKy_darkworld_check();
int bmd_get_idx = mTwilight ? 1 : 0;
if (l_bmdGetParamList[bmd_get_idx].fileIdx >= 0) {
- model_data = static_cast<J3DModelData*>(dComIfG_getObjectRes(
- l_resNames[l_bmdGetParamList[bmd_get_idx].arcIdx],
- l_bmdGetParamList[bmd_get_idx].fileIdx
- ));
+ model_data = static_cast<J3DModelData*>(
+ dComIfG_getObjectRes(l_resNames[l_bmdGetParamList[bmd_get_idx].arcIdx],
+ l_bmdGetParamList[bmd_get_idx].fileIdx));
}
- mpMorf = new mDoExt_McaMorfSO(model_data, NULL, NULL, NULL, -1, 1.0f, 0, -1,
- &mSound, 0x80000, 0x11020284);
-
+ mpMorf = new mDoExt_McaMorfSO(model_data, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000,
+ 0x11020284);
+
if (mpMorf != NULL && mpMorf->getModel() == NULL) {
mpMorf->stopZelAnime();
mpMorf = NULL;
@@ -475,13 +256,13 @@ int daNpcThe_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
}
mDoMtx_stack_c::copy(i_model->getAnmMtx(joint_no));
-
+
switch (joint_no) {
- case 1:
- case 3:
- case 4:
- setLookatMtx(joint_no, lookat_joints, daNpcThe_Param_c::m.mNeckAngleScl);
- break;
+ case 1:
+ case 3:
+ case 4:
+ setLookatMtx(joint_no, lookat_joints, mpHIO->m.common.neck_rotation_ratio);
+ break;
}
i_model->setAnmMtx(joint_no, mDoMtx_stack_c::get());
@@ -723,10 +504,10 @@ void daNpcThe_c::setMotionAnm(int i_idx, f32 i_morf) {
}
if (l_btkGetParamList[0].fileIdx >= 0) {
- anm_tex = getTexSRTKeyAnmP(l_resNames[l_btkGetParamList[0].arcIdx],
- l_btkGetParamList[0].fileIdx);
+ anm_tex =
+ getTexSRTKeyAnmP(l_resNames[l_btkGetParamList[0].arcIdx], l_btkGetParamList[0].fileIdx);
}
-
+
if (anm_tex != NULL) {
if (setBtkAnm(anm_tex, mpMorf->getModel()->getModelData(), 1.0f, 2)) {
mAnmFlags |= ANM_PAUSE_BTK | ANM_PLAY_BTK;
@@ -743,19 +524,19 @@ void daNpcThe_c::setMotionAnm(int i_idx, f32 i_morf) {
/* 80AFA338-80AFA6CC 002D58 0394+00 1/1 0/0 0/0 .text playExpression__10daNpcThe_cFv */
void daNpcThe_c::playExpression() {
- daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat0[2] = {&dat0, NULL};
- daNpcF_anmPlayData dat1 = {ANM_F_SMILE, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat1 = {ANM_F_SMILE, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat1[2] = {&dat1, NULL};
- daNpcF_anmPlayData dat2 = {ANM_F_CHUCKLE, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat2 = {ANM_F_CHUCKLE, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat2[2] = {&dat2, NULL};
- daNpcF_anmPlayData dat3 = {ANM_F_TALK_B, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat3 = {ANM_F_TALK_B, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat3[2] = {&dat3, NULL};
- daNpcF_anmPlayData dat4 = {ANM_F_TALK_C, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat4 = {ANM_F_TALK_C, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat4[2] = {&dat4, NULL};
- daNpcF_anmPlayData dat5 = {ANM_F_LAUGH, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat5 = {ANM_F_LAUGH, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat5[2] = {&dat5, NULL};
- daNpcF_anmPlayData dat6 = {ANM_F_TALK_R, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat6 = {ANM_F_TALK_R, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat6[2] = {&dat6, NULL};
daNpcF_anmPlayData dat7 = {ANM_FH_TALK_R, 0.0f, 0};
daNpcF_anmPlayData* pDat7[2] = {&dat7, NULL};
@@ -769,23 +550,11 @@ void daNpcThe_c::playExpression() {
daNpcF_anmPlayData* pDat11[2] = {&dat11, NULL};
daNpcF_anmPlayData dat12 = {ANM_FH_LAUGH, 0.0f, 0};
daNpcF_anmPlayData* pDat12[2] = {&dat12, NULL};
- daNpcF_anmPlayData dat13 = {ANM_NONE, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat13 = {ANM_NONE, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat13[1] = {&dat13};
daNpcF_anmPlayData** ppDat[14] = {
- pDat0,
- pDat1,
- pDat2,
- pDat3,
- pDat4,
- pDat5,
- pDat6,
- pDat7,
- pDat8,
- pDat9,
- pDat10,
- pDat11,
- pDat12,
- pDat13,
+ pDat0, pDat1, pDat2, pDat3, pDat4, pDat5, pDat6,
+ pDat7, pDat8, pDat9, pDat10, pDat11, pDat12, pDat13,
};
if (mExpression >= 0 && mExpression < 14) {
playExpressionAnm(ppDat);
@@ -794,56 +563,99 @@ void daNpcThe_c::playExpression() {
/* 80AF9F94-80AFA338 0029B4 03A4+00 1/1 0/0 0/0 .text playMotion__10daNpcThe_cFv */
void daNpcThe_c::playMotion() {
- daNpcF_anmPlayData dat0 = {ANM_WAIT_A, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat0 = {ANM_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1a = {ANM_LOOK_A, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat1a = {ANM_LOOK_A, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat1b = {ANM_WAIT_LOOKING, 0.0f, 0};
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
- daNpcF_anmPlayData dat2a = {ANM_TO_WAIT_B, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat2a = {ANM_TO_WAIT_B, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat2b = {ANM_WAIT_B, 0.0f, 0};
daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b};
- daNpcF_anmPlayData dat3 = {ANM_WAIT_LOOKUP, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat3 = {ANM_WAIT_LOOKUP, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat3[1] = {&dat3};
- daNpcF_anmPlayData dat4a = {ANM_KUNE_TALK, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat4a = {ANM_KUNE_TALK, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat4b = {ANM_KUNE_WAIT_B, 0.0f, 0};
daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
- daNpcF_anmPlayData dat5 = {ANM_KUNE_WAIT_A, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat5 = {ANM_KUNE_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat5[1] = {&dat5};
- daNpcF_anmPlayData dat6a = {ANM_KUNE_SHISHI, daNpcThe_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat6b = {ANM_KUNE_WAIT_A, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat6a = {ANM_KUNE_SHISHI, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat6b = {ANM_KUNE_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b};
- daNpcF_anmPlayData dat7 = {ANM_WAIT_B, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat7 = {ANM_WAIT_B, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat7[1] = {&dat7};
- daNpcF_anmPlayData dat8 = {ANM_KUNE_WAIT_B, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat8 = {ANM_KUNE_WAIT_B, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat8[1] = {&dat8};
- daNpcF_anmPlayData dat9a = {ANM_TALK_R, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat9a = {ANM_TALK_R, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat9b = {ANM_TALKING_R, 0.0f, 0};
daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b};
- daNpcF_anmPlayData dat10a = {ANM_LOOK, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat10a = {ANM_LOOK, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat10b = {ANM_WAIT_LOOKING, 0.0f, 0};
daNpcF_anmPlayData* pDat10[2] = {&dat10a, &dat10b};
daNpcF_anmPlayData** ppDat[11] = {
- pDat0,
- pDat1,
- pDat2,
- pDat3,
- pDat4,
- pDat5,
- pDat6,
- pDat7,
- pDat8,
- pDat9,
- pDat10,
+ pDat0, pDat1, pDat2, pDat3, pDat4, pDat5, pDat6, pDat7, pDat8, pDat9, pDat10,
};
if (mMotion >= 0 && mMotion < 11) {
playMotionAnm(ppDat);
}
}
-/* 80AFC114-80AFC120 000308 000C+00 0/1 0/0 0/0 .rodata @4676 */
-static u8 const lit_4676[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
+/* 80AFB1C4-80AFB488 003BE4 02C4+00 1/1 0/0 0/0 .text lookat__10daNpcThe_cFv */
+void daNpcThe_c::lookat() {
+ fopAc_ac_c* actor = NULL;
+ J3DModel* model = mpMorf->getModel();
+
+ BOOL snap = false;
+ 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 = mpHIO->m.common.head_angleX_min;
+ f32 head_angleX_max = 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 lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
+ csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
+
+ switch (mLookMode) {
+ case LOOK_RESET:
+ snap = true;
+ break;
+ case LOOK_PLAYER_TALK:
+ head_angleY_min = -80.0f;
+ head_angleY_max = 80.0f;
+ // fallthrough
+ case LOOK_PLAYER:
+ actor = daPy_getPlayerActorClass();
+ break;
+ case LOOK_ACTOR:
+ actor = fopAcM_SearchByName(PROC_NPC_ZRC);
+ break;
+ case LOOK_ATTN:
+ break;
+ }
+
+ if (actor != NULL) {
+ if (mLookMode == LOOK_ACTOR) {
+ mLookPos = actor->eyePos;
+ } else {
+ mLookPos = actor->attention_info.position;
+ if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK && mLookMode != LOOK_ATTN)
+ {
+ mLookPos.y -= 40.0f;
+ }
+ }
+ mLookat.setAttnPos(&mLookPos);
+ } else {
+ mLookat.setAttnPos(NULL);
+ }
+
+ mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, 0.0f, 0.0f,
+ 0.0f, 0.0f, head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max,
+ mCurAngle.y, lookat_pos);
+ mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, 0);
+}
/* 80AF8744-80AF8B0C 001164 03C8+00 1/0 0/0 0/0 .text wait__10daNpcThe_cFPv */
BOOL daNpcThe_c::wait(void* param_0) {
@@ -912,11 +724,10 @@ BOOL daNpcThe_c::wait(void* param_0) {
}
if (mCurAngle.y == home.angle.y) {
- fopAc_ac_c* actor =
- getAttnActorP(mActorMngr[0].getActorP() != NULL, srchAttnActor1,
- daNpcThe_Param_c::m.mAttnRadius, daNpcThe_Param_c::m.mAttnUpperY,
- daNpcThe_Param_c::m.mAttnLowerY, daNpcThe_Param_c::m.mAttnFovY,
- shape_angle.y, 120, 1);
+ fopAc_ac_c* actor = getAttnActorP(
+ mActorMngr[0].getActorP() != NULL, srchAttnActor1,
+ mpHIO->m.common.search_distance, mpHIO->m.common.search_height,
+ mpHIO->m.common.search_depth, mpHIO->m.common.fov, shape_angle.y, 120, 1);
if (actor != NULL) {
mActorMngr[1].entry(actor);
setLookMode(LOOK_ATTN);
@@ -1008,12 +819,12 @@ BOOL daNpcThe_c::talk(void* param_0) {
bvar1 = true;
} else {
if (mType == TYPE_KAKARIKO &&
- (mpMorf->getAnm() == getTrnsfrmKeyAnmP(
- l_resNames[l_bckGetParamList[24].arcIdx], l_bckGetParamList[24].fileIdx)
- || mpMorf->getAnm() == getTrnsfrmKeyAnmP(
- l_resNames[l_bckGetParamList[25].arcIdx], l_bckGetParamList[25].fileIdx)
- || mpMorf->getAnm() == getTrnsfrmKeyAnmP(
- l_resNames[l_bckGetParamList[26].arcIdx], l_bckGetParamList[26].fileIdx)))
+ (mpMorf->getAnm() == getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[24].arcIdx],
+ l_bckGetParamList[24].fileIdx) ||
+ mpMorf->getAnm() == getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[25].arcIdx],
+ l_bckGetParamList[25].fileIdx) ||
+ mpMorf->getAnm() == getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[26].arcIdx],
+ l_bckGetParamList[26].fileIdx)))
{
setLookMode(LOOK_NONE);
} else {
@@ -1045,11 +856,11 @@ BOOL daNpcThe_c::talk(void* param_0) {
}
int item_no = 0;
if (mFlow.getEventId(&item_no) == 1) {
- mItemID = fopAcM_createItemForPresentDemo(&current.pos, item_no,
- 0, -1, -1, NULL, NULL);
+ mItemID = fopAcM_createItemForPresentDemo(&current.pos, item_no, 0, -1, -1,
+ NULL, NULL);
if (mItemID != -1) {
- s16 event_id = dComIfGp_getEventManager()
- .getEventIdx(this, "DEFAULT_GETITEM", 0xff);
+ s16 event_id = dComIfGp_getEventManager().getEventIdx(
+ this, "DEFAULT_GETITEM", 0xff);
dComIfGp_getEvent().reset(this);
fopAcM_orderChangeEventId(this, event_id, 1, 0xffff);
field_0x9ec = true;
@@ -1100,11 +911,11 @@ BOOL daNpcThe_c::test(void* param_0) {
case 2:
attention_info.flags = 0;
- if (mExpression != daNpcThe_Param_c::m.mTestExpression) {
- setExpression(daNpcThe_Param_c::m.mTestExpression, daNpcThe_Param_c::m.mMorfFrames);
+ if (mExpression != mpHIO->m.common.face_expression) {
+ setExpression(mpHIO->m.common.face_expression, mpHIO->m.common.morf_frame);
}
- setMotion(daNpcThe_Param_c::m.mTestMotion, daNpcThe_Param_c::m.mMorfFrames, false);
- setLookMode(daNpcThe_Param_c::m.mTestLookMode);
+ setMotion(mpHIO->m.common.motion, mpHIO->m.common.morf_frame, false);
+ setLookMode(mpHIO->m.common.look_mode);
break;
case 3:
@@ -1160,9 +971,9 @@ static cPhs__Step daNpcThe_Create(void* i_this) {
/* 80AF9358-80AF9748 001D78 03F0+00 1/1 0/0 0/0 .text create__10daNpcThe_cFv */
cPhs__Step daNpcThe_c::create() {
fopAcM_ct(this, daNpcThe_c);
-
+
mType = getTypeFromParam();
-
+
int flow_id = home.angle.x;
if (flow_id != 0xffff) {
mFlowID = flow_id;
@@ -1171,10 +982,11 @@ cPhs__Step daNpcThe_c::create() {
}
if (mType == TYPE_KAKARIKO
- /* dSv_event_flag_c::M_035 - Cutscene - [cutscene: 35] after carriage guarding event */
+ /* dSv_event_flag_c::M_035 - Cutscene - [cutscene: 35] after carriage guarding event */
&& (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[68])
- /* dSv_event_flag_c::M_045 - Lakebed Temple - Lakebed Temple clear */
- || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[78]))) {
+ /* dSv_event_flag_c::M_045 - Lakebed Temple - Lakebed Temple clear */
+ || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[78])))
+ {
return cPhs_ERROR_e;
}
@@ -1215,19 +1027,19 @@ cPhs__Step daNpcThe_c::create() {
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox2(this, mpMorf->getModel()->getModelData());
mSound.init(&current.pos, &eyePos, 3, 1);
- mAcchCir.SetWall(daNpcThe_Param_c::m.mWallR, daNpcThe_Param_c::m.mWallH);
+ 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();
mAcch.SetWaterNone();
mAcch.CrrPos(dComIfG_Bgsp());
- mCcStts.Init(daNpcThe_Param_c::m.mCcWeight, 0, this);
+ mCcStts.Init(mpHIO->m.common.weight, 0, this);
mColCyl.Set(mCcDCyl);
mColCyl.SetStts(&mCcStts);
mColCyl.SetTgType(0);
mColCyl.SetTgSPrm(0);
- mColCyl.SetH(daNpcThe_Param_c::m.mCylH);
- mColCyl.SetR(daNpcThe_Param_c::m.mWallR);
+ mColCyl.SetH(mpHIO->m.common.height);
+ mColCyl.SetR(mpHIO->m.common.width);
mGndChk = mAcch.m_gnd;
mGroundH = mAcch.GetGroundH();
@@ -1288,7 +1100,6 @@ static int daNpcThe_Draw(void* i_this) {
return static_cast<daNpcThe_c*>(i_this)->Draw();
}
-
/* 80AF99BC-80AF99C4 0023DC 0008+00 1/0 0/0 0/0 .text daNpcThe_IsDelete__FPv */
static int daNpcThe_IsDelete(void* i_this) {
return 1;
@@ -1302,7 +1113,7 @@ void daNpcThe_c::setParam() {
ActionFn next_action = mpNextActionFn;
mpNextActionFn = NULL;
- if (daNpcThe_Param_c::m.mTest) {
+ if (mpHIO->m.common.debug_mode_ON) {
mpNextActionFn = &test;
} else if (mTwilight) {
mpNextActionFn = &waitTW;
@@ -1315,8 +1126,8 @@ void daNpcThe_c::setParam() {
}
}
- int speak_angle_idx = mType == TYPE_KAKARIKO ? (s16)1 : daNpcThe_Param_c::m.mSpeakAngleIdx;
- int talk_angle_idx = mType == TYPE_KAKARIKO ? (s16)1 : daNpcThe_Param_c::m.mTalkAngleIdx;
+ int speak_angle_idx = mType == TYPE_KAKARIKO ? (s16)1 : mpHIO->m.common.talk_angle;
+ int talk_angle_idx = mType == TYPE_KAKARIKO ? (s16)1 : mpHIO->m.common.attention_angle;
attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
if (isSneaking()) {
attention_info.distances[fopAc_attn_LOCK_e] = 0x4e;
@@ -1325,29 +1136,28 @@ void daNpcThe_c::setParam() {
attention_info.flags |= fopAc_AttnFlag_UNK_0x800000;
} else {
if (!strcmp(dComIfGp_getStartStageName(), "R_SP116")) {
- attention_info.distances[fopAc_attn_LOCK_e]
- = getDistTableIdx(daNpcThe_Param_c::m.mTalkDistIdx, talk_angle_idx);
- attention_info.distances[fopAc_attn_TALK_e]
- = attention_info.distances[fopAc_attn_LOCK_e];
- attention_info.distances[fopAc_attn_SPEAK_e]
- = getDistTableIdx(daNpcThe_Param_c::m.mSpeakDistIdx + 1, speak_angle_idx);
+ attention_info.distances[fopAc_attn_LOCK_e] =
+ getDistTableIdx(mpHIO->m.common.attention_distance, talk_angle_idx);
+ attention_info.distances[fopAc_attn_TALK_e] =
+ attention_info.distances[fopAc_attn_LOCK_e];
+ attention_info.distances[fopAc_attn_SPEAK_e] =
+ getDistTableIdx(mpHIO->m.common.talk_distance + 1, speak_angle_idx);
} else {
- attention_info.distances[fopAc_attn_LOCK_e]
- = getDistTableIdx(daNpcThe_Param_c::m.mTalkDistIdx, talk_angle_idx);
- attention_info.distances[fopAc_attn_TALK_e]
- = attention_info.distances[fopAc_attn_LOCK_e];
- attention_info.distances[fopAc_attn_SPEAK_e]
- = getDistTableIdx(daNpcThe_Param_c::m.mSpeakDistIdx, speak_angle_idx);
+ attention_info.distances[fopAc_attn_LOCK_e] =
+ getDistTableIdx(mpHIO->m.common.attention_distance, talk_angle_idx);
+ attention_info.distances[fopAc_attn_TALK_e] =
+ attention_info.distances[fopAc_attn_LOCK_e];
+ attention_info.distances[fopAc_attn_SPEAK_e] =
+ getDistTableIdx(mpHIO->m.common.talk_distance, speak_angle_idx);
}
}
- scale.setall(daNpcThe_Param_c::m.mScale);
- mAcchCir.SetWallR(daNpcThe_Param_c::m.mWallR);
- mAcchCir.SetWallH(daNpcThe_Param_c::m.mWallH);
- gravity = daNpcThe_Param_c::m.mGravity;
+ scale.setall(mpHIO->m.common.scale);
+ mAcchCir.SetWallR(mpHIO->m.common.width);
+ mAcchCir.SetWallH(mpHIO->m.common.knee_length);
+ gravity = mpHIO->m.common.gravity;
}
-
/* 80AF9CF0-80AF9F94 002710 02A4+00 1/0 0/0 0/0 .text main__10daNpcThe_cFv */
// NONMATCHING dComIfG_gameInfo issues
BOOL daNpcThe_c::main() {
@@ -1370,9 +1180,8 @@ BOOL daNpcThe_c::main() {
mItemID = -1;
}
- if (!daNpcThe_Param_c::m.mTest
- && (dComIfGp_event_runCheck() == FALSE
- || (mOrderNewEvt && dComIfGp_getEvent().isOrderOK())))
+ if (!mpHIO->m.common.debug_mode_ON &&
+ (dComIfGp_event_runCheck() == FALSE || (mOrderNewEvt && dComIfGp_getEvent().isOrderOK())))
{
if (mOrderEvtNo != 0 && l_resNames[l_evtGetParamList[mOrderEvtNo]] != NULL) {
eventInfo.setArchiveName(l_resNames[l_evtGetParamList[mOrderEvtNo]]);
@@ -1421,7 +1230,8 @@ BOOL daNpcThe_c::doEvent() {
dEvent_manager_c& event_manager = dComIfGp_getEventManager();
if (eventInfo.checkCommandTalk()) {
if (mTwilight) {
- /* dSv_event_flag_c::F_0277 - Castle Town - Hear conversation between Telma and Ilia in Telma's shop (Twilight) */
+ /* dSv_event_flag_c::F_0277 - Castle Town - Hear conversation between Telma and Ilia
+ * in Telma's shop (Twilight) */
if (daNpcF_chkEvtBit(0x115)) {
mOrderEvtNo = 2;
} else {
@@ -1454,8 +1264,8 @@ BOOL daNpcThe_c::doEvent() {
setAction(&talk);
}
} else {
- s16 event_idx
- = dComIfGp_getEventManager().getEventIdx(this, "NO_RESPONSE", 0xff);
+ s16 event_idx =
+ dComIfGp_getEventManager().getEventIdx(this, "NO_RESPONSE", 0xff);
dComIfGp_getEvent().reset(this);
fopAcM_orderChangeEventId(this, event_idx, 1, 0xffff);
}
@@ -1484,8 +1294,9 @@ BOOL daNpcThe_c::doEvent() {
}
ret = true;
}
- if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1
- && event_manager.endCheck(mEventIdx)) {
+ if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 &&
+ event_manager.endCheck(mEventIdx))
+ {
dComIfGp_event_reset();
mOrderEvtNo = 0;
mEventIdx = -1;
@@ -1514,7 +1325,6 @@ BOOL daNpcThe_c::doEvent() {
}
/* 80AFADEC-80AFAEC8 00380C 00DC+00 1/0 0/0 0/0 .text ctrlBtk__10daNpcThe_cFv */
-// NONMATCHING somehow this needs to not inline TSinCosTable<13,f32>::sinShort
BOOL daNpcThe_c::ctrlBtk() {
if (mpMatAnm != NULL) {
J3DAnmTextureSRTKey* anm = NULL;
@@ -1552,7 +1362,7 @@ void daNpcThe_c::setAttnPos() {
mDoMtx_stack_c::multVec(&vec1, &vec1);
mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &vec1);
mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &vec1);
-
+
cXyz* attn_pos = mLookat.getAttnPos();
if (attn_pos != NULL) {
cXyz vec2 = *attn_pos - eyePos;
@@ -1564,8 +1374,7 @@ void daNpcThe_c::setAttnPos() {
mEyeAngle.x = 0;
}
- attention_info.position.set(current.pos.x,
- current.pos.y + daNpcThe_Param_c::m.mAttnOffsetY,
+ attention_info.position.set(current.pos.x, current.pos.y + mpHIO->m.common.attention_offset,
current.pos.z);
if (!mHide) {
@@ -1574,65 +1383,6 @@ void daNpcThe_c::setAttnPos() {
}
}
-/* 80AFB1C4-80AFB488 003BE4 02C4+00 1/1 0/0 0/0 .text lookat__10daNpcThe_cFv */
-// NONMATCHING rodata problems
-void daNpcThe_c::lookat() {
- fopAc_ac_c* actor = NULL;
- J3DModel* model = mpMorf->getModel();
- BOOL snap = false;
- f32 body_down_angle = daNpcThe_Param_c::m.mBodyDownAngle;
- f32 body_up_angle = daNpcThe_Param_c::m.mBodyUpAngle;
- f32 body_right_angle = daNpcThe_Param_c::m.mBodyRightAngle;
- f32 body_left_angle = daNpcThe_Param_c::m.mBodyLeftAngle;
- f32 head_down_angle = daNpcThe_Param_c::m.mHeadDownAngle;
- f32 head_up_angle = daNpcThe_Param_c::m.mHeadUpAngle;
- f32 head_right_angle = daNpcThe_Param_c::m.mHeadRightAngle;
- f32 head_left_angle = daNpcThe_Param_c::m.mHeadLeftAngle;
- s16 angle_delta = mCurAngle.y - mOldAngle.y;
- cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
- csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
-
- switch (mLookMode) {
- case LOOK_RESET:
- snap = true;
- break;
- case LOOK_PLAYER_TALK:
- head_right_angle = -80.0f;
- head_left_angle = 80.0f;
- // fallthrough
- case LOOK_PLAYER:
- actor = daPy_getPlayerActorClass();
- break;
- case LOOK_ACTOR:
- actor = fopAcM_SearchByName(PROC_NPC_ZRC);
- break;
- case LOOK_ATTN:
- break;
- }
-
- if (actor != NULL) {
- if (mLookMode == LOOK_ACTOR) {
- mLookPos = actor->eyePos;
- } else {
- mLookPos = actor->attention_info.position;
- if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK && mLookMode != LOOK_ATTN)
- {
- mLookPos.y -= 40.0f;
- }
- }
- mLookat.setAttnPos(&mLookPos);
- } else {
- mLookat.setAttnPos(NULL);
- }
-
- mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle,
- 0.0f, 0.0f, 0.0f, 0.0f,
- head_down_angle, head_up_angle, head_right_angle, head_left_angle,
- mCurAngle.y, lookat_pos);
- mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, 0);
-}
-
-
/* 80AFB488-80AFB490 003EA8 0008+00 1/0 0/0 0/0 .text drawDbgInfo__10daNpcThe_cFv */
BOOL daNpcThe_c::drawDbgInfo() {
return false;
@@ -1640,10 +1390,8 @@ BOOL daNpcThe_c::drawDbgInfo() {
/* 80AFC534-80AFC554 -00001 0020+00 1/0 0/0 0/0 .data daNpcThe_MethodTable */
static actor_method_class daNpcThe_MethodTable = {
- (process_method_func)daNpcThe_Create,
- (process_method_func)daNpcThe_Delete,
- (process_method_func)daNpcThe_Execute,
- (process_method_func)daNpcThe_IsDelete,
+ (process_method_func)daNpcThe_Create, (process_method_func)daNpcThe_Delete,
+ (process_method_func)daNpcThe_Execute, (process_method_func)daNpcThe_IsDelete,
(process_method_func)daNpcThe_Draw,
};