summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLachlan Watson <lachlanjwatson@gmail.com>2025-05-17 00:22:14 +1000
committerGitHub <noreply@github.com>2025-05-16 17:22:14 +0300
commitdf8d6655a39ae9972ad8d48f4e172ebfae155a00 (patch)
tree100448bc16bf63c8d69d393d142359d63ac1b48f
parentd86fc591f4c42d16fdb7e0cd307296aa3c3661a8 (diff)
d_a_obj_nameplate matching (#2445)
* d_a_obj_nameplate equivalent * Address review comments d_a_obj_nameplate matching
-rwxr-xr-xconfigure.py2
-rw-r--r--include/d/actor/d_a_obj_nameplate.h56
-rw-r--r--src/d/actor/d_a_obj_nameplate.cpp593
3 files changed, 333 insertions, 318 deletions
diff --git a/configure.py b/configure.py
index 4dace5866b..fede87b137 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 7b988e0dd4..fc184a3eb6 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;
+ };
-private:
- /* 0x568 */ u8 field_0x568[0x780 - 0x568];
-};
+ static M_attrs const M_attr;
+ static M_attrs const& attr() { return M_attr; }
-STATIC_ASSERT(sizeof(daObjNameplate_c) == 0x780);
+ static char* l_arcName;
-struct daObj {
-public:
- /* 80037900 */ void HitSeStart(cXyz const*, int, dCcD_GObjInf const*, u32);
+ ~daObjNameplate_c() { dComIfG_resDelete(&this->mPhase, l_arcName); }
+
+ inline int create();
+ inline int draw();
+ inline int createHeap();
+
+private:
+ /* 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);
#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 da44645831..db93b900e5 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);
+
+ 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);
}
-/* ############################################################################################## */
-/* 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
-};
-
/* 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
-/* ############################################################################################## */
-/* 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
+ local_lc1.x = 0.0f;
+ local_lc1.y = -115.0f;
+ local_lc1.z = 0.0f;
-/* 8059434C-805945CC 00032C 0280+00 1/1 0/0 0/0 .text calcAngle__16daObjNameplate_cFv */
-void daObjNameplate_c::calcAngle() {
- // NONMATCHING
+ MTXCopy(mMtx, mDoMtx_stack_c::get());
+ mDoMtx_stack_c::multVec(&local_lc1, &local_lc1);
+ mCcDSph.SetC(local_lc1);
+ dComIfG_Ccsp()->Set(&mCcDSph);
}
-/* ############################################################################################## */
-/* 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);
+/* 8059434C-805945CC 00032C 0280+00 1/1 0/0 0/0 .text calcAngle__16daObjNameplate_cFv
+ */
+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;
+}
-/* 805945CC-80594754 0005AC 0188+00 1/1 0/0 0/0 .text calcSpring__16daObjNameplate_cFv */
void daObjNameplate_c::calcSpring() {
- // NONMATCHING
+ field_0x778 += field_0x77A;
+ float fVar1 = static_cast<float>(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
+/* 80594754-805947F8 000734 00A4+00 1/1 0/0 0/0 .text checkHitAngle__16daObjNameplate_cFv
*/
-void daObjNameplate_c::checkHitAngle() {
- // NONMATCHING
+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
+/* 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<u32>(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<u32>(attention_info.flags, 0x4000000A);
+ }
+
+ 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;
+ }
}
-/* ############################################################################################## */
-/* 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
-
/* 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);
-/* 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
+ // return model == NULL;
+ if (model == NULL) {
+ return 0;
+ }
+
+ return 1;
}
-/* 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<daObjNameplate_c*>(i_this)->createHeap();
}
-/* 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;
-}
+int daObjNameplate_c::draw() {
+ g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(model, &tevStr);
-/* ############################################################################################## */
-/* 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,
-};
+ dComIfGd_setListBG();
+ mDoExt_modelUpdateDL(model);
+ dComIfGd_setList();
-/* 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
-};
+ return 1;
+}
-/* 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,
-};
+/* 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();
+}
-/* 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,
-};
+/* 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();
-/* 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,
-};
+ return 1;
+}
-/* 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,
-};
+/* 80594AB4-80594ABC 000A94 0008+00 1/0 0/0 0/0 .text
+ * daObjNameplate_IsDelete__FP16daObjNameplate_c */
+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
+/* 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
+static int daObjNameplate_Delete(daObjNameplate_c* i_this) {
+ i_this->~daObjNameplate_c();
+ return 1;
}
-/* 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
-}
+int daObjNameplate_c::create() {
+ fopAcM_SetupActor(this, daObjNameplate_c);
-/* 80594D38-80594D80 000D18 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
-}
+ 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);
+ }
-/* 80594D80-80594DC8 000D60 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
+ return phase_state;
}
-/* 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
+/* 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<daObjNameplate_c*>(i_this)->create();
}
-/* 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
-}
+/* ##############################################################################################
+ */
+/* 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, (process_method_func)daObjNameplate_Delete,
+ (process_method_func)daObjNameplate_Execute, (process_method_func)daObjNameplate_IsDelete,
+ (process_method_func)daObjNameplate_Draw,
+};
-/* 80594F0C-80594F0C 000098 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 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
+};