mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-05 01:19:11 -04:00
d_event_data start
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user