d_event work

This commit is contained in:
Jasper St. Pierre
2023-12-28 22:51:59 -08:00
parent 8a609efef4
commit cfcb384bf4
11 changed files with 556 additions and 123 deletions
+1 -1
View File
@@ -177,7 +177,7 @@ public:
void LockEdge() {}
void changeOwner() {}
void chkEnemySound() {}
void getCatchChgItem() {}
u8 getCatchChgItem() { return mCatch.getChangeItem(); }
void getCatghTarget() {}
void getLookTarget() {}
void getLook2Target() {}
+33 -16
View File
@@ -75,7 +75,7 @@ enum ALWAYS_RES_FILE_ID { // IDs and indexes are synced
ALWAYS_BCK_YJ_LOOP=0x19,
ALWAYS_BCK_YJ_OUT=0x1A,
ALWAYS_BCK_YJ_SCALE=0x1B,
/* BDL */
ALWAYS_BDL_ARROWITEM=0x1E,
ALWAYS_BDL_FA=0x1F,
@@ -91,7 +91,7 @@ enum ALWAYS_RES_FILE_ID { // IDs and indexes are synced
ALWAYS_BDL_VHAPL=0x29,
ALWAYS_BDL_VHRTL=0x2A,
ALWAYS_BDL_VKEYL=0x2B,
/* BDLM */
ALWAYS_BDL_IB=0x2E,
ALWAYS_BDL_MPA_SIMI=0x2F,
@@ -110,17 +110,17 @@ enum ALWAYS_RES_FILE_ID { // IDs and indexes are synced
ALWAYS_BDL_YA=0x3C,
ALWAYS_BDL_YAZIRUSHI_01=0x3D,
ALWAYS_BDL_YTHDR00=0x3E,
/* BMTM */
ALWAYS_BMT_ICE=0x41,
/* BPK */
ALWAYS_BPK_YJ_DELETE=0x44,
ALWAYS_BPK_YJ_IN=0x45,
ALWAYS_BPK_YJ_LOOP=0x46,
ALWAYS_BPK_YJ_OUT=0x47,
ALWAYS_BPK_YJ_SCALE=0x48,
/* BRK */
ALWAYS_BRK_IB_01=0x4B,
ALWAYS_BRK_IB_02=0x4C,
@@ -130,7 +130,7 @@ enum ALWAYS_RES_FILE_ID { // IDs and indexes are synced
ALWAYS_BRK_VHANL=0x50,
ALWAYS_BRK_VLUPL=0x51,
ALWAYS_BRK_YTHDR00=0x52,
/* BTK */
ALWAYS_BTK_EFA_USONAMI_01=0x55,
ALWAYS_BTK_IB=0x56,
@@ -144,17 +144,17 @@ enum ALWAYS_RES_FILE_ID { // IDs and indexes are synced
ALWAYS_BTK_W_PILLAR_A=0x5E,
ALWAYS_BTK_YA=0x5F,
ALWAYS_BTK_YTHDR00=0x60,
/* BTP */
ALWAYS_BTP_MPA_SIMI=0x63,
ALWAYS_BTP_MPI_KIBAKO_TARU=0x64,
ALWAYS_BTP_MPI_KINOHAHEN=0x65,
ALWAYS_BTP_MPI_KOISHI=0x66,
ALWAYS_BTP_MPM_TUBO=0x67,
/* DAT */
ALWAYS_BIN_ITEM_TABLE=0x6A,
/* TEX */
ALWAYS_BTI_AK_HOUSHI00=0x6D,
ALWAYS_BTI_AK_SMOKE01=0x6E,
@@ -337,7 +337,7 @@ public:
void removeWood();
void executeWood();
void drawWood();
BOOL checkCameraAttentionStatus(int idx, u32 flag) {
return mCameraInfo[idx].mCameraAttentionStatus & flag;
}
@@ -435,7 +435,7 @@ public:
dTimer_c* getTimerPtr() { return mTimerInfo.mTimerPtr; }
s32 getTimerMode() { return mTimerInfo.mTimerMode; }
s16 getItemMagicCount() { return mItemMagicCount; }
void setItemMagicCount(s16 magic) { mItemMagicCount += magic; }
s16 getItemMaxMagicCount() { return mItemMaxMagicCount; }
@@ -445,10 +445,10 @@ public:
f32 getItemLifeCount() { return mItemLifeCount; }
void setItemLifeCount(f32 num) { mItemLifeCount += num; }
s16 getItemMaxLifeCount() { return mItemMaxLifeCount; }
void setItemMaxLifeCount(s16 num) { mItemMaxLifeCount += num; }
s16 getItemArrowNumCount() { return mItemArrowNumCount; }
void setItemArrowNumCount(s16 num) { mItemArrowNumCount += num; }
@@ -465,7 +465,7 @@ public:
u8 getSelectItem(int idx) { return mSelectItem[idx]; }
void setSelectItem(int idx, u8 itemNo) { mSelectItem[idx] = itemNo; }
void setSelectEquip(int idx, u8 itemNo) { mSelectEquip[idx] = itemNo; }
void setItem(u8 i_slot, u8 i_itemNo) {
mItemSlot = i_slot;
mItemNo = i_itemNo;
@@ -474,6 +474,7 @@ public:
void setAStatus(u8 status) { mCurrButtonBAction = status; }
void setDoStatus(u8 status) { mCurrButtonAAction = status; }
void setRStatusForce(u8 status) { field_0x4930 = status; }
inline u8 getPictureStatus() { return mPictureStatus; }
u8 getScopeType() { return mbCamOverrideFarPlane; }
void setScopeType(u8 v) { mbCamOverrideFarPlane = v; }
@@ -672,7 +673,7 @@ public:
/* 0x495B */ u8 field_0x495b;
/* 0x495C */ u8 field_0x495c;
/* 0x495D */ u8 field_0x495d;
/* 0x495E */ u8 field_0x495e;
/* 0x495E */ u8 mPictureStatus;
/* 0x495F */ u8 field_0x495f;
/* 0x4960 */ u8 field_0x4960;
/* 0x4961 */ u8 field_0x4961;
@@ -2133,7 +2134,7 @@ inline void dComIfGp_setSelectItem(int i_btnIdx) {
int invIdx = dComIfGs_getSelectItem(i_btnIdx);
u8 itemNo = dComIfGs_getItem(invIdx);
g_dComIfG_gameInfo.play.setSelectItem(i_btnIdx, itemNo);
invIdx = dComIfGs_getSelectItem(i_btnIdx);
itemNo = dComIfGs_getItem(invIdx);
if (itemNo == 0xFF) {
@@ -2177,6 +2178,10 @@ inline void dComIfGp_setRStatusForce(u8 status) {
g_dComIfG_gameInfo.play.setRStatusForce(status);
}
inline u8 dComIfGp_getPictureStatus() {
return g_dComIfG_gameInfo.play.getPictureStatus();
}
inline s16 dComIfGp_getMiniGameRupee() {
return g_dComIfG_gameInfo.play.getMiniGameRupee();
}
@@ -2436,6 +2441,14 @@ inline BOOL dComIfGp_evmng_existence(s16 eventIdx) {
return g_dComIfG_gameInfo.play.getEvtManager().getEventData(eventIdx) != NULL;
}
inline BOOL dComIfGp_evmng_order(s16 eventIdx) {
return g_dComIfG_gameInfo.play.getEvtManager().order(eventIdx);
}
inline u8 dComIfGp_evmng_getEventEndSound(s16 eventIdx) {
return g_dComIfG_gameInfo.play.getEvtManager().getEventEndSound(eventIdx);
}
/**
* === DRAWLIST ===
*/
@@ -2896,6 +2909,10 @@ inline void dComIfGp_att_CatchRequest(fopAc_ac_c* param_0, u8 param_1, f32 param
attention.CatchRequest(param_0, param_1, param_2, param_3, param_4,param_5, param_6);
}
inline u8 dComIfGp_att_getCatchChgItem() {
return g_dComIfG_gameInfo.play.getAttention().getCatchChgItem();
}
/**
* === MISC ===
*/
+40 -32
View File
@@ -21,6 +21,12 @@ enum dEvtType_e {
/* 0x0A */ dEvtType_CHANGE_e,
};
enum {
dEvtMove_NOMOVE_e,
dEvtMove_MOVE_e,
dEvtMove_FORCE_e,
};
class dEvt_order_c {
public:
~dEvt_order_c() {}
@@ -37,6 +43,8 @@ public:
/* 0x15 */ u8 mEventInfoIdx;
}; // Size = 0x18
class dStage_Event_dt_c;
class dEvt_control_c {
public:
dEvt_control_c();
@@ -44,36 +52,36 @@ public:
s32 orderOld(u16, u16, u16, u16, void*, void*, const void*);
s32 order(u16, u16, u16, u16, void*, void*, s16, u8);
void setParam(dEvt_order_c*);
void beforeFlagProc(dEvt_order_c*);
void afterFlagProc(dEvt_order_c*);
void commonCheck(dEvt_order_c*, u16, u16);
void talkCheck(dEvt_order_c*);
void talkXyCheck(dEvt_order_c*);
void photoCheck(dEvt_order_c*);
void catchCheck(dEvt_order_c*);
void talkEnd();
void demoCheck(dEvt_order_c*);
void demoEnd();
void potentialCheck(dEvt_order_c*);
void doorCheck(dEvt_order_c*);
void itemCheck(dEvt_order_c*);
void endProc();
void checkChange();
void changeProc();
void checkStart();
void soundProc();
void check();
void photoCheck();
BOOL beforeFlagProc(dEvt_order_c*);
BOOL afterFlagProc(dEvt_order_c*);
BOOL commonCheck(dEvt_order_c*, u16, u16);
BOOL talkCheck(dEvt_order_c*);
BOOL talkXyCheck(dEvt_order_c*);
BOOL photoCheck(dEvt_order_c*);
BOOL catchCheck(dEvt_order_c*);
BOOL talkEnd();
BOOL demoCheck(dEvt_order_c*);
BOOL demoEnd();
BOOL potentialCheck(dEvt_order_c*);
BOOL doorCheck(dEvt_order_c*);
BOOL itemCheck(dEvt_order_c*);
BOOL endProc();
BOOL checkChange();
BOOL changeProc();
BOOL checkStart();
BOOL soundProc();
BOOL check();
BOOL photoCheck();
s32 moveApproval(void*);
BOOL compulsory(void*, const char*, u16);
void remove();
void getStageEventDt();
void nextStageEventDt(void*);
dStage_Event_dt_c* getStageEventDt();
dStage_Event_dt_c* nextStageEventDt(void*);
int getPId(void*);
fopAc_ac_c * convPId(unsigned int);
void getTactFreeMStick(int);
void getTactFreeCStick(int);
void giveItemCut(u8);
u8 getTactFreeMStick(int);
u8 getTactFreeCStick(int);
bool giveItemCut(u8);
u8 getTalkXYBtn() { return mTalkButton; }
bool chkTalkXY() { return mTalkButton == 1 || mTalkButton == 2 || mTalkButton == 3; }
@@ -86,7 +94,7 @@ public:
f32 getCullRate() { return mCullFarClipRatio; }
void setCullRate(f32 ratio) { mCullFarClipRatio = ratio; }
u16 chkEventFlag(u16 flag) { return flag & mEventFlag; }
void onEventFlag(u16 flag) { mEventFlag |= flag; }
void offEventFlag(u16 flag) { mEventFlag &= ~flag; }
@@ -95,8 +103,8 @@ public:
bool runCheck() { return mMode != 0; }
/* 0x00 */ dEvt_order_c mOrder[8];
/* 0xC0 */ u8 mOrderCount;
/* 0xC1 */ u8 mFirstOrderIdx;
/* 0xC0 */ s8 mOrderCount;
/* 0xC1 */ s8 mFirstOrderIdx;
/* 0xC2 */ u8 mMode;
/* 0xC3 */ u8 mbEndProc;
/* 0xC4 */ u32 mPt1;
@@ -105,22 +113,22 @@ public:
/* 0xD0 */ u32 mPtItem;
/* 0xD4 */ u8 mGetItemNo;
/* 0xD5 */ u8 field_0xD5[0xD6 - 0xD5];
/* 0xD6 */ s16 field_0xd6;
/* 0xD6 */ s16 mHindFlag;
/* 0xD8 */ s16 mEventId;
/* 0xDA */ u8 mEventEndSound;
/* 0xDB */ u8 field_0xdb;
/* 0xDC */ u8 field_0xdc;
/* 0xDD */ u8 field_0xdd;
/* 0xDE */ u8 field_0xde;
/* 0xDF */ u8 field_0xdf;
/* 0xDF */ u8 mEventInfoIdx;
/* 0xE0 */ u8 mTalkButton;
/* 0xE1 */ u8 mItemNo;
/* 0xE2 */ u8 mbInPhoto;
/* 0xE3 */ u8 field_0xE3[0xE4 - 0xE3];
/* 0xE4 */ f32 mCullFarClipRatio;
/* 0xE8 */ u16 mEventFlag;
/* 0xEA */ u8 mTactFreeMStick[4];
/* 0xEE */ u8 mTactFreeCStick[4];
/* 0xEA */ u8 mTactFreeMStick[5];
/* 0xEF */ u8 mTactFreeCStick[4];
}; // Size = 0xF4
#endif /* D_EVENT_D_EVENT_H */
+2 -2
View File
@@ -39,7 +39,7 @@ public:
void runProc();
dEvDtEvent_c* getEventData(s16);
s16 getEventIdx(const char*, u8);
void order(s16);
BOOL order(s16);
BOOL startCheck(s16);
BOOL startCheckOld(const char*);
BOOL endCheck(s16);
@@ -54,7 +54,7 @@ public:
void getMySubstanceNum(int, const char*);
void cutEnd(int);
u16 getEventPrio(s16);
void getEventEndSound(s16);
u8 getEventEndSound(s16);
void exceptionProc();
void issueStaff(const char*);
void cancelStaff(const char*);
+8 -3
View File
@@ -283,9 +283,9 @@ struct dStage_MemoryConfig_c {
struct dStage_DMap_c {};
struct dStage_EventInfo_c {
/* 0x0 */ int field_0x0;
/* 0x1 */ char* mName;
struct dStage_Event_dt_c {
/* 0x00 */ u8 field_0x0;
/* 0x04 */ char mName[15];
/* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 field_0x11;
/* 0x12 */ u8 field_0x12;
@@ -296,6 +296,11 @@ struct dStage_EventInfo_c {
/* 0x17 */ u8 field_0x17;
}; // Size: 0x18
struct dStage_EventInfo_c {
/* 0x00 */ s32 num;
/* 0x04 */ dStage_Event_dt_c* events;
}; // Size: 0x08
struct dStage_Ship_data {
/* 0x0 */ cXyz m_pos;
/* 0xC */ s16 m_angle;
+8
View File
@@ -17,12 +17,14 @@ struct actor_method_class {
enum fopAc_Status_e {
// Note: The lowest 5 bits of the status field (& 0x1F) act as an index controlling the map icon type.
fopAcStts_SHOWMAP_e = 0x00000020,
fopAcStts_UNK40_e = 0x00000040,
fopAcStts_NOCULLEXEC_e = 0x00000080,
fopAcStts_CULL_e = 0x00000100,
fopAcStts_FREEZE_e = 0x00000400,
fopAcStts_UNK800_e = 0x00000800,
fopAcStts_CARRY_e = 0x00002000,
fopAcStts_UNK4000_e = 0x00004000,
fopAcStts_FORCEMOVE_e = 0x00008000,
fopAcStts_NOPAUSE_e = 0x00020000,
fopAcStts_UNK40000_e = 0x00040000,
fopAcStts_UNK80000_e = 0x00080000,
@@ -123,6 +125,7 @@ enum dEvt_Condition_e {
dEvtCnd_CANDOOR_e = 0x0004,
dEvtCnd_CANGETITEM_e = 0x0008,
dEvtCnd_CANTALKITEM_e = 0x0020,
dEvtCnd_CANCATCH_e = 0x0040,
};
// TODO: move to d_event.h
@@ -148,6 +151,11 @@ public:
BOOL chkCondition(u16 condition) { return (mCondition & condition) == condition; }
void onCondition(u16 cond) { mCondition |= cond; }
void offCondition(u16 cond) { mCondition &= ~cond; }
s16 runPhotoEventCB(void* ac, int flag) {
if (mpPhotoCB == NULL)
return -1;
return mpPhotoCB(ac, flag);
}
BOOL checkCommandTalk() { return mCommand == dEvtCmd_INTALK_e; }
BOOL checkCommandItem() { return mCommand == dEvtCmd_INGETITEM_e; }