d_a_tag_etc PR Feedback

This commit is contained in:
Crain-32
2023-12-24 09:26:52 -07:00
parent f687a1bdb4
commit 3ccb9e43be
2 changed files with 37 additions and 67 deletions
+1 -1
View File
@@ -22,7 +22,7 @@ public:
/* 0x291*/ u8 field_0x291;
/* 0x292*/ u8 field_0x292;
/* 0x293*/ u8 field_0x293;
/* 0x294 */ void* field_0x294;
/* 0x294 */ s32 processId;
/* 0x298 */ s16 eventIndex;
/* 0x29A */ short field_0x29A;
};
+36 -66
View File
@@ -4,45 +4,31 @@
//
#include "d/actor/d_a_tag_etc.h"
#include "d/actor/d_a_npc_md.h"
#include "d/d_com_inf_game.h"
#include "d/d_event.h"
#include "d/d_event_manager.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_iter.h"
#include "f_pc/f_pc_searcher.h"
#include "global.h"
/* 00000078-00000084 .text getEventNo__11daTag_Etc_cFv */
u8 daTag_Etc_c::getEventNo() {
return this->mBase.mParameters >> 0x18;
return fopAcM_GetParam(this) >> 0x18;
}
/* 00000084-00000090 .text getType2__11daTag_Etc_cFv */
u32 daTag_Etc_c::getType2() {
return this->mBase.mParameters >> 8 & 0xF;
return fopAcM_GetParam(this) >> 8 & 0xF;
}
/* Not Matching */
/* 00000090-000001B4 .text rangeCheck__11daTag_Etc_cFP10fopAc_ac_c */
BOOL daTag_Etc_c::rangeCheck(fopAc_ac_c* pActor) {
BOOL result;
float fVar4;
float distanceMagnitude;
cXyz cxYz_planar_distance;
cXyz cXyz_distance;
cXyz delta;
cXyz_distance = ((pActor->current).pos - (this->current).pos);
if (0.0 <= cXyz_distance.x) {
cxYz_planar_distance.x = cXyz_distance.x;
cxYz_planar_distance.y = 0.0;
cxYz_planar_distance.z = cXyz_distance.z;
distanceMagnitude = PSVECSquareMag(&cxYz_planar_distance);
if (0.0 < distanceMagnitude) {
fVar4 = sqrtf(distanceMagnitude);
}
distanceMagnitude = this->mScale.x;
distanceMagnitude *= 100;
if ((distanceMagnitude <= fVar4) || ((this->mScale.x) * 100 < cXyz_distance.y)) {
delta = pActor->current.pos - current.pos;
if (delta.y >= 0.0f) {
if ((mScale.x * 100) <= delta.absXZ() || (mScale.x * 100) < delta.y) {
result = FALSE;
} else {
result = TRUE;
@@ -61,9 +47,7 @@ BOOL daTag_Etc_c::otherCheck(fopAc_ac_c* pActor) {
switch (cVar2) {
case 0:
if (pActor != (fopAc_ac_c*)0x0 &&
((u32)pActor[0x13].mBase.mLnTg.mBase.mpTagData & 0x10) != 0)
{
if (pActor != (daNpc_Md_c*)0x0 && (((daNpc_Md_c*)pActor)->m30F0 & 0x10) != 0) {
result = TRUE;
} else {
result = FALSE;
@@ -76,36 +60,28 @@ BOOL daTag_Etc_c::otherCheck(fopAc_ac_c* pActor) {
return result;
}
/* Not matching, registers seem off */
/* 00000214-000002EC .text demoProc__11daTag_Etc_cFv */
void daTag_Etc_c::demoProc() {
s16 sVar1;
fopAc_ac_c* pfVar2;
daNpc_Md_c* pMedli;
int staffIdx;
u8 cVar3;
void* local_18[2];
local_18[0] = this->field_0x294;
pfVar2 = (fopAc_ac_c*)fopAcIt_Judge(fpcSch_JudgeByID, local_18);
staffIdx = g_dComIfG_gameInfo.play.mEvtManager.getMyStaffId("TAG_ETC_D", (fopAc_ac_c*)0x0, 0);
pMedli = (daNpc_Md_c*)fopAcM_SearchByID(processId);
staffIdx = dComIfGp_evmng_getMyStaffId("TAG_ETC_D", (daNpc_Md_c*)0x0, 0);
if (staffIdx != -1) {
cVar3 = getType2();
switch (cVar3) {
case 0:
if ((pfVar2 == (fopAc_ac_c*)0x0) ||
((u32)pfVar2[0x13].mBase.mLnTg.mBase.mpTagData & 0x10) == 0)
{
sVar1 = this->field_0x29A;
if (sVar1 >= 1) {
this->field_0x29A = sVar1 + -1;
if ((pMedli == (daNpc_Md_c*)0x0) || (pMedli->m30F0 & 0x10) == 0) {
if (field_0x29A > 0) {
field_0x29A--;
} else {
g_dComIfG_gameInfo.play.mEvtManager.cutEnd(staffIdx);
dComIfGp_evmng_cutEnd(staffIdx);
}
}
break;
default:
g_dComIfG_gameInfo.play.mEvtManager.cutEnd(staffIdx);
dComIfGp_evmng_cutEnd(staffIdx);
}
}
}
@@ -114,23 +90,19 @@ void daTag_Etc_c::demoProc() {
void daTag_Etc_c::demoInitProc() {
u8 cVar1;
fopAc_ac_c* pActor;
void* local_18[4];
dEvt_control_c* control;
cVar1 = getType2();
switch (cVar1)
case 0: {
local_18[0] = this->field_0x294;
pActor = (fopAc_ac_c*)fopAcIt_Judge(fpcSch_JudgeByID, local_18);
control = &g_dComIfG_gameInfo.play.mEvtCtrl;
control->mPtItem = control->getPId(pActor);
this->field_0x29A = 0xf;
switch (cVar1) {
case 0:
pActor = fopAcM_SearchByID(processId);
dComIfGp_event_setItemPartner(pActor);
field_0x29A = 0xf;
break;
default:;
}
return;
return;
}
// Not matching
/* 00000368-00000458 .text create__11daTag_Etc_cFv */
s32 daTag_Etc_c::create() {
float fVar1;
@@ -141,28 +113,26 @@ s32 daTag_Etc_c::create() {
fopAcM_SetupActor(this, daTag_Etc_c);
stageEVNTListIndex = getEventNo();
this->eventIndex =
g_dComIfG_gameInfo.play.mEvtManager.getEventIdx((char*)0x0, stageEVNTListIndex);
if (this->eventIndex == -1) {
this->field_0x290 = 0;
eventIndex = dComIfGp_evmng_getEventIdx((char*)0x0, stageEVNTListIndex);
if (eventIndex == -1) {
field_0x290 = 0;
} else {
cVar3 = getType2();
switch (cVar3) {
case 0:
this->field_0x290 = 1;
field_0x290 = 1;
break;
default:
this->field_0x290 = 0;
field_0x290 = 0;
}
}
this->shape_angle.z = 0;
this->shape_angle.x = 0;
this->current.angle.z = 0;
this->current.angle.x = 0;
this->mAttentionInfo.mFlags = fopAc_Attn_ACTION_TALK_e;
// MNot matching part, seems to be a constant value?
this->mAttentionInfo.mPosition.y += 150.0;
this->mEyePos.y += 150.0;
shape_angle.z = 0;
shape_angle.x = 0;
current.angle.z = 0;
current.angle.x = 0;
mAttentionInfo.mFlags = fopAc_Attn_ACTION_TALK_e;
mAttentionInfo.mPosition.y += 150.0f;
mEyePos.y += 150.0f;
return 4;
}