From df8d6655a39ae9972ad8d48f4e172ebfae155a00 Mon Sep 17 00:00:00 2001 From: Lachlan Watson Date: Sat, 17 May 2025 00:22:14 +1000 Subject: [PATCH] d_a_obj_nameplate matching (#2445) * d_a_obj_nameplate equivalent * Address review comments d_a_obj_nameplate matching --- configure.py | 2 +- include/d/actor/d_a_obj_nameplate.h | 56 ++- src/d/actor/d_a_obj_nameplate.cpp | 619 ++++++++++++++-------------- 3 files changed, 346 insertions(+), 331 deletions(-) diff --git a/configure.py b/configure.py index 4dace5866b0..fede87b1378 100755 --- a/configure.py +++ b/configure.py @@ -1571,7 +1571,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_magne_arm"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_metalbox"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mgate"), - ActorRel(NonMatching, "d_a_obj_nameplate"), + ActorRel(Matching, "d_a_obj_nameplate"), ActorRel(NonMatching, "d_a_obj_ornament_cloth"), ActorRel(NonMatching, "d_a_obj_rope_bridge"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_sWallShutter"), diff --git a/include/d/actor/d_a_obj_nameplate.h b/include/d/actor/d_a_obj_nameplate.h index 7b988e0dd45..fc184a3eb6c 100644 --- a/include/d/actor/d_a_obj_nameplate.h +++ b/include/d/actor/d_a_obj_nameplate.h @@ -1,8 +1,9 @@ #ifndef D_A_OBJ_NAMEPLATE_H #define D_A_OBJ_NAMEPLATE_H -#include "f_op/f_op_actor_mng.h" #include "d/d_cc_d.h" +#include "d/d_com_inf_game.h" +#include "d/d_msg_flow.h" /** * @ingroup actors-objects @@ -21,21 +22,56 @@ public: /* 805942B8 */ void setCcSphere(); /* 8059434C */ void calcAngle(); /* 805945CC */ void calcSpring(); - /* 80594754 */ void checkHitAngle(); + /* 80594754 */ int checkHitAngle(); /* 805947F8 */ void messageProc(); - static u8 const M_attr[32]; + struct M_attrs { + /* 0x00 */ f32 radius1; + /* 0x04 */ f32 field_0x04; + /* 0x08 */ f32 field_0x08; + /* 0x0C */ f32 field_0x0C; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ s16 field_0x18; + /* 0x1A */ s16 field_0x1A; + /* 0x1C */ s16 field_0x1C; + // unknown types + /* 0x1E */ u8 field_0x1E; + /* 0x1F */ u8 field_0x1F; + }; + + static M_attrs const M_attr; + static M_attrs const& attr() { return M_attr; } + + static char* l_arcName; + + ~daObjNameplate_c() { dComIfG_resDelete(&this->mPhase, l_arcName); } + + inline int create(); + inline int draw(); + inline int createHeap(); private: - /* 0x568 */ u8 field_0x568[0x780 - 0x568]; + /* 0x568 */ J3DModel* model; + /* 0x56C */ request_of_phase_process_class mPhase; + /* 0x574 */ Mtx mMtx; + /* 0x5A4 */ dCcD_Stts mCcDStts; + /* 0x5E0 */ dCcD_Sph mCcDSph; + /* 0x718 */ f32 field_0x718; + /* 0x71C */ f32 field_0x71C; + /* 0x720 */ s16 field_0x720; + /* 0x722 */ s16 field_0x722; + /* 0x724 */ s16 field_0x724; + /* 0x726 */ u16 field_0x726; + /* 0x728 */ dMsgFlow_c mMsgFlow; + /* 0x774 */ s16 mShowMessage; + /* 0x776 */ s16 mMessageFlowId; + /* 0x778 */ s16 field_0x778; + /* 0x77A */ s16 field_0x77A; + /* 0x77C */ s16 field_0x77C; + /* 0x77E */ s16 field_0x77E; }; STATIC_ASSERT(sizeof(daObjNameplate_c) == 0x780); -struct daObj { -public: - /* 80037900 */ void HitSeStart(cXyz const*, int, dCcD_GObjInf const*, u32); -}; - - #endif /* D_A_OBJ_NAMEPLATE_H */ diff --git a/src/d/actor/d_a_obj_nameplate.cpp b/src/d/actor/d_a_obj_nameplate.cpp index da446458319..db93b900e53 100644 --- a/src/d/actor/d_a_obj_nameplate.cpp +++ b/src/d/actor/d_a_obj_nameplate.cpp @@ -1,378 +1,357 @@ /** * @file d_a_obj_nameplate.cpp - * -*/ + * + */ #include "d/actor/d_a_obj_nameplate.h" -#include "d/d_cc_d.h" -#include "dol2asm.h" - - - -// -// Forward References: -// - -extern "C" void create_init__16daObjNameplate_cFv(); -extern "C" void initBaseMtx__16daObjNameplate_cFv(); -extern "C" void setBaseMtx__16daObjNameplate_cFv(); -extern "C" void initCcSphere__16daObjNameplate_cFv(); -extern "C" void setCcSphere__16daObjNameplate_cFv(); -extern "C" void calcAngle__16daObjNameplate_cFv(); -extern "C" void calcSpring__16daObjNameplate_cFv(); -extern "C" void checkHitAngle__16daObjNameplate_cFv(); -extern "C" void messageProc__16daObjNameplate_cFv(); -extern "C" static void createSolidHeap__FP10fopAc_ac_c(); -extern "C" static void daObjNameplate_Draw__FP16daObjNameplate_c(); -extern "C" static void daObjNameplate_Execute__FP16daObjNameplate_c(); -extern "C" static bool daObjNameplate_IsDelete__FP16daObjNameplate_c(); -extern "C" static void daObjNameplate_Delete__FP16daObjNameplate_c(); -extern "C" static void daObjNameplate_Create__FP10fopAc_ac_c(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" u8 const M_attr__16daObjNameplate_c[32]; -extern "C" extern char const* const d_a_obj_nameplate__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void HitSeStart__5daObjFPC4cXyziPC12dCcD_GObjInfUl(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -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 ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c(); -extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_distanceAngleS__Fss(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 sincosTable___5JMath[65536]; - -// -// Declarations: -// +#include "d/actor/d_a_alink.h" +#include "d/d_a_obj.h" +#include "dolphin/mtx.h" +#include "f_op/f_op_actor.h" +#include "include/SSystem/SComponent/c_math.h" /* ############################################################################################## */ /* 80594E74-80594E94 000000 0020+00 5/5 0/0 0/0 .rodata M_attr__16daObjNameplate_c */ -SECTION_RODATA u8 const daObjNameplate_c::M_attr[32] = { - 0x42, 0x48, 0x00, 0x00, 0x45, 0x1C, 0x40, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x40, 0xC0, 0x00, 0x00, - 0xBC, 0xA3, 0xD7, 0x0A, 0x3F, 0x73, 0x33, 0x33, 0x00, 0xAA, 0x07, 0xD0, 0x00, 0x0A, 0x00, 0x00, +// clang-format off +daObjNameplate_c::M_attrs const daObjNameplate_c::M_attr = { + 50.0f, + 2500.0f, + 400.0f, + 6.0f, + -0.02f, + 0.95f, + 170, + 2000, + 10, + 0x00, }; -COMPILER_STRIP_GATE(0x80594E74, &daObjNameplate_c::M_attr); - -/* 80594E94-80594E98 000020 0004+00 0/1 0/0 0/0 .rodata @3659 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3659 = -75.0f; -COMPILER_STRIP_GATE(0x80594E94, &lit_3659); -#pragma pop - -/* 80594E98-80594E9C 000024 0004+00 0/1 0/0 0/0 .rodata @3660 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3660 = -180.0f; -COMPILER_STRIP_GATE(0x80594E98, &lit_3660); -#pragma pop - -/* 80594E9C-80594EA0 000028 0004+00 0/1 0/0 0/0 .rodata @3661 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3661 = -25.0f; -COMPILER_STRIP_GATE(0x80594E9C, &lit_3661); -#pragma pop - -/* 80594EA0-80594EA4 00002C 0004+00 0/1 0/0 0/0 .rodata @3662 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3662 = 75.0f; -COMPILER_STRIP_GATE(0x80594EA0, &lit_3662); -#pragma pop - -/* 80594EA4-80594EA8 000030 0004+00 0/1 0/0 0/0 .rodata @3663 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3663 = 20.0f; -COMPILER_STRIP_GATE(0x80594EA4, &lit_3663); -#pragma pop - -/* 80594EA8-80594EAC 000034 0004+00 0/1 0/0 0/0 .rodata @3664 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3664 = 25.0f; -COMPILER_STRIP_GATE(0x80594EA8, &lit_3664); -#pragma pop - -/* 80594EAC-80594EB0 000038 0004+00 0/1 0/0 0/0 .rodata @3665 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3665 = -105.0f; -COMPILER_STRIP_GATE(0x80594EAC, &lit_3665); -#pragma pop - -/* 80594EB0-80594EB4 00003C 0004+00 0/1 0/0 0/0 .rodata @3666 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3666 = 120.0f; -COMPILER_STRIP_GATE(0x80594EB0, &lit_3666); -#pragma pop +// clang-format on /* 80594098-8059415C 000078 00C4+00 1/1 0/0 0/0 .text create_init__16daObjNameplate_cFv */ void daObjNameplate_c::create_init() { - // NONMATCHING + fopAcM_setCullSizeBox(this, -75.0f, -180.0f, -25.0f, 75.0f, 20.0f, 25.0f); + + cXyz local_18(cM_ssin(shape_angle.y) * 20.0f, -105.0, cM_scos(shape_angle.y) * 20.0f); + VECAdd(&attention_info.position, &local_18, &attention_info.position); + + eyePos.y = eyePos.y - 120.0f; + + mMessageFlowId = fopAcM_GetParam(this); + + initBaseMtx(); + initCcSphere(); } /* 8059415C-8059417C 00013C 0020+00 1/1 0/0 0/0 .text initBaseMtx__16daObjNameplate_cFv */ void daObjNameplate_c::initBaseMtx() { - // NONMATCHING + setBaseMtx(); } /* 8059417C-80594248 00015C 00CC+00 2/2 0/0 0/0 .text setBaseMtx__16daObjNameplate_cFv */ void daObjNameplate_c::setBaseMtx() { - // NONMATCHING -} + mDoMtx_stack_c::transS(home.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); -/* ############################################################################################## */ -/* 80594EB4-80594EF4 000040 0040+00 1/1 0/0 0/0 .rodata ccSphSrc$3700 */ -const static dCcD_SrcSph ccSphSrc = { - { - {0x0, {{0x0, 0x0, 0x0}, {0x1607a, 0x11}, 0x99}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, -115.0f, 0.0f}, 50.0f} // mSph - } // mSphAttr -}; + switch (attr().field_0x1E) { + case 0: + mDoMtx_stack_c::ZrotM(field_0x724); + mDoMtx_stack_c::YrotM(field_0x722); + break; + case 1: + mDoMtx_stack_c::ZrotM(field_0x724); + mDoMtx_stack_c::YrotM(field_0x722); + break; + default: + break; + } + + model->setBaseTRMtx(mDoMtx_stack_c::get()); + PSMTXCopy(mDoMtx_stack_c::now, mMtx); +} /* 80594248-805942B8 000228 0070+00 1/1 0/0 0/0 .text initCcSphere__16daObjNameplate_cFv */ void daObjNameplate_c::initCcSphere() { - // NONMATCHING + /* 80594EB4-80594EF4 000040 0040+00 1/1 0/0 0/0 .rodata ccSphSrc$3700 */ + const static dCcD_SrcSph ccSphSrc = { + { + {0x0, {{0x0, 0x0, 0x0}, {0x1607a, 0x11}, 0x99}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, -115.0f, 0.0f}, 50.0f} // mSph + } // mSphAttr + }; + + mCcDStts.Init(0xff, 0xff, this); + mCcDSph.Set(ccSphSrc); + mCcDSph.SetStts(&mCcDStts); + mCcDSph.SetC(home.pos); + mCcDSph.SetR(attr().radius1); } -/* ############################################################################################## */ -/* 80594EF4-80594EF8 000080 0004+00 2/3 0/0 0/0 .rodata @3718 */ -SECTION_RODATA static u8 const lit_3718[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80594EF4, &lit_3718); - -/* 80594EF8-80594EFC 000084 0004+00 1/1 0/0 0/0 .rodata @3719 */ -SECTION_RODATA static f32 const lit_3719 = -115.0f; -COMPILER_STRIP_GATE(0x80594EF8, &lit_3719); - /* 805942B8-8059434C 000298 0094+00 1/1 0/0 0/0 .text setCcSphere__16daObjNameplate_cFv */ void daObjNameplate_c::setCcSphere() { - // NONMATCHING + cXyz local_lc1; + cXyz local_lc(0.0f, -115.0f, 0.0f); // fails unless this unused cXyz is present + + local_lc1.x = 0.0f; + local_lc1.y = -115.0f; + local_lc1.z = 0.0f; + + MTXCopy(mMtx, mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVec(&local_lc1, &local_lc1); + mCcDSph.SetC(local_lc1); + dComIfG_Ccsp()->Set(&mCcDSph); } -/* ############################################################################################## */ -/* 80594EFC-80594F04 000088 0004+04 0/1 0/0 0/0 .rodata @3769 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3769[1 + 1 /* padding */] = { - 200.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80594EFC, &lit_3769); -#pragma pop - -/* 8059434C-805945CC 00032C 0280+00 1/1 0/0 0/0 .text calcAngle__16daObjNameplate_cFv */ -void daObjNameplate_c::calcAngle() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80594F04-80594F0C 000090 0008+00 1/1 0/0 0/0 .rodata @3791 */ -SECTION_RODATA static u8 const lit_3791[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80594F04, &lit_3791); - -/* 805945CC-80594754 0005AC 0188+00 1/1 0/0 0/0 .text calcSpring__16daObjNameplate_cFv */ -void daObjNameplate_c::calcSpring() { - // NONMATCHING -} - -/* 80594754-805947F8 000734 00A4+00 1/1 0/0 0/0 .text checkHitAngle__16daObjNameplate_cFv +/* 8059434C-805945CC 00032C 0280+00 1/1 0/0 0/0 .text calcAngle__16daObjNameplate_cFv */ -void daObjNameplate_c::checkHitAngle() { - // NONMATCHING +void daObjNameplate_c::calcAngle() { + if (field_0x77E > 0) { + field_0x77E += -1; + } + + if (field_0x77E <= 0 && (mCcDSph.ChkTgHit() != 0)) { + int hitAngle = checkHitAngle(); + + // can't be switch + if (hitAngle == 0 || hitAngle == 2) { + field_0x77A = (s16)attr().field_0x04; + } else if (hitAngle == 1 || hitAngle == 3) { + field_0x77A = (s16)-attr().field_0x04; + } + + field_0x71C = 0.0f; + field_0x718 = attr().field_0x08; + field_0x77E = attr().field_0x1C; + + daObj::HitSeStart(&this->current.pos, fopAcM_GetRoomNo(this), &this->mCcDSph, 14); + } else if (mCcDSph.ChkCoHit() != 0) { + int hitAngle = checkHitAngle(); + + if (hitAngle == 0 || hitAngle == 2) { + field_0x77A = (s16)attr().field_0x18; + } else if (hitAngle == 1 || hitAngle == 3) { + field_0x77A = -(s16)attr().field_0x18; + } + + field_0x71C = 0.0f; + field_0x77E = attr().field_0x1C; + } else if (daPy_getPlayerActorClass()->checkFrontRollCrash() && + fopAcM_searchPlayerDistanceXZ(this) < 200.0f) + { + int hitAngle = checkHitAngle(); + if (hitAngle == 0 || hitAngle == 2) { + field_0x77A = (s16)attr().field_0x04; + } else if (hitAngle == 1 || hitAngle == 3) { + field_0x77A = (s16)-attr().field_0x04; + } + + field_0x77E = attr().field_0x1C; + } + + field_0x720 = 0; + calcSpring(); + field_0x724 = (field_0x718 * cM_scos(field_0x77C)); + + if (cLib_chaseF(&field_0x718, 0.0f, attr().field_0x0C) != 0) { + field_0x77C = 0; + } + + field_0x77C += attr().field_0x1A; } -/* 805947F8-80594950 0007D8 0158+00 1/1 0/0 0/0 .text messageProc__16daObjNameplate_cFv +void daObjNameplate_c::calcSpring() { + field_0x778 += field_0x77A; + float fVar1 = static_cast(field_0x778) * attr().field_0x10; + + if ((field_0x77A > 0 && fVar1 < 0.0f) || (field_0x77A < 0 && fVar1 > 0.0f)) { + fVar1 = 0.0f; + } + + field_0x71C = (field_0x71C + fVar1) * attr().field_0x14; + field_0x778 = (float)field_0x778 + field_0x71C; + f32 iVar2 = (float)abs((int)field_0x778); + + if (iVar2 > attr().field_0x04) { + if (field_0x778 > 0) { + field_0x778 = (s16)attr().field_0x04; + } else if (field_0x778 < 0) { + field_0x778 = (s16)-attr().field_0x04; + } + } + + field_0x77A = 0; + field_0x722 = field_0x778; +} + +/* 80594754-805947F8 000734 00A4+00 1/1 0/0 0/0 .text checkHitAngle__16daObjNameplate_cFv + */ +int daObjNameplate_c::checkHitAngle() { + s16 sourceAngle = fopAcM_searchPlayerAngleY(this) - shape_angle.y; + + if (sourceAngle >= 0 && sourceAngle < 0x4000) { + return 0; + } else if (sourceAngle >= 0x4000 && sourceAngle < 0x7fff) { + return 1; + } else if (sourceAngle < -0x4000 && sourceAngle >= -0x8000) { + return 2; + } else if (sourceAngle < 0 && sourceAngle >= -0x4000) { + return 3; + } + + return -1; +} + +/* 805947F8-80594950 0007D8 0158+00 1/1 0/0 0/0 .text messageProc__16daObjNameplate_cFv */ void daObjNameplate_c::messageProc() { - // NONMATCHING -} + switch (mShowMessage) { + case 0: + if (mMessageFlowId != -1 && + cLib_distanceAngleS(shape_angle.GetY(), fopAcM_searchPlayerAngleY(this)) < 0x3000) + { + fopAcM_OnStatus(this, 0); + cLib_onBit(attention_info.flags, 0x4000000A); + attention_info.distances[fopAc_attn_TALK_e] = 0x15; + attention_info.distances[fopAc_attn_SPEAK_e] = 0x15; + eventInfo.onCondition(1); + } else { + fopAcM_OffStatus(this, 0); + cLib_offBit(attention_info.flags, 0x4000000A); + } -/* ############################################################################################## */ -/* 80594F0C-80594F0C 000098 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80594F0C = "J_Hyosatu"; -SECTION_DEAD static char const* const stringBase_80594F16 = "J_Hyousatu.bmd"; -#pragma pop + if (dComIfGp_event_runCheck() && eventInfo.checkCommandTalk()) { + mMsgFlow.init(this, mMessageFlowId, 0, 0); + mShowMessage = 1; + } + break; + + case 1: + dComIfG_play_c& play = g_dComIfG_gameInfo.play; + if (play.getEvent().runCheck() && eventInfo.checkCommandTalk() != 0 && + mMsgFlow.doFlow(this, NULL, 0) != 0) + { + play.getEvent().reset(); + mShowMessage = 0; + } + break; + } +} /* 80594F28-80594F2C -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_nameplate__stringBase0; +char* daObjNameplate_c::l_arcName = "J_Hyosatu"; -/* 80594950-805949C8 000930 0078+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */ -static void createSolidHeap(fopAc_ac_c* param_0) { - // NONMATCHING +int daObjNameplate_c::createHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "J_Hyousatu.bmd"); + model = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + + // return model == NULL; + if (model == NULL) { + return 0; + } + + return 1; } -/* 805949C8-80594A6C 0009A8 00A4+00 1/0 0/0 0/0 .text daObjNameplate_Draw__FP16daObjNameplate_c */ -static void daObjNameplate_Draw(daObjNameplate_c* param_0) { - // NONMATCHING -} - -/* 80594A6C-80594AB4 000A4C 0048+00 1/0 0/0 0/0 .text daObjNameplate_Execute__FP16daObjNameplate_c +/* 80594950-805949C8 000930 0078+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */ -static void daObjNameplate_Execute(daObjNameplate_c* param_0) { - // NONMATCHING +static int createSolidHeap(fopAc_ac_c* i_this) { + return static_cast(i_this)->createHeap(); +} + +int daObjNameplate_c::draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(model); + dComIfGd_setList(); + + return 1; +} + +/* 805949C8-80594A6C 0009A8 00A4+00 1/0 0/0 0/0 .text daObjNameplate_Draw__FP16daObjNameplate_c + */ +static int daObjNameplate_Draw(daObjNameplate_c* i_this) { + return i_this->draw(); +} + +/* 80594A6C-80594AB4 000A4C 0048+00 1/0 0/0 0/0 .text + * daObjNameplate_Execute__FP16daObjNameplate_c + */ +static int daObjNameplate_Execute(daObjNameplate_c* i_this) { + i_this->calcAngle(); + i_this->setBaseMtx(); + i_this->setCcSphere(); + i_this->messageProc(); + + return 1; } /* 80594AB4-80594ABC 000A94 0008+00 1/0 0/0 0/0 .text * daObjNameplate_IsDelete__FP16daObjNameplate_c */ -static bool daObjNameplate_IsDelete(daObjNameplate_c* param_0) { - return true; +static int daObjNameplate_IsDelete(daObjNameplate_c* i_this) { + return 1; } -/* ############################################################################################## */ +/* 80594ABC-80594BF8 000A9C 013C+00 1/0 0/0 0/0 .text + * daObjNameplate_Delete__FP16daObjNameplate_c + */ +static int daObjNameplate_Delete(daObjNameplate_c* i_this) { + i_this->~daObjNameplate_c(); + return 1; +} + +int daObjNameplate_c::create() { + fopAcM_SetupActor(this, daObjNameplate_c); + + int phase_state = dComIfG_resLoad(&mPhase, l_arcName); + if (phase_state == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x800)) { + return cPhs_ERROR_e; + } + create_init(); + fopAcM_SetMtx(this, mMtx); + } + + return phase_state; +} + +/* 80594BF8-80594D38 000BD8 0140+00 1/0 0/0 0/0 .text daObjNameplate_Create__FP10fopAc_ac_c */ +static int daObjNameplate_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); +} + +/* ############################################################################################## + */ /* 80594F2C-80594F4C -00001 0020+00 1/0 0/0 0/0 .data l_daObjNameplate_Method */ static actor_method_class l_daObjNameplate_Method = { - (process_method_func)daObjNameplate_Create__FP10fopAc_ac_c, - (process_method_func)daObjNameplate_Delete__FP16daObjNameplate_c, - (process_method_func)daObjNameplate_Execute__FP16daObjNameplate_c, - (process_method_func)daObjNameplate_IsDelete__FP16daObjNameplate_c, - (process_method_func)daObjNameplate_Draw__FP16daObjNameplate_c, + (process_method_func)daObjNameplate_Create, (process_method_func)daObjNameplate_Delete, + (process_method_func)daObjNameplate_Execute, (process_method_func)daObjNameplate_IsDelete, + (process_method_func)daObjNameplate_Draw, }; /* 80594F4C-80594F7C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_NamePlate */ extern actor_process_profile_definition g_profile_Obj_NamePlate = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_NamePlate, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjNameplate_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 32, // mPriority - &l_daObjNameplate_Method, // sub_method - 0x00040180, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_NamePlate, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjNameplate_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 32, // mPriority + &l_daObjNameplate_Method, // sub_method + 0x00040180, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80594F7C-80594F88 000054 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80594F88-80594F94 000060 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80594F94-80594FA0 00006C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80594FA0-80594FAC 000078 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80594ABC-80594BF8 000A9C 013C+00 1/0 0/0 0/0 .text daObjNameplate_Delete__FP16daObjNameplate_c - */ -static void daObjNameplate_Delete(daObjNameplate_c* param_0) { - // NONMATCHING -} - -/* 80594BF8-80594D38 000BD8 0140+00 1/0 0/0 0/0 .text daObjNameplate_Create__FP10fopAc_ac_c */ -static void daObjNameplate_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80594D38-80594D80 000D18 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80594D80-80594DC8 000D60 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80594DC8-80594E24 000DA8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80594E24-80594E6C 000E04 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80594F0C-80594F0C 000098 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */