Add enum for attention types

This commit is contained in:
LagoLunatic
2024-04-17 00:15:24 -04:00
parent bc85a947e6
commit 2b71216c8b
19 changed files with 72 additions and 61 deletions
+18 -7
View File
@@ -58,14 +58,25 @@ enum fopAc_Group_e {
fopAc_NPC_e,
};
enum fopAc_AttentionType_e {
fopAc_Attn_TYPE_MISC_e = 0x0, // "LOCK"
fopAc_Attn_TYPE_TALK_e = 0x1, // "TALK"
fopAc_Attn_TYPE_BATTLE_e = 0x2, // "BATL"
fopAc_Attn_TYPE_SPEAK_e = 0x3, // "SPEK"
fopAc_Attn_TYPE_CARRY_e = 0x4, // "CARY"
fopAc_Attn_TYPE_DOOR_e = 0x5, // "DOOR"
fopAc_Attn_TYPE_TREASURE_e = 0x6, // "JUEL"
fopAc_Attn_TYPE_SHIP_e = 0x7,
};
enum fopAc_AttentionFlag_e {
fopAc_Attn_LOCKON_MISC_e = 0x00000001,
fopAc_Attn_LOCKON_TALK_e = 0x00000002,
fopAc_Attn_LOCKON_ENEMY_e = 0x00000004,
fopAc_Attn_ACTION_TALK_e = 0x00000008,
fopAc_Attn_ACTION_CARRY_e = 0x00000010,
fopAc_Attn_ACTION_DOOR_e = 0x00000020,
fopAc_Attn_ACTION_TREASURE_e = 0x00000040,
fopAc_Attn_LOCKON_MISC_e = 0x00000001, // "LOCK"
fopAc_Attn_LOCKON_TALK_e = 0x00000002, // "TALK"
fopAc_Attn_LOCKON_BATTLE_e = 0x00000004, // "BATL"
fopAc_Attn_ACTION_SPEAK_e = 0x00000008, // "SPEK"
fopAc_Attn_ACTION_CARRY_e = 0x00000010, // "CARY"
fopAc_Attn_ACTION_DOOR_e = 0x00000020, // "DOOR"
fopAc_Attn_ACTION_TREASURE_e = 0x00000040, // "JUEL"
fopAc_Attn_ACTION_SHIP_e = 0x00000080,
fopAc_Attn_UNK1000000_e = 0x01000000,
fopAc_Attn_TALKFLAG_NOTALK_e = 0x02000000,
+2 -2
View File
@@ -126,7 +126,7 @@ BOOL enemy_ice(enemyice* ei) {
ac->tevStr.mFogStartZ = 0.0f;
ac->tevStr.mFogEndZ = 2000.0f;
fopAcM_seStart(ac, JA_SE_CM_L_ARROW_SHRINK, 0);
ac->attention_info.flags &= ~fopAc_Attn_LOCKON_ENEMY_e;
ac->attention_info.flags &= ~fopAc_Attn_LOCKON_BATTLE_e;
} else {
ei->mLightShrinkTimer++;
@@ -227,7 +227,7 @@ BOOL enemy_ice(enemyice* ei) {
moveAndCollide = TRUE;
if (ei->m00C != 1) {
ac->attention_info.flags |= fopAc_Attn_ACTION_CARRY_e;
ac->attention_info.distances[4] = 0x12;
ac->attention_info.distances[fopAc_Attn_TYPE_CARRY_e] = 0x12;
if (fopAcM_CheckStatus(ac, fopAcStts_CARRY_e)) {
ac->attention_info.flags &= ~fopAc_Attn_ACTION_CARRY_e;
ei->mState = 3;
+2 -2
View File
@@ -304,7 +304,7 @@ static BOOL medama_atari_check(am_class* i_this) {
ret = true;
if (i_this->mCurrBckIdx == AM_BCK_SLEEP || i_this->mCurrBckIdx == AM_BCK_SLEEP_LOOP) {
anm_init(i_this, AM_BCK_OKIRU, 1.0f, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, -1);
i_this->attention_info.flags = fopAc_Attn_LOCKON_ENEMY_e;
i_this->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e;
i_this->mNeedleCyl.OnAtSPrmBit(AT_SPRM_SET);
i_this->mNeedleCyl.OnAtHitBit();
i_this->mAction = ACTION_DOUSA;
@@ -527,7 +527,7 @@ static void action_dousa(am_class* i_this) {
if (Line_check(i_this, player->current.pos)) {
anm_init(i_this, AM_BCK_OKIRU, 1.0f, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, -1);
fopAcM_monsSeStart(i_this, JA_SE_CV_AM_AWAKE, 0);
i_this->attention_info.flags = fopAc_Attn_LOCKON_ENEMY_e;
i_this->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e;
i_this->mNeedleCyl.OnAtSetBit();
i_this->mNeedleCyl.OnAtHitBit();
i_this->mState += 1;
+4 -4
View File
@@ -197,7 +197,7 @@ static BOOL medama_atari_check(am2_class* i_this) {
ret = true;
if (i_this->mCurrBckIdx == AM2_BCK_SLEEP) {
anm_init(i_this, AM2_BCK_WAIT, 1.0f, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, -1);
i_this->attention_info.flags = fopAc_Attn_LOCKON_ENEMY_e;
i_this->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e;
fopAcM_OnStatus(i_this, fopAcStts_SHOWMAP_e);
i_this->mNeedleCyl.OnAtSetBit();
i_this->mNeedleCyl.OnAtHitBit();
@@ -499,7 +499,7 @@ static void action_dousa(am2_class* i_this) {
cXyz centerPos = player->current.pos;
centerPos.y += 100.0f + g_regHIO.mChild[12].mFloatRegs[19];
if (Line_check(i_this, centerPos)) {
i_this->attention_info.flags = fopAc_Attn_LOCKON_ENEMY_e;
i_this->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e;
fopAcM_OnStatus(i_this, fopAcStts_SHOWMAP_e);
anm_init(i_this, AM2_BCK_START, 1.0f, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, -1);
fopAcM_monsSeStart(i_this, JA_SE_CV_AM2_AWAKE, 0);
@@ -785,7 +785,7 @@ static void action_mahi(am2_class* i_this) {
actor->shape_angle.y += 0x1000;
if (i_this->mAcch.ChkGroundHit()) {
actor->gravity = -3.0f;
actor->attention_info.flags = fopAc_Attn_LOCKON_ENEMY_e;
actor->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e;
fopAcM_OnStatus(actor, fopAcStts_SHOWMAP_e);
i_this->mAction = ACTION_DOUSA;
i_this->mState = 3;
@@ -1329,7 +1329,7 @@ static s32 daAM2_Create(fopAc_ac_c* i_actor) {
i_this->mEnemyIce.mpActor = i_this;
i_this->mEnemyIce.mWallRadius = 50.0f;
i_this->mEnemyIce.mCylHeight = 100.0f;
i_this->attention_info.distances[4] = 9;
i_this->attention_info.distances[fopAc_Attn_TYPE_CARRY_e] = 9;
fopAcM_OnStatus(i_this, fopAcStts_UNK8000000_e);
+1 -1
View File
@@ -1954,7 +1954,7 @@ static BOOL daBk_Execute(bk_class* i_this) {
}
}
i_this->attention_info.flags = fopAc_Attn_LOCKON_ENEMY_e;
i_this->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e;
fopAcM_OnStatus(i_this, fopAcStts_SHOWMAP_e);
i_this->m02F0 = 0;
i_this->m02F4 = 0;
+3 -3
View File
@@ -1620,9 +1620,9 @@ BOOL daNpc_Bs1_c::CreateInit() {
m726.y = current.angle.y;
m726.z = current.angle.z;
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_TALK_e;
attention_info.distances[1] = 0xAA;
attention_info.distances[3] = 0xAA;
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xAA;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xAA;
gravity = -30.0f;
+3 -3
View File
@@ -458,7 +458,7 @@ BOOL daNpc_Btsw2_c::CreateHeap() {
/* 00000EFC-000010F8 .text CreateInit__13daNpc_Btsw2_cFv */
BOOL daNpc_Btsw2_c::CreateInit() {
m714 = current.angle;
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_TALK_e;
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e;
gravity = -30.0f;
setAction(&daNpc_Btsw2_c::wait_action, NULL);
mAttPos = current.pos;
@@ -476,8 +476,8 @@ BOOL daNpc_Btsw2_c::CreateInit() {
m736 = 0;
mPathPntIdx = 0;
mEventCut.setActorInfo2("Btsw2", this);
attention_info.distances[1] = 0xAB;
attention_info.distances[3] = 0xAB;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xAB;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xAB;
return TRUE;
}
+8 -8
View File
@@ -2210,8 +2210,8 @@ u32 daNpc_Ji1_c::battleAction(void*) {
field_0xC3C = 0;
setAnm(5, 0.0f, 0);
attention_info.flags |= fopAc_Attn_LOCKON_MISC_e;
attention_info.flags |= fopAc_Attn_LOCKON_ENEMY_e;
attention_info.distances[2] = 3;
attention_info.flags |= fopAc_Attn_LOCKON_BATTLE_e;
attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 3;
field_0xC30 = (s16)cM_rndF(150.0f) + 30;
field_0xD70 = 0;
field_0xD6C = 0;
@@ -2220,8 +2220,8 @@ u32 daNpc_Ji1_c::battleAction(void*) {
field_0xC78++;
}
else if(field_0xC78 == -1) {
attention_info.flags &= ~fopAc_Attn_LOCKON_ENEMY_e;
attention_info.distances[2] = 0xB5;
attention_info.flags &= ~fopAc_Attn_LOCKON_BATTLE_e;
attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 0xB5;
}
else {
cXyz temp = player->current.pos - current.pos;
@@ -2896,7 +2896,7 @@ BOOL daNpc_Ji1_c::CreateInit() {
fopAcM_SetMtx(this, field_0x330->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -70.0f, 0.0f, -70.0f, 70.0f, 200.0f, 70.0f);
gravity = -30.0f;
attention_info.flags = fopAc_Attn_LOCKON_MISC_e | fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_TALK_e;
attention_info.flags = fopAc_Attn_LOCKON_MISC_e | fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e;
field_0x638.Init(0xFF, 0xFF, this);
field_0x674.Init(0xFF, 0xFF, this);
@@ -3062,9 +3062,9 @@ BOOL daNpc_Ji1_c::CreateInit() {
field_0xD7E = 0;
attention_info.flags |= fopAc_Attn_LOCKON_MISC_e;
attention_info.distances[1] = 0xA9;
attention_info.distances[3] = 0xA9;
attention_info.distances[2] = 0xB5;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xA9;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xA9;
attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 0xB5;
field_0x414 = 0.0f;
field_0x42C = 0.0f;
field_0x430 = 0;
+4 -4
View File
@@ -438,8 +438,8 @@ BOOL daNpc_kam_c::init() {
setBaseMtx();
attention_info.flags = 0;
attention_info.distances[1] = 38;
attention_info.distances[3] = 38;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 38;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 38;
for (int i = 0; i < 3; i++) {
mEventIdxs[i] = dComIfGp_evmng_getEventIdx(event_name_tbl[i]);
@@ -650,10 +650,10 @@ int daNpc_kam_c::waitNpcAction(void*) {
mC0C = cLib_getRndValue(10, 80);
} else if (mActionStatus != ACTION_ENDING) {
if (changeAreaCheck()) {
attention_info.flags |= fopAc_Attn_ACTION_TALK_e | fopAc_Attn_TALKFLAG_NOTALK_e;
attention_info.flags |= fopAc_Attn_ACTION_SPEAK_e | fopAc_Attn_TALKFLAG_NOTALK_e;
mEventState = 6;
} else {
attention_info.flags &= ~(fopAc_Attn_ACTION_TALK_e | fopAc_Attn_TALKFLAG_NOTALK_e);
attention_info.flags &= ~(fopAc_Attn_ACTION_SPEAK_e | fopAc_Attn_TALKFLAG_NOTALK_e);
mEventState = -1;
}
+3 -3
View File
@@ -860,9 +860,9 @@ BOOL daNpc_Nz_c::createInit() {
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -450.0f, -50.0f, -450.0f, 450.0f, 750.0f, 450.0f);
fopAcM_setCullSizeFar(this, 10.0f);
attention_info.distances[1] = 0xB1;
attention_info.distances[3] = 0xB1;
attention_info.flags = fopAc_Attn_ACTION_TALK_e | fopAc_Attn_TALKFLAG_NOTALK_e;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xB1;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xB1;
attention_info.flags = fopAc_Attn_ACTION_SPEAK_e | fopAc_Attn_TALKFLAG_NOTALK_e;
eventInfo.setXyCheckCB(&daNpc_Nz_XyCheckCB);
eventInfo.setXyEventCB(&daNpc_Nz_XyEventCB);
mEventCut.setActorInfo2("NpcNz", this);
+2 -2
View File
@@ -713,7 +713,7 @@ BOOL daNpc_Os_c::waitNpcAction(void*) {
}
}
attention_info.flags &= ~(fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_TALK_e);
attention_info.flags &= ~(fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e);
f32 dist = fopAcM_searchPlayerDistance2(this);
if(!checkNpcCallCommand()) {
@@ -1961,7 +1961,7 @@ BOOL daNpc_Os_c::init() {
cXyz dummy(0.0f, 0.0f, 0.0f);
field_0x794 = fopAcM_GetParam(this) >> 0x10 & 0xFF;
attention_info.distances[4] = 0x27;
attention_info.distances[fopAc_Attn_TYPE_CARRY_e] = 0x27;
// Fakematch, the next two lines get optimized out, but they affect the regalloc when copying the tevstr.
speedF = speedF;
speedF = speedF;
+3 -3
View File
@@ -277,9 +277,9 @@ int daObjMknjD::Act_c::Create() {
m0430 = 0x2920;
}
attention_info.distances[1] = 0x3D;
attention_info.distances[3] = 0x3D;
attention_info.flags |= fopAc_Attn_ACTION_TALK_e | fopAc_Attn_TALKFLAG_CHECK_e;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0x3D;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0x3D;
attention_info.flags |= fopAc_Attn_ACTION_SPEAK_e | fopAc_Attn_TALKFLAG_CHECK_e;
if (!checkItemGet(mGiveItemNo, 1)) {
m043F = 8;
+3 -3
View File
@@ -117,9 +117,9 @@ namespace daObjPaper {
eyePos.y += attr(mType).mEyeOffset;
attention_info.position.y += attr(mType).mAttentionOffset;
attention_info.distances[1] = attr(mType).mAttentionDist1;
attention_info.distances[3] = attr(mType).mAttentionDist2;
attention_info.flags |= fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_TALK_e | fopAc_Attn_TALKFLAG_READ_e;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = attr(mType).mAttentionDist1;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = attr(mType).mAttentionDist2;
attention_info.flags |= fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e | fopAc_Attn_TALKFLAG_READ_e;
mMsgId = fpcM_ERROR_PROCESS_ID_e;
+3 -3
View File
@@ -916,9 +916,9 @@ void daObjTpost_c::createInit() {
mCurrMsgBsPcId = fpcM_ERROR_PROCESS_ID_e;
mpCurrMsg = 0;
attention_info.distances[1] = 5;
attention_info.distances[3] = 6;
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_TALK_e | fopAc_Attn_TALKFLAG_CHECK_e;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 5;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 6;
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e | fopAc_Attn_TALKFLAG_CHECK_e;
setAnm(1, false);
setMtx();
+2 -2
View File
@@ -1344,10 +1344,10 @@ void daRd_c::modeProc(daRd_c::Proc_e proc, int newMode) {
if (newMode == MODE_DEATH || newMode == MODE_SW_WAIT) {
fopAcM_OffStatus(this, fopAcStts_SHOWMAP_e);
cLib_offBit<u32>(attention_info.flags, fopAc_Attn_LOCKON_ENEMY_e);
cLib_offBit<u32>(attention_info.flags, fopAc_Attn_LOCKON_BATTLE_e);
} else {
fopAcM_OnStatus(this, fopAcStts_SHOWMAP_e);
cLib_onBit<u32>(attention_info.flags, fopAc_Attn_LOCKON_ENEMY_e);
cLib_onBit<u32>(attention_info.flags, fopAc_Attn_LOCKON_BATTLE_e);
}
mMode = newMode;
+1 -1
View File
@@ -125,7 +125,7 @@ s32 daTag_Etc_c::create() {
shape_angle.x = 0;
current.angle.z = 0;
current.angle.x = 0;
attention_info.flags = fopAc_Attn_ACTION_TALK_e;
attention_info.flags = fopAc_Attn_ACTION_SPEAK_e;
attention_info.position.y += 150.0f;
eyePos.y += 150.0f;
return cPhs_COMPLEATE_e;
+1 -1
View File
@@ -265,7 +265,7 @@ s32 daTag_Msg_c::create() {
shape_angle.x = 0;
current.angle.z = 0;
current.angle.x = 0;
attention_info.flags = fopAc_Attn_ACTION_TALK_e | fopAc_Attn_TALKFLAG_CHECK_e;
attention_info.flags = fopAc_Attn_ACTION_SPEAK_e | fopAc_Attn_TALKFLAG_CHECK_e;
if (getMessage() != 0x836) {
attention_info.position.y += 150;
eyePos.y += 150.0f;
+1 -1
View File
@@ -422,7 +422,7 @@ f32 dAttention_c::EnemyDistance(fopAc_ac_c* actor) {
return -1.0f;
f32 dist = fopAcM_searchActorDistance(actor, mpPlayer);
if (dist < (dist_table[actor->attention_info.distances[2]].mDistXZMax + dist_table[actor->attention_info.distances[2]].mDistXZAngleAdjust))
if (dist < (dist_table[actor->attention_info.distances[fopAc_Attn_TYPE_BATTLE_e]].mDistXZMax + dist_table[actor->attention_info.distances[fopAc_Attn_TYPE_BATTLE_e]].mDistXZAngleAdjust))
return dist;
return -1.0f;
}
+8 -8
View File
@@ -172,14 +172,14 @@ s32 fopAc_Create(void* pProc) {
actor->current = actor->home;
actor->eyePos = actor->home.pos;
actor->maxFallSpeed = -100.0f;
actor->attention_info.distances[0] = 1;
actor->attention_info.distances[1] = 2;
actor->attention_info.distances[2] = 3;
actor->attention_info.distances[3] = 7;
actor->attention_info.distances[4] = 8;
actor->attention_info.distances[7] = 15;
actor->attention_info.distances[5] = 16;
actor->attention_info.distances[6] = 16;
actor->attention_info.distances[fopAc_Attn_TYPE_MISC_e] = 1;
actor->attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 2;
actor->attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 3;
actor->attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 7;
actor->attention_info.distances[fopAc_Attn_TYPE_CARRY_e] = 8;
actor->attention_info.distances[fopAc_Attn_TYPE_SHIP_e] = 15;
actor->attention_info.distances[fopAc_Attn_TYPE_DOOR_e] = 16;
actor->attention_info.distances[fopAc_Attn_TYPE_TREASURE_e] = 16;
actor->attention_info.position = actor->home.pos;
dKy_tevstr_init(&actor->tevStr, actor->home.roomNo, 0xFF);
}