d_event_data start

This commit is contained in:
LagoLunatic
2023-10-24 01:01:06 -04:00
parent d53c702bb7
commit 8018710181
7 changed files with 204 additions and 18 deletions
+21 -1
View File
@@ -329,6 +329,14 @@ public:
mNextStage.set(i_stageName, i_roomNo, i_point, i_layer, i_wipe);
}
u8 getNowStageNum() { return mPlacenameIndex; }
u8 checkStageName() { return mPlacenameState; }
void setStageNameOn(u8 idx) {
mPlacenameIndex = idx;
mPlacenameState = 2;
}
void setStageNameOff() { mPlacenameState = 1; }
fopAc_ac_c* getPlayerPtr(int idx) { return (fopAc_ac_c*)mpPlayerPtr[idx]; }
fopAc_ac_c* getPlayer(int idx) { return (fopAc_ac_c*)mpPlayer[idx]; }
void setPlayer(int idx, fopAc_ac_c* player) { mpPlayer[idx] = (daPy_py_c*)player; }
@@ -1273,7 +1281,19 @@ inline const char* dComIfGp_getStartStageName() {
}
inline u32 dComIfGp_getNowStageNum() {
return g_dComIfG_gameInfo.play.mPlacenameIndex;
return g_dComIfG_gameInfo.play.getNowStageNum();
}
inline u8 dComIfGp_checkStageName() {
return g_dComIfG_gameInfo.play.checkStageName();
}
inline void dComIfGp_setStageNameOn(u8 idx) {
g_dComIfG_gameInfo.play.setStageNameOn(idx);
}
inline void dComIfGp_setStageNameOff() {
g_dComIfG_gameInfo.play.setStageNameOff();
}
inline s8 dComIfGp_getStartStageRoomNo() {
+49 -3
View File
@@ -23,16 +23,61 @@ struct event_binary_data_header {
class dEvDtData_c {};
class dEvDtCut_c {};
class dEvDtCut_c {
public:
void startCheck();
};
class dEvDtStaff_c {};
class dEvDtStaff_c {
public:
void specialProc_WaitStart(int);
void specialProc_WaitProc(int);
void specialProc();
void init();
void advanceCut(int);
void specialProcLight();
void specialProcMessage();
void specialProcSound();
void specialProcCreate();
void specialProcDirector();
void specialProcPackage();
void specialProcTimekeeper();
class dEvDtEvent_c {};
public:
/* 0x00 */ char mName[32];
/* 0x20 */ int mSub;
/* 0x24 */ int mIndex;
/* 0x28 */ int m28;
/* 0x2C */ int mStaffType;
/* 0x30 */ int mFirstCutIdx;
/* 0x34 */ u8 m34[0x38 - 0x34];
/* 0x38 */ int mCurCutIdx;
/* 0x3C */ u32 mCurActionIdx;
/* 0x40 */ s16 mWipeDirection;
/* 0x42 */ s16 mTimer;
/* 0x44 */ u8 m44;
/* 0x45 */ u8 m45;
/* 0x46 */ u8 mbIsAdvance;
/* 0x47 */ u8 mbNeedsAction;
/* 0x48 */ u8 field_48[0x50 - 0x48];
};
class dEvDtEvent_c {
public:
void finish_check();
void specialStaffProc(dEvDtStaff_c*);
};
class dEvDtFlag_c {
public:
dEvDtFlag_c() {}
void flagCheck(int);
void flagSet(int);
void flagMaxCheck(int);
void init();
public:
u32 mFlags[320];
}; // Size = 0x500
@@ -45,6 +90,7 @@ public:
void advanceCut(dEvDtEvent_c*);
void advanceCutLocal(dEvDtStaff_c*);
public:
/* 0x00 */ event_binary_data_header* mHeaderP;
/* 0x04 */ dEvDtEvent_c* mEventP;
/* 0x08 */ dEvDtStaff_c* mStaffP;
+8 -8
View File
@@ -323,7 +323,7 @@ s32 daMbdoor_c::getDemoAction() {
"ADJUSTMENT",
};
return dComIfGp_evmng_getMyActIdx(mEvtStaffId, action_table, 9, 0, 0);
return dComIfGp_evmng_getMyActIdx(mEvtStaffId, action_table, ARRAY_SIZE(action_table), 0, 0);
}
/* 00000B3C-00000F78 .text demoProc__10daMbdoor_cFv */
@@ -336,33 +336,33 @@ void daMbdoor_c::demoProc() {
if (dComIfGp_evmng_getIsAddvance(mEvtStaffId)) {
switch (actIdx) {
case 1:
case 1: // SET_START
calcMtx();
goal = field_0x2c4;
dComIfGp_evmng_setGoal(&goal);
break;
case 2:
case 2: // SET_ANGLE
angle = current.angle.y + 0x7FFF;
player->changeDemoMoveAngle(angle);
break;
case 4:
case 4: // OPEN
fopAcM_seStart(this, JA_SE_OBJ_MJ_GATE_OPEN, 0);
field_0x2b4 = 0;
break;
case 5:
case 5: // STOP_OPEN
fopAcM_seStart(this, JA_SE_OBJ_MJ_GATE_BAR_OPEN, 0);
field_0x2b4 = 0;
field_0x2b6 = 1;
break;
case 6:
case 6: // SET_GOAL
goal = field_0x2d0;
dComIfGp_evmng_setGoal(&goal);
break;
case 7:
case 7: // SET_GOAL2
goal = field_0x2dc;
dComIfGp_evmng_setGoal(&goal);
break;
case 8:
case 8: // ADJUSTMENT
calcMtx();
field_0x2b8 = 0;
u32* timerP = dComIfGp_evmng_getMyIntegerP(mEvtStaffId, "Timer");
+1 -1
View File
@@ -547,7 +547,7 @@ void daObjMknjD::Act_c::privateCut() {
int staffIdx = dComIfGp_evmng_getMyStaffId("MknjD", NULL, 0);
if (staffIdx != -1) {
mActionIdx = dComIfGp_evmng_getMyActIdx(staffIdx, cut_name_table, 9, 1, 0);
mActionIdx = dComIfGp_evmng_getMyActIdx(staffIdx, cut_name_table, ARRAY_SIZE(cut_name_table), 1, 0);
if (mActionIdx == -1) {
dComIfGp_evmng_cutEnd(staffIdx);
+1 -1
View File
@@ -246,7 +246,7 @@ bool daObjTpost_c::cutProc() {
int staffIdx = dComIfGp_evmng_getMyStaffId("Tpost", 0, 0);
if(staffIdx != -1) {
int actIdx = dComIfGp_evmng_getMyActIdx(staffIdx, action_table, 3, 1, 0);
int actIdx = dComIfGp_evmng_getMyActIdx(staffIdx, action_table, ARRAY_SIZE(action_table), 1, 0);
if(actIdx == -1) {
dComIfGp_evmng_cutEnd(staffIdx);
}
+123 -3
View File
@@ -3,8 +3,8 @@
// Translation Unit: d_event_data.cpp
//
#include "d_event_data.h"
#include "dolphin/types.h"
#include "d/d_event_data.h"
#include "d/d_com_inf_game.h"
/* 80071778-8007195C .text dEvDt_Next_Stage__Fii */
void dEvDt_Next_Stage(int, int) {
@@ -73,7 +73,127 @@ void dEvDtStaff_c::specialProcLight() {
/* 80071F58-80072458 .text specialProcMessage__12dEvDtStaff_cFv */
void dEvDtStaff_c::specialProcMessage() {
/* Nonmatching */
int staffIdx = dComIfGp_evmng_getMyStaffId("MESSAGE", NULL, 0);
if (staffIdx == -1) {
JUT_ASSERT(0x1C2, 0);
return;
}
static char* action_table[] = {
"WAIT",
"CREATE_MSG",
"PUSHBUTTON",
"FINISH",
"CONTINUE",
"END",
"DELETE",
"TELOP_ON",
"TELOP_OFF",
};
static u32 l_msgId;
static msg_class* l_msg;
static int l_msgNo;
int actIdx = dComIfGp_evmng_getMyActIdx(staffIdx, action_table, ARRAY_SIZE(action_table), 0, 0);
if (dComIfGp_evmng_getIsAddvance(staffIdx)) {
switch (actIdx) {
case 0: // WAIT
specialProc_WaitStart(staffIdx);
break;
case 1: // CREATE_MSG
l_msgId = -1;
l_msg = NULL;
u32* idata = dComIfGp_evmng_getMyIntegerP(staffIdx, "msgNo");
JUT_ASSERT(0x1D2, idata);
l_msgNo = *idata;
mWipeDirection = 0;
break;
case 3: // FINISH
case 5: // END
JUT_ASSERT(0x1D8, l_msg);
l_msg->mMode = 0x10;
break;
case 4: // CONTINUE
JUT_ASSERT(0x1DC, l_msg);
l_msg->mMode = 0xF;
idata = dComIfGp_evmng_getMyIntegerP(staffIdx, "msgNo");
JUT_ASSERT(0x1DF, idata);
l_msgNo = *idata;
fopMsgM_messageSet(l_msgNo);
break;
case 7: // TELOP_ON
idata = dComIfGp_evmng_getMyIntegerP(staffIdx, "tlpNo");
JUT_ASSERT(0x1E5, idata);
dComIfGp_setStageNameOn(*idata);
specialProc_WaitStart(staffIdx);
break;
case 8: // TELOP_OFF
dComIfGp_setStageNameOff();
break;
}
}
switch (actIdx) {
case 0: // WAIT
case 7: // TELOP_ON
specialProc_WaitProc(staffIdx);
break;
case 1: // CREATE_MSG
switch (mWipeDirection) {
case 0:
l_msgId = fopMsgM_messageSet(l_msgNo);
if (l_msgId != -1) {
mWipeDirection++;
}
break;
case 1:
l_msg = fopMsgM_SearchByID(l_msgId);
if (l_msg) {
mWipeDirection++;
}
break;
case 2:
dComIfGp_evmng_cutEnd(staffIdx);
break;
}
break;
case 2: // PUSHBUTTON
JUT_ASSERT(0x209, l_msg);
if (l_msg->mMode == 0xE) {
dComIfGp_evmng_cutEnd(staffIdx);
}
break;
case 3: // FINISH
case 6: // DELETE
if (!l_msg) {
dComIfGp_evmng_cutEnd(staffIdx);
} else if (l_msg->mMode == 0x12) {
l_msg->mMode = 0x13;
l_msgId = -1;
l_msg = NULL;
dComIfGp_evmng_cutEnd(staffIdx);
}
break;
case 4: // CONTINUE
dComIfGp_evmng_cutEnd(staffIdx);
break;
case 5: // END
switch (l_msg->mMode) {
case 0x11:
case 0x12:
dComIfGp_evmng_cutEnd(staffIdx);
break;
}
break;
case 8: // TELOP_OFF
if (dComIfGp_checkStageName() == 0) {
dComIfGp_evmng_cutEnd(staffIdx);
}
break;
default:
dComIfGp_evmng_cutEnd(staffIdx);
break;
}
}
/* 80072458-80072748 .text specialProcSound__12dEvDtStaff_cFv */
+1 -1
View File
@@ -756,7 +756,7 @@ bool dNpc_EventCut_c::cutProc() {
},
};
mCurActIdx = dComIfGp_evmng_getMyActIdx(mEvtStaffId, action_table, 7, 1, 0);
mCurActIdx = dComIfGp_evmng_getMyActIdx(mEvtStaffId, action_table, ARRAY_SIZE(action_table), 1, 0);
if(mCurActIdx == -1) {
return false;
}