d_a_tag_event / d_a_tag_chkpoint done (#2133)

* cleanup evtarea

* d_a_tag_chkpoint done

* d_a_tag_event done

* remove asm
This commit is contained in:
TakaRikka
2024-04-15 17:39:47 -07:00
committed by GitHub
parent ae4ef8e69d
commit a0a5d6b00a
35 changed files with 597 additions and 1833 deletions
+3 -2
View File
@@ -58,7 +58,7 @@ public:
/* 0x00000080 */ NO_DRAW_WAIT = 0x80,
/* 0x00010000 */ PLAYER_BACK_RIDE_LASH = 0x10000,
/* 0x20000000 */ TURN_CANCEL_KEEP = 0x20000000,
/* 0x80000000 */ RODEO_MODE = 0x80000000
/* 0x80000000 */ FLG0_RODEO_MODE = 0x80000000
};
fopAc_ac_c* getZeldaActor();
@@ -183,7 +183,7 @@ public:
bool checkTurnStandCamera() const { return checkResetStateFlg0(TURN_STAND_CAMERA); }
bool checkTurnStand() const { return checkResetStateFlg0(TURN_STAND); }
bool checkRodeoMode() const { return checkStateFlg0(RODEO_MODE); }
bool checkRodeoMode() const { return checkStateFlg0(FLG0_RODEO_MODE); }
bool checkCutTurnCancel() const { return checkEndResetStateFlg0(CUT_TURN_CANCEL); }
bool checkTurnCancelKeep() const { return checkStateFlg0(TURN_CANCEL_KEEP); }
bool checkTurn() const { return field_0x16b4 == 3 && field_0x1720 == 0; }
@@ -205,6 +205,7 @@ public:
void onMoveAccept() { onEndResetStateFlg0(MOVE_ACCEPT); }
void onPlayerLash() { onEndResetStateFlg0(ERFLG0_UNK_18); }
void offPlayerBackRideLash() { offStateFlg0(PLAYER_BACK_RIDE_LASH); }
void onRodeoMode() { onStateFlg0(FLG0_RODEO_MODE); }
static u8 const m_footJointTable[8];
static f32 const m_callLimitDistance2;
@@ -6,14 +6,14 @@
class daTag_Chk_c : public fopAc_ac_c {
public:
/* 8048A6F8 */ s32 execute();
/* 8048A6F8 */ int execute();
u16 getAreaType() { return home.angle.z & 0x100; }
u16 getHeight() { return fopAcM_GetParam(this) & 0xff; }
u8 getSwBit() { return fopAcM_GetParam(this) >> 8; }
u8 getSwBit2() { return fopAcM_GetParam(this) >> 16; }
s32 create() {
int create() {
fopAcM_SetupActor(this, daTag_Chk_c);
if (getAreaType() == 0) {
@@ -21,30 +21,32 @@ public:
scale.y *= 100.0f;
scale.z *= 50.0f;
mPos1.set(current.pos.x - scale.x, current.pos.y, current.pos.z - scale.z);
mPos2.set(current.pos.x + scale.x, current.pos.y + scale.y, current.pos.z + scale.z);
mVtxA.set(current.pos.x - scale.x, current.pos.y, current.pos.z - scale.z);
mVtxB.set(current.pos.x + scale.x, current.pos.y + scale.y, current.pos.z + scale.z);
} else {
scale.x *= 100.0f;
scale.y *= 100.0f;
scale.z *= 0.0f;
mPos1.set(0.0f, current.pos.y, 0.0f);
mPos2.set(0.0f, current.pos.y + scale.y, 0.0f);
mVtxA.set(0.0f, current.pos.y, 0.0f);
mVtxB.set(0.0f, current.pos.y + scale.y, 0.0f);
}
attention_info.position = current.pos;
u16 l_height = getHeight();
l_height != 0xff ? attention_info.position.y += l_height * 10.0f : attention_info.position.y += scale.y * 0.5f;
u16 height = getHeight();
height != 0xff ? attention_info.position.y += height * 10.0f : attention_info.position.y += scale.y * 0.5f;
eyePos = attention_info.position;
return cPhs_COMPLEATE_e;
}
private:
/* 0x568 */ u8 field_0x568[8];
/* 0x570 */ cXyz mPos1;
/* 0x57C */ cXyz mPos2;
/* 0x570 */ cXyz mVtxA;
/* 0x57C */ cXyz mVtxB;
};
STATIC_ASSERT(sizeof(daTag_Chk_c) == 0x588);
#endif /* D_A_TAG_CHKPOINT_H */
@@ -1,6 +1,53 @@
#ifndef D_A_TAG_EVENT_H
#define D_A_TAG_EVENT_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class daTag_Event_c : public fopAc_ac_c {
public:
enum Action_e {
ACTION_WAIT,
ACTION_ARRIVAL,
ACTION_HUNT,
ACTION_HUNT2,
ACTION_READY,
ACTION_NEXT,
ACTION_EVENT,
};
/* 8048AD68 */ u8 getEventNo();
/* 8048AD74 */ u8 getSwbit();
/* 8048AD80 */ u8 getSwbit2();
/* 8048AD8C */ u8 getType();
/* 8048AD98 */ u16 getInvalidEventFlag();
/* 8048ADA4 */ u16 getAreaType();
/* 8048ADB0 */ u16 getValidEventFlag();
/* 8048ADBC */ BOOL horseRodeo();
/* 8048ADEC */ BOOL arrivalTerms();
/* 8048AEEC */ void demoInitProc();
/* 8048AEF8 */ void demoEndProc();
/* 8048AEFC */ void demoProc();
/* 8048AF00 */ int create();
/* 8048B0E4 */ int actionNext();
/* 8048B1B0 */ int actionEvent();
/* 8048B268 */ int actionReady();
/* 8048B378 */ BOOL checkArea();
/* 8048B514 */ int actionHunt();
/* 8048B5C8 */ int actionArrival();
/* 8048B5F4 */ int actionWait();
/* 8048B5FC */ int actionHunt2();
/* 8048B6D4 */ int execute();
/* 8048B784 */ int draw();
void setActio(u8 i_action) { mAction = i_action; }
/* 0x568 */ s16 mEventIdx;
/* 0x56A */ s16 mMapEventIdx;
/* 0x56C */ s16 mMapToolId;
/* 0x56E */ s16 field_0x56e;
/* 0x570 */ s16 mHunt2Timer;
/* 0x572 */ u8 mAction;
/* 0x573 */ u8 field_0x573;
};
#endif /* D_A_TAG_EVENT_H */
@@ -6,32 +6,43 @@
class daTag_EvtArea_c : public fopAc_ac_c {
public:
/* 8048C4F8 */ cPhs__Step create();
/* 8048C728 */ bool Delete();
/* 8048C730 */ bool Execute();
/* 8048C894 */ bool Draw();
/* 8048C728 */ BOOL Delete();
/* 8048C730 */ BOOL Execute();
/* 8048C894 */ BOOL Draw();
/* 8048C89C */ BOOL isDelete();
/* 8048C94C */ BOOL chkPointInArea(cXyz, cXyz);
/* 8048CD08 */ BOOL chkPointInArea(cXyz param_0) {
cXyz local_28;
local_28.set(0.0f, 0.0f, 0.0f);
return chkPointInArea(param_0, local_28);
}
/* 8048CD68 */ virtual ~daTag_EvtArea_c() {}
inline s32 getType() {
s32 getType() {
u8 type = (u8)shape_angle.z;
return type == 0xff ? 0 : type;
}
inline s32 getNo() {
s32 getNo() {
u16 no = (shape_angle.z & 0xff00) >> 8;
return no == 0xff ? 0 : no;
}
inline u32 getOnEvtBit();
inline u32 getOffEvtBit();
inline u8 getBitSW();
inline u8 getBitSW2();
u32 getOnEvtBit() {
u32 ret = fopAcM_GetParam(this) & 0xfff;
return ret == 0xfff ? -1 : ret;
}
u32 getOffEvtBit() {
u32 ret = (fopAcM_GetParam(this) & 0xfff000) >> 12;
return ret == 0xfff ? -1 : ret;
}
u8 getBitSW() { return home.angle.x & 0xff; }
u8 getBitSW2() { return (home.angle.x & 0xff00) >> 8; }
private:
/* 0x568 vtable */