summaryrefslogtreecommitdiff
path: root/src/d/d_event.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-09-23 04:20:38 -0700
committerGitHub <noreply@github.com>2025-09-23 14:20:38 +0300
commit125f2325a5d4979b8142d1610937d32f2f42fb82 (patch)
tree35f255292bcdfb0d78b43442eb74f5b71d89d628 /src/d/d_event.cpp
parent47abdf82fac4a2f58319e8d6ad22a1a035bf413e (diff)
cleanup event stuff (#2688)
* cleanup event stuff * fix debug
Diffstat (limited to 'src/d/d_event.cpp')
-rw-r--r--src/d/d_event.cpp904
1 files changed, 588 insertions, 316 deletions
diff --git a/src/d/d_event.cpp b/src/d/d_event.cpp
index d2de86d86c..ffce9bcd7a 100644
--- a/src/d/d_event.cpp
+++ b/src/d/d_event.cpp
@@ -1,8 +1,3 @@
-//
-// Generated By: dol2asm
-// Translation Unit: d/d_event
-//
-
#include "d/dolzel.h"
#include "d/d_event.h"
@@ -15,11 +10,17 @@
#include "d/actor/d_a_tag_mhint.h"
#include "d/actor/d_a_tag_mstop.h"
#include "d/d_event_debug.h"
+#include "SSystem/SComponent/c_counter.h"
/* 80041480-80041488 03BDC0 0008+00 1/1 0/0 0/0 .text event_debug_evnt__21@unnamed@d_event_cpp@Fv */
namespace {
-static bool event_debug_evnt() {
+static u8 event_debug_evnt() {
+#if DEBUG
+ dEvM_HIO_c& hio = dComIfGp_getEventManager().getEventHIO();
+ return hio.m_eve_debug;
+#else
return false;
+#endif
}
/* 80041488-80041580 03BDC8 00F8+00 1/1 0/0 0/0 .text clear_tmpflag_for_message__21@unnamed@d_event_cpp@Fv */
@@ -44,112 +45,153 @@ dEvt_control_c::dEvt_control_c() {
dEvt_order_c::dEvt_order_c() {}
/* 800415D8-80041668 03BF18 0090+00 1/1 0/0 0/0 .text orderOld__14dEvt_control_cFUsUsUsUsPvPvPCv */
-s32 dEvt_control_c::orderOld(u16 eventType, u16 priority, u16 flag, u16 hind, void* param_4,
- void* param_5, void const* eventName) {
- int eventIdx = dComIfGp_getEventManager().getEventIdx((char*)eventName, -1, -1);
- return order(eventType, priority, flag, hind, param_4, param_5, eventIdx, -1);
+s32 dEvt_control_c::orderOld(u16 type, u16 prio, u16 flag, u16 hind, void* requestActor,
+ void* targetActor, const void* eventName) {
+ #if DEBUG
+ if (event_debug_evnt()) {
+ if (type == dEvt_type_OTHER_e && eventName != NULL) {
+ // "requested event %s!!"
+ OS_REPORT("要求イベント %s!!", eventName);
+ }
+ OS_REPORT("\n");
+ }
+ #endif
+
+ return order(type, prio, flag, hind, requestActor, targetActor, (s16)dComIfGp_getEventManager().getEventIdx((char*)eventName, -1, -1), 0xFF);
}
/* 80041668-80041804 03BFA8 019C+00 3/3 13/13 0/0 .text order__14dEvt_control_cFUsUsUsUsPvPvsUc */
-s32 dEvt_control_c::order(u16 eventType, u16 priority, u16 flag, u16 hind, void* param_4,
- void* param_5, s16 eventID, u8 infoIdx) {
- if (!(flag & 0x400) && infoIdx != 0xFF) {
+s32 dEvt_control_c::order(u16 type, u16 prio, u16 flag, u16 hind, void* requestActor,
+ void* targetActor, s16 id, u8 mapToolId) {
+ if (!(flag & 0x400) && mapToolId != 0xFF) {
int roomNo = dComIfGp_roomControl_getStayNo();
- dStage_MapEvent_dt_c* data = searchMapEventData(infoIdx, roomNo);
+ dStage_MapEvent_dt_c* data = searchMapEventData(mapToolId, roomNo);
- if (data != NULL && data->mSwitch != 0xFF) {
- if (dComIfGs_isSwitch(data->mSwitch, roomNo)) {
+ if (data != NULL && data->switch_no != 0xFF) {
+ if (dComIfGs_isSwitch(data->switch_no, roomNo)) {
return 0;
}
}
}
- if (mNum >= 8) {
+ #if DEBUG
+ if (event_debug_evnt()) {
+ OS_REPORT("%06d: event: type = %d !!", g_Counter.mCounter0, type);
+
+ if (requestActor != NULL) {
+ // "Request actor %s!!"
+ OS_REPORT("要求者 %s!!", dStage_getName(fopAcM_GetProfName(requestActor), -1));
+ }
+
+ if (targetActor != NULL) {
+ // "Target actor %s!!"
+ OS_REPORT("対象者 %s!!", dStage_getName(fopAcM_GetProfName(targetActor), -1));
+ }
+
+ // "Request id = %d prio = %d "
+ OS_REPORT(" 要求 id = %d prio = %d ", id, prio);
+ OS_REPORT("\n");
+ }
+ #endif
+
+ if (mNum >= ARRAY_SIZE(mOrder)) {
+ // "%06d: event: order failed"
+ OS_REPORT("\x1b[34m%06d: event: 注文失敗\n\x1b[m", g_Counter.mCounter0);
return 0;
}
- dEvt_order_c* order = &mOrder[mNum];
- order->mEventType = eventType;
- order->mPriority = priority;
- order->mFlag = flag;
- order->mActor1 = (fopAc_ac_c*)param_4;
- order->mActor2 = (fopAc_ac_c*)param_5;
- order->mEventId = eventID;
- order->mHindFlag = hind;
- order->mEventInfoIdx = infoIdx;
+ dEvt_order_c* new_order = &mOrder[mNum];
+ new_order->mEventType = type;
+ new_order->mPriority = prio;
+ new_order->mFlag = flag;
+ new_order->mpRequestActor = (fopAc_ac_c*)requestActor;
+ new_order->mpTargetActor = (fopAc_ac_c*)targetActor;
+ new_order->mEventId = id;
+ new_order->mHindFlag = hind;
+ new_order->mMapToolId = mapToolId;
- if (order->mPriority == 0) {
- order->mPriority = 1;
+ if (new_order->mPriority == 0) {
+ new_order->mPriority = 1;
}
if (mNum == 0) {
mOrderIdx = 0;
- order->mNextOrderIdx = -1;
+ new_order->mNextOrderIdx = -1;
} else {
dEvt_order_c* curOrder;
int curOrderIdx = mOrderIdx;
curOrder = &mOrder[curOrderIdx];
- if (order->mPriority < curOrder->mPriority) {
+ if (new_order->mPriority < curOrder->mPriority) {
mOrderIdx = mNum;
- order->mNextOrderIdx = curOrderIdx;
+ new_order->mNextOrderIdx = curOrderIdx;
} else {
while (curOrder->mNextOrderIdx >= 0) {
- if (order->mPriority < mOrder[curOrder->mNextOrderIdx].mPriority) {
+ dEvt_order_c* next_order = &mOrder[curOrder->mNextOrderIdx];
+ if (new_order->mPriority < next_order->mPriority) {
break;
}
+
int nextOrderIdx = curOrder->mNextOrderIdx;
curOrder = &mOrder[nextOrderIdx];
}
- order->mNextOrderIdx = curOrder->mNextOrderIdx;
+ new_order->mNextOrderIdx = curOrder->mNextOrderIdx;
curOrder->mNextOrderIdx = mNum;
}
}
+
mNum++;
+ #if DEBUG
+ if (event_debug_evnt()) {
+ // "%06d: event: order success mNum = %d"
+ OS_REPORT("\x1B[34m%06d: event: 注文成功 mNum = %d\n\x1B[m", g_Counter.mCounter0, mNum);
+ }
+ #endif
+
return 1;
}
/* 80041804-80041934 03C144 0130+00 5/5 0/0 0/0 .text setParam__14dEvt_control_cFP12dEvt_order_c
*/
-void dEvt_control_c::setParam(dEvt_order_c* p_order) {
- setPt1(p_order->mActor1);
- setPt2(p_order->mActor2);
+void dEvt_control_c::setParam(dEvt_order_c* order) {
+ setPt1(order->mpRequestActor);
+ setPt2(order->mpTargetActor);
- mSpecifiedEvent = p_order->mEventId;
- mHindFlag = p_order->mHindFlag;
+ mEventId = order->mEventId;
+ mHindFlag = order->mHindFlag;
- if (dComIfGp_getPlayer(0) != p_order->mActor1) {
- setPtT(p_order->mActor1);
- setPtI(p_order->mActor1);
+ if (dComIfGp_getPlayer(0) != order->mpRequestActor) {
+ setPtT(order->mpRequestActor);
+ setPtI(order->mpRequestActor);
} else {
- setPtT(p_order->mActor2);
- setPtI(p_order->mActor2);
+ setPtT(order->mpTargetActor);
+ setPtI(order->mpTargetActor);
}
- mMapToolId = p_order->mEventInfoIdx;
+ mMapToolId = order->mMapToolId;
field_0xea = 0xFF;
field_0xec = 0xFF;
int roomNo = dComIfGp_roomControl_getStayNo();
- dStage_MapEvent_dt_c* data = searchMapEventData(mMapToolId, roomNo);
- mStageEventDt = data;
+ dStage_MapEvent_dt_c* mapdata = searchMapEventData(mMapToolId, roomNo);
+ mStageEventDt = mapdata;
- if (data != NULL) {
- field_0xea = data->field_0x16;
+ if (mapdata != NULL) {
+ field_0xea = mapdata->data.maptool.field_0x16;
- if (data->mSwitch != 0xFF) {
- dComIfGs_onSwitch(data->mSwitch, roomNo);
+ if (mapdata->switch_no != 0xFF) {
+ dComIfGs_onSwitch(mapdata->switch_no, roomNo);
}
- if (p_order->mFlag & 0x300) {
- field_0xec = data->field_0x5;
+ if (order->mFlag & 0x300) {
+ field_0xec = mapdata->field_0x5;
}
}
- if (!(p_order->mFlag & 0x200)) {
- mEventID = p_order->mEventId;
+ if (!(order->mFlag & 0x200)) {
+ mUnkEventId = order->mEventId;
}
mCullRate = 1.0f;
@@ -158,10 +200,10 @@ void dEvt_control_c::setParam(dEvt_order_c* p_order) {
/* 80041934-80041964 03C274 0030+00 2/2 0/0 0/0 .text
* beforeFlagProc__14dEvt_control_cFP12dEvt_order_c */
-s32 dEvt_control_c::beforeFlagProc(dEvt_order_c* p_order) {
- fopAc_ac_c* actor = p_order->mActor2;
+s32 dEvt_control_c::beforeFlagProc(dEvt_order_c* order) {
+ fopAc_ac_c* actor = order->mpTargetActor;
- if (p_order->mFlag & 4 && actor->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != true) {
+ if ((order->mFlag & 4) && !actor->eventInfo.chkCondition(dEvtCnd_CANTALK_e)) {
return 0;
}
@@ -174,23 +216,23 @@ static char const* dummy1() {
/* 80041964-800419A8 03C2A4 0044+00 2/2 0/0 0/0 .text
* afterFlagProc__14dEvt_control_cFP12dEvt_order_c */
-void dEvt_control_c::afterFlagProc(dEvt_order_c* p_order) {
- if (p_order->mFlag & 2) {
+void dEvt_control_c::afterFlagProc(dEvt_order_c* order) {
+ if (order->mFlag & 2) {
dComIfGp_getEventManager().issueStaff("ALL");
}
}
/* 800419A8-80041A20 03C2E8 0078+00 4/4 0/0 0/0 .text
* commonCheck__14dEvt_control_cFP12dEvt_order_cUsUs */
-int dEvt_control_c::commonCheck(dEvt_order_c* p_order, u16 condition, u16 command) {
- fopAc_ac_c* actor1 = p_order->mActor1;
- fopAc_ac_c* actor2 = p_order->mActor2;
+int dEvt_control_c::commonCheck(dEvt_order_c* order, u16 condition, u16 command) {
+ fopAc_ac_c* actor1 = order->mpRequestActor;
+ fopAc_ac_c* actor2 = order->mpTargetActor;
if ((actor1 != NULL && actor1->eventInfo.chkCondition(condition)) &&
(actor2 != NULL && actor2->eventInfo.chkCondition(condition))) {
actor1->eventInfo.setCommand(command);
actor2->eventInfo.setCommand(command);
- setParam(p_order);
+ setParam(order);
return 1;
}
@@ -199,52 +241,80 @@ int dEvt_control_c::commonCheck(dEvt_order_c* p_order, u16 condition, u16 comman
/* 80041A20-80041B58 03C360 0138+00 1/1 0/0 0/0 .text talkCheck__14dEvt_control_cFP12dEvt_order_c
*/
-int dEvt_control_c::talkCheck(dEvt_order_c* p_order) {
- char* event = "DEFAULT_TALK";
- fopAc_ac_c* actor = p_order->mActor2;
+int dEvt_control_c::talkCheck(dEvt_order_c* order) {
+ char* eventname = "DEFAULT_TALK";
+ fopAc_ac_c* actor = order->mpTargetActor;
if ((fopAcM_GetName(actor) == PROC_Tag_Mhint && ((daTagMhint_c*)actor)->checkNoAttention()) ||
(fopAcM_GetName(actor) == PROC_Tag_Mstop && ((daTagMstop_c*)actor)->checkNoAttention()) ||
- fopAcM_GetName(actor) == PROC_MIDNA) {
+ fopAcM_GetName(actor) == PROC_MIDNA)
+ {
daMidna_c* midna = (daMidna_c*)daPy_py_c::getMidnaActor();
if (!daPy_py_c::checkNowWolf() || midna->checkNoDraw()) {
- event = "MHINT_TALK";
+ eventname = "MHINT_TALK";
}
}
- if (commonCheck(p_order, 1, 1)) {
- mMode = EVT_MODE_TALK;
- if (mSpecifiedEvent == -1) {
+ if (commonCheck(order, dEvtCnd_CANTALK_e, dEvtCmd_INTALK_e)) {
+ #if DEBUG
+ if (event_debug_evnt()) {
+ // "conversation actor1 = %x actor2 = %x"
+ OS_REPORT("会話へ actor1 = %x actor2 = %x\n", order->mpRequestActor, order->mpTargetActor);
+ // "conversation partner %s"
+ OS_REPORT("会話相手 %s\n", dStage_getName(fopAcM_GetProfName(actor), -1));
+ }
+ #endif
+
+ mMode = dEvt_mode_TALK_e;
+
+ if (mEventId == -1) {
if (actor != NULL && actor->eventInfo.getEventName() != NULL) {
- mSpecifiedEvent = actor->eventInfo.getEventId();
+ mEventId = actor->eventInfo.getEventId();
} else {
- mSpecifiedEvent = dComIfGp_getEventManager().getEventIdx(event, 0xFF, -1);
+ mEventId = dComIfGp_getEventManager().getEventIdx(eventname, 0xFF, -1);
}
}
- dComIfGp_getEventManager().order(mSpecifiedEvent);
+
+ if (!dComIfGp_getEventManager().order(mEventId)) {
+ // "specified event %d not ordered!!"
+ OS_REPORT("指定イベント %d が無い!!\n", mEventId);
+ JUT_ASSERT(429, 0);
+ }
+
return 1;
- } else {
- return 0;
}
+
+ return 0;
}
/* 80041B58-80041C90 03C498 0138+00 1/1 0/0 0/0 .text
* talkXyCheck__14dEvt_control_cFP12dEvt_order_c */
-int dEvt_control_c::talkXyCheck(dEvt_order_c* p_order) {
- const char* event = "DEFAULT_TALK_XY";
- fopAc_ac_c* pActor2 = p_order->mActor2;
+int dEvt_control_c::talkXyCheck(dEvt_order_c* order) {
+ const char* eventname = "DEFAULT_TALK_XY";
+ fopAc_ac_c* targetActor = order->mpTargetActor;
int itemIndex;
- switch (p_order->mEventType) {
- case EVT_TYPE_SHOWITEM_X:
+ switch (order->mEventType) {
+ case dEvt_type_SHOWITEM_X_e:
itemIndex = SELECT_ITEM_X;
- field_0xed = 1;
+ mTalkXyType = 1;
break;
- case EVT_TYPE_SHOWITEM_Y:
- field_0xed = 2;
+ case dEvt_type_SHOWITEM_Y_e:
+ mTalkXyType = 2;
itemIndex = SELECT_ITEM_Y;
break;
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ case 8:
+ mTalkXyType = 3;
+ itemIndex = 2;
+ break;
+ case 9:
+ mTalkXyType = 4;
+ itemIndex = 3;
+ break;
+ #endif
default:
- field_0xed = 0;
+ OS_REPORT_ERROR("event XY talk unknown type %d\n", order->mEventType);
+ mTalkXyType = 0;
return 0;
}
@@ -252,26 +322,40 @@ int dEvt_control_c::talkXyCheck(dEvt_order_c* p_order) {
return 0;
}
- if (pActor2 == NULL || !pActor2->eventInfo.chkCondition(dEvtCnd_CANTALKITEM_e)) {
+ if (targetActor == NULL || !targetActor->eventInfo.chkCondition(dEvtCnd_CANTALKITEM_e)) {
return 0;
}
- if (commonCheck(p_order, 1, 1)) {
- mMode = EVT_MODE_TALK;
+ if (commonCheck(order, dEvtCnd_CANTALK_e, dEvtCmd_INTALK_e)) {
+ #if DEBUG
+ if (event_debug_evnt()) {
+ // "conversation actor1 = %x actor2 = %x"
+ OS_REPORT("会話へ actor1 = %x actor2 = %x\n", order->mpRequestActor, order->mpTargetActor);
+ // "conversation partner"
+ OS_REPORT("会話相手 %s\n", dStage_getName(fopAcM_GetProfName(targetActor), -1));
+ }
+ #endif
+
+ mMode = dEvt_mode_TALK_e;
mPreItemNo = dComIfGp_getSelectItem(itemIndex);
- mSpecifiedEvent = dComIfGp_getEventManager().getEventIdx(event, 0xFF, -1);
- dComIfGp_getEventManager().order(mSpecifiedEvent);
+ mEventId = dComIfGp_getEventManager().getEventIdx(eventname, 0xFF, -1);
+
+ if (!dComIfGp_getEventManager().order(mEventId)) {
+ // "specified event %d not ordered!!"
+ OS_REPORT("指定イベント %d が無い!!\n", mEventId);
+ JUT_ASSERT(512, 0);
+ }
return 1;
- } else {
- return 0;
}
+
+ return 0;
}
/* 80041C90-80041D34 03C5D0 00A4+00 1/1 0/0 0/0 .text catchCheck__14dEvt_control_cFP12dEvt_order_c
*/
-int dEvt_control_c::catchCheck(dEvt_order_c* p_order) {
- fopAc_ac_c* actor2 = p_order->mActor2;
- fopAc_ac_c* actor1 = p_order->mActor1;
+int dEvt_control_c::catchCheck(dEvt_order_c* order) {
+ fopAc_ac_c* actor2 = order->mpTargetActor;
+ fopAc_ac_c* actor1 = order->mpRequestActor;
if (actor1 == NULL || (actor2 != NULL && !actor2->eventInfo.chkCondition(dEvtCnd_40_e))) {
return 0;
@@ -282,13 +366,18 @@ int dEvt_control_c::catchCheck(dEvt_order_c* p_order) {
actor2->eventInfo.setCommand(dEvtCmd_INCATCH_e);
}
- setParam(p_order);
+ setParam(order);
mPreItemNo = dComIfGp_att_getCatchChgItem();
- mMode = EVT_MODE_DEMO;
+ mMode = dEvt_mode_DEMO_e;
- if (mSpecifiedEvent != -1) {
- dComIfGp_getEventManager().order(mSpecifiedEvent);
+ if (mEventId != -1) {
+ if (!dComIfGp_getEventManager().order(mEventId)) {
+ // "specified event %d not ordered!!"
+ OS_REPORT("指定イベント %d が無い!!\n", mEventId);
+ JUT_ASSERT(551, 0);
+ }
}
+
return 1;
}
@@ -304,45 +393,47 @@ int dEvt_control_c::talkEnd() {
actor->eventInfo.setCommand(dEvtCmd_NONE_e);
}
- if (mSpecifiedEvent != -1) {
- dComIfGp_getEventManager().endProc(mSpecifiedEvent, 1);
- mSpecifiedEvent = -1;
+ if (mEventId != -1) {
+ dComIfGp_getEventManager().endProc(mEventId, TRUE);
+ mEventId = -1;
}
daItemBase_c* item = (daItemBase_c*)fopAcM_getItemEventPartner(NULL);
if (item != NULL && fopAcM_GetName(item) == PROC_ITEM) {
item->dead();
}
+
return 1;
}
/* 80041DDC-80041F18 03C71C 013C+00 1/1 0/0 0/0 .text demoCheck__14dEvt_control_cFP12dEvt_order_c
*/
-int dEvt_control_c::demoCheck(dEvt_order_c* p_order) {
- fopAc_ac_c* actor1 = p_order->mActor1;
- fopAc_ac_c* actor2 = p_order->mActor2;
- int eventId = p_order->mEventId;
+int dEvt_control_c::demoCheck(dEvt_order_c* order) {
+ fopAc_ac_c* actor1 = order->mpRequestActor;
+ fopAc_ac_c* actor2 = order->mpTargetActor;
+ int eventId = order->mEventId;
if (actor2 == NULL) {
+ JUT_ASSERT(608, 0);
return 0;
}
- if (!(p_order->mFlag & 0x10)) {
- if (actor1 != NULL && !actor1->eventInfo.chkCondition(2)) {
+ if (!(order->mFlag & 0x10)) {
+ if (actor1 != NULL && !actor1->eventInfo.chkCondition(dEvtCnd_CANDEMO_e)) {
return 0;
}
- if (actor2 != NULL && !actor2->eventInfo.chkCondition(2)) {
+ if (actor2 != NULL && !actor2->eventInfo.chkCondition(dEvtCnd_CANDEMO_e)) {
return 0;
}
}
- if (!beforeFlagProc(p_order)) {
+ if (!beforeFlagProc(order)) {
return 0;
}
if (actor1 != NULL) {
- dComIfGp_getEventManager().setObjectArchive(actor1->eventInfo.getArchiveName());
+ dComIfGp_getEventManager().setObjectArchive(actor1->eventInfo.mArchiveName);
}
if (!dComIfGp_getEventManager().order(eventId)) {
@@ -357,9 +448,9 @@ int dEvt_control_c::demoCheck(dEvt_order_c* p_order) {
actor2->eventInfo.setCommand(dEvtCmd_INDEMO_e);
}
- mMode = EVT_MODE_DEMO;
- setParam(p_order);
- afterFlagProc(p_order);
+ mMode = dEvt_mode_DEMO_e;
+ setParam(order);
+ afterFlagProc(order);
return 1;
}
@@ -375,97 +466,146 @@ int dEvt_control_c::demoEnd() {
actor->eventInfo.setCommand(dEvtCmd_NONE_e);
}
- if (mSpecifiedEvent != -1) {
- dComIfGp_getEventManager().endProc(mSpecifiedEvent, 1);
- mSpecifiedEvent = -1;
+ if (mEventId != -1) {
+ dComIfGp_getEventManager().endProc(mEventId, TRUE);
+ mEventId = -1;
}
+
return 1;
}
-int dEvt_control_c::potentialCheck(dEvt_order_c* p_order) {
- fopAc_ac_c* actor = p_order->mActor1;
+int dEvt_control_c::potentialCheck(dEvt_order_c* order) {
+ fopAc_ac_c* actor1 = order->mpRequestActor;
+ fopAc_ac_c* actor2 = order->mpTargetActor;
+ const char* actorname;
+
+ #if DEBUG
+ if (actor1 == NULL || actor2 == NULL) {
+ JUT_ASSERT(704, 0);
+ }
+ #endif
- if (!beforeFlagProc(p_order)) {
+ if (!beforeFlagProc(order)) {
return 0;
- } else {
- actor->eventInfo.setCommand(dEvtCmd_INDEMO_e);
- mMode = EVT_MODE_DEMO;
- setParam(p_order);
- afterFlagProc(p_order);
- return 1;
}
+
+ actor1->eventInfo.setCommand(dEvtCmd_INDEMO_e);
+ mMode = dEvt_mode_DEMO_e;
+ setParam(order);
+ afterFlagProc(order);
+
+ #if DEBUG
+ if (event_debug_evnt()) {
+ if (actor1 != NULL) {
+ actorname = dStage_getName(fopAcM_GetProfName(actor1), -1);
+ } else {
+ actorname = "???";
+ }
+
+ // "%06d: event: potential demo start (%s) "
+ OS_REPORT("\x1b[34m%06d: event: 仮想デモ開始 (%s) \n\x1b[m", g_Counter.mCounter0, actorname);
+ }
+ #endif
+ return 1;
}
/* 80042014-8004212C 03C954 0118+00 1/1 0/0 0/0 .text doorCheck__14dEvt_control_cFP12dEvt_order_c
*/
-int dEvt_control_c::doorCheck(dEvt_order_c* p_order) {
- if (commonCheck(p_order, 4, 3)) {
- mMode = EVT_MODE_DEMO;
+int dEvt_control_c::doorCheck(dEvt_order_c* order) {
+ // "door demo check start!!"
+ OS_REPORT("ドアデモのチェック開始!!\n");
+
+ if (commonCheck(order, dEvtCnd_CANDOOR_e, dEvtCmd_INDOOR_e)) {
+ #if DEBUG
+ if (event_debug_evnt()) {
+ // "door demo actor1 = %x actor2 = %x"
+ OS_REPORT("ドアデモへ actor1 = %x actor2 = %x\n", order->mpRequestActor, order->mpTargetActor);
+ }
+ #endif
+
+ mMode = dEvt_mode_DEMO_e;
fopAc_ac_c* actor2 = getPt2();
if (actor2 != NULL) {
- dComIfGp_getEventManager().setObjectArchive(actor2->eventInfo.getArchiveName());
+ dComIfGp_getEventManager().setObjectArchive(actor2->eventInfo.mArchiveName);
}
- if (mSpecifiedEvent == -1 && actor2 != NULL && actor2->eventInfo.getEventId() != -1) {
- mSpecifiedEvent = actor2->eventInfo.getEventId();
+ if (mEventId == -1 && actor2 != NULL && actor2->eventInfo.getEventId() != -1) {
+ mEventId = actor2->eventInfo.getEventId();
}
- if (mSpecifiedEvent != -1 &&
- dComIfGp_getEventManager().getEventData(mSpecifiedEvent) != NULL) {
- dComIfGp_getEventManager().order(mSpecifiedEvent);
+ if (mEventId != -1 && dComIfGp_getEventManager().getEventData(mEventId) != NULL) {
+ if (!dComIfGp_getEventManager().order(mEventId)) {
+ JUT_ASSERT(773, 0);
+ }
} else {
- mSpecifiedEvent = -1;
+ mEventId = -1;
reset();
}
- if (p_order->mEventType == EVT_TYPE_TREASURE) {
+ if (order->mEventType == dEvt_type_TREASURE_e) {
onEventFlag(4);
} else {
onEventFlag(0x40);
}
return 1;
- } else {
- return 0;
}
+
+ return 0;
}
/* 8004212C-800421C0 03CA6C 0094+00 1/1 0/0 0/0 .text itemCheck__14dEvt_control_cFP12dEvt_order_c
*/
-int dEvt_control_c::itemCheck(dEvt_order_c* p_order) {
- const char* event = "DEFAULT_GETITEM";
+int dEvt_control_c::itemCheck(dEvt_order_c* order) {
+ const char* eventname = "DEFAULT_GETITEM";
- if (commonCheck(p_order, 8, 4)) {
- mMode = EVT_MODE_DEMO;
- mSpecifiedEvent = dComIfGp_getEventManager().getEventIdx(event, -1, -1);
- dComIfGp_getEventManager().order(mSpecifiedEvent);
+ if (commonCheck(order, dEvtCnd_CANGETITEM_e, dEvtCmd_INGETITEM_e)) {
+ #if DEBUG
+ if (event_debug_evnt()) {
+ OS_REPORT("アイテムデモへ actor1 = %x actor2 = %x\n", order->mpRequestActor, order->mpTargetActor);
+ }
+ #endif
+
+ mMode = dEvt_mode_DEMO_e;
+ mEventId = dComIfGp_getEventManager().getEventIdx(eventname, 0xFF, -1);
+ if (!dComIfGp_getEventManager().order(mEventId)) {
+ // "specified event %d not ordered!!"
+ OS_REPORT("指定イベント %s が無い!!\n", eventname);
+ JUT_ASSERT(817, 0);
+ }
return 1;
- } else {
- return 0;
}
+
+ return 0;
}
/* 800421C0-80042254 03CB00 0094+00 1/1 0/0 0/0 .text endProc__14dEvt_control_cFv */
int dEvt_control_c::endProc() {
+ #if DEBUG
+ if (event_debug_evnt()) {
+ OS_REPORT("\x1b[34m%06d: event: イベントが終了しました mMode = %d \n\x1b[m", g_Counter.mCounter0, mMode);
+ }
+ #endif
+
switch (mMode) {
- case EVT_MODE_TALK:
+ case dEvt_mode_TALK_e:
talkEnd();
break;
- case EVT_MODE_DEMO:
+ case dEvt_mode_DEMO_e:
demoEnd();
break;
- case 3:
- break;
+ case dEvt_mode_COMPULSORY_e:
+ JUT_ASSERT(858, 0);
}
- mMode = EVT_MODE_NONE;
- field_0xea = 255;
- mMapToolId = 255;
+ mMode = dEvt_mode_WAIT_e;
+ field_0xea = 0xFF;
+ mMapToolId = 0xFF;
mStageEventDt = NULL;
- field_0xec = 255;
- field_0xed = 0;
- mEventID = 255;
+ field_0xec = 0xFF;
+ mTalkXyType = 0;
+ mUnkEventId = 255;
mPreItemNo = fpcNm_ITEM_NONE;
dComIfGp_getEventManager().setStartDemo(-2);
return 1;
@@ -474,14 +614,14 @@ int dEvt_control_c::endProc() {
/* 80042254-800422C0 03CB94 006C+00 1/1 0/0 0/0 .text change__14dEvt_control_cFv */
int dEvt_control_c::change() {
dEvt_order_c* order;
- s8 curOrderIdx;
+
if (mNum != 0) {
- curOrderIdx = mOrderIdx;
+ s8 curOrderIdx = mOrderIdx;
do {
order = &mOrder[curOrderIdx];
- if (order->mFlag & 0xE00 && order->mActor1 == mChangeOK) {
+ if ((order->mFlag & 0xE00) && order->mpRequestActor == mChangeActor) {
mOrderIdx = curOrderIdx;
mNum = 1;
order->mNextOrderIdx = -1;
@@ -498,6 +638,9 @@ int dEvt_control_c::change() {
/* 800422C0-80042468 03CC00 01A8+00 2/1 0/0 0/0 .text entry__14dEvt_control_cFv */
int dEvt_control_c::entry() {
if (mNum != 0) {
+ // "%06d: event: %d event requests!!"
+ OS_REPORT("\x1b[34m%06d: event: %d個のイベント要求!!\n\x1b[m", g_Counter.mCounter0, mNum);
+
s8 orderIdx = mOrderIdx;
mNum = 0;
@@ -506,51 +649,69 @@ int dEvt_control_c::entry() {
orderIdx = order->mNextOrderIdx;
switch (order->mEventType) {
- case EVT_TYPE_TALK:
- if (dComIfGs_getLife() != 0 && talkCheck(order) != 0) {
+ case dEvt_type_TALK_e:
+ if (dComIfGs_getLife() != 0 && talkCheck(order)) {
return 1;
}
break;
- case EVT_TYPE_OTHER:
- if (dComIfGs_getLife() != 0 && demoCheck(order) != 0) {
+ case dEvt_type_OTHER_e:
+ if (dComIfGs_getLife() != 0 && demoCheck(order)) {
return 1;
}
break;
- case EVT_TYPE_DOOR:
- case EVT_TYPE_TREASURE:
- if (dComIfGs_getLife() != 0 && doorCheck(order) != 0) {
+ case dEvt_type_DOOR_e:
+ case dEvt_type_TREASURE_e:
+ if (dComIfGs_getLife() != 0 && doorCheck(order)) {
return 1;
}
break;
- case EVT_TYPE_COMPULSORY:
- mMode = 3;
+ case dEvt_type_COMPULSORY_e:
+ mMode = dEvt_mode_COMPULSORY_e;
+
+ #if DEBUG
+ if (event_debug_evnt()) {
+ // "%06d: event: player initiated demo start"
+ OS_REPORT("\x1b[34m%06d: event: プレーヤ主導デモ開始\n\x1b[m", g_Counter.mCounter0);
+ }
+ #endif
+
setParam(order);
return 1;
- case EVT_TYPE_POTENTIAL:
- if (dComIfGs_getLife() != 0 && potentialCheck(order) != 0) {
+ case dEvt_type_POTENTIAL_e:
+ if (dComIfGs_getLife() != 0 && potentialCheck(order)) {
return 1;
}
break;
- case EVT_TYPE_ITEM:
- if (dComIfGs_getLife() != 0 && itemCheck(order) != 0) {
+ case dEvt_type_ITEM_e:
+ if (dComIfGs_getLife() != 0 && itemCheck(order)) {
return 1;
}
break;
- case EVT_TYPE_SHOWITEM_X:
- case EVT_TYPE_SHOWITEM_Y:
- if (dComIfGs_getLife() != 0 && talkXyCheck(order) != 0) {
+ case dEvt_type_SHOWITEM_X_e:
+ case dEvt_type_SHOWITEM_Y_e:
+ if (dComIfGs_getLife() != 0 && talkXyCheck(order)) {
return 1;
}
break;
- case EVT_TYPE_CATCH:
- if (dComIfGs_getLife() != 0 && catchCheck(order) != 0) {
+ case dEvt_type_CATCH_e:
+ if (dComIfGs_getLife() != 0 && catchCheck(order)) {
return 1;
}
break;
+ case 12:
+ JUT_ASSERT(980, 0);
+ break;
case 13:
break;
}
} while (orderIdx >= 0);
+
+ #if DEBUG
+ if (event_debug_evnt()) {
+ // "%06d: event: check failed or change"
+ OS_REPORT("\x1b[34m%06d: event: チェック失敗 or チェンジ\n\x1b[m", g_Counter.mCounter0);
+ }
+ #endif
}
return 0;
@@ -560,11 +721,11 @@ int dEvt_control_c::entry() {
void dEvt_control_c::reset() {
if (field_0xec != 0xFF) {
fopAc_ac_c* pt1 = getPt1();
- fopAc_ac_c* pt1_2 = pt1;
+ fopAc_ac_c* var_r27 = pt1;
s16 eventIdx = dComIfGp_getEventManager().getEventIdx(NULL, field_0xec, -1);
- order(EVT_TYPE_OTHER, 3, 0x201, mHindFlag, pt1, getPt2(), eventIdx, field_0xec);
- mChangeOK = pt1;
+ order(dEvt_type_OTHER_e, 3, 0x201, mHindFlag, pt1, getPt2(), eventIdx, field_0xec);
+ mChangeActor = pt1;
}
onEventFlag(8);
@@ -573,41 +734,48 @@ void dEvt_control_c::reset() {
/* 80042518-800425B4 03CE58 009C+00 3/3 3/3 46/46 .text reset__14dEvt_control_cFPv */
void dEvt_control_c::reset(void* param_0) {
if (field_0xec != 0xFF) {
- s16 eventIdx = dComIfGp_getEventManager().getEventIdx((fopAc_ac_c*)param_0, field_0xec);
- fopAc_ac_c* pt2 = getPt2();
- order(EVT_TYPE_OTHER, 3, 0x201, mHindFlag, param_0, pt2, eventIdx, field_0xec);
+ fopAc_ac_c* var_r29 = (fopAc_ac_c*)param_0;
+ s16 eventIdx = dComIfGp_getEventManager().getEventIdx(var_r29, field_0xec);
+ order(dEvt_type_OTHER_e, 3, 0x201, mHindFlag, param_0, getPt2(), eventIdx, field_0xec);
}
- mChangeOK = param_0;
+ mChangeActor = param_0;
onEventFlag(8);
}
void dEvt_control_c::clearSkipSystem() {
mSkipFunc = NULL;
- field_0x104 = -1;
- field_0x10c = 0;
+ mSkipActorId = fpcM_ERROR_PROCESS_ID_e;
+ mSkipParameter = 0;
mSkipTimer = 0;
if (!chkFlag2(3)) {
- mSkipFade = 0;
+ mIsSkipFade = FALSE;
}
+
mSkipEventName[0] = 0;
}
/* 800425E8-8004261C 03CF28 0034+00 0/0 2/2 5/5 .text dEv_defaultSkipProc__FPvi */
-int dEv_defaultSkipProc(void* param_0, int) {
- dComIfGp_getEvent().reset(param_0);
+int dEv_defaultSkipProc(void* actor, int parameter) {
+ // "%06d: event: skip event!!!"
+ OS_REPORT("\x1b[34m%06d: event: スキップ event!!!\n\x1b[m", g_Counter.mCounter0);
+ dEvt_control_c& event = dComIfGp_getEvent();
+
+ event.reset(actor);
return 1;
}
/* 8004261C-80042778 03CF5C 015C+00 1/1 1/1 0/0 .text dEv_defaultSkipZev__FPvi */
-int dEv_defaultSkipZev(void* param_0, int param_1) {
- dEvt_control_c* evControl = &dComIfGp_getEvent();
+int dEv_defaultSkipZev(void* actor, int parameter) {
+ // "%06d: event: skip ZEV event!!!"
+ OS_REPORT("\x1b[34m%06d: event: スキップ ZEV event!!!\n\x1b[m", g_Counter.mCounter0);
+ dEvt_control_c* event = &dComIfGp_getEvent();
s16 eventID = -1;
- dStage_MapEvent_dt_c* data = evControl->getStageEventDt();
- bool var_r27 = true;
+ dStage_MapEvent_dt_c* data = event->getStageEventDt();
+ bool var_r27 = true;
if (data != NULL) {
if (data->field_0x9 != 0xFF) {
var_r27 = false;
@@ -616,41 +784,47 @@ int dEv_defaultSkipZev(void* param_0, int param_1) {
}
}
- switch (param_1) {
+ char eventName[28];
+ char* skipName;
+ switch (parameter) {
case 0:
- char eventName[32];
- strcpy(eventName, data->mName);
+ strcpy(eventName, data->data.event_name);
strcat(eventName, "$0");
eventID = dComIfGp_getEventManager().getEventIdx(eventName, 0xFF, -1);
+ OS_REPORT("%06d: event: [%d] %s!\n", g_Counter.mCounter0, eventID, eventName);
break;
case 1:
- char* skipName = dComIfGp_getEvent().getSkipEventName();
+ skipName = dComIfGp_getEvent().getSkipEventName();
eventID = dComIfGp_getEventManager().getEventIdx(skipName, 0xFF, -1);
+ OS_REPORT("%06d: event: [%d] %s!\n", g_Counter.mCounter0, eventID, dComIfGp_getEvent().getSkipEventName());
break;
+ default:
+ OS_REPORT("%06d: event: ERROR: illegal prameter!\n", g_Counter.mCounter0);
}
if (eventID != -1) {
- evControl->reset(param_0);
- fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3,
+ event->reset(actor);
+ fopAcM_orderOtherEventId((fopAc_ac_c*)actor, eventID, event->getMapToolId(), -1, 3,
0x400);
return 2;
} else if (var_r27) {
- evControl->reset(param_0);
+ event->reset(actor);
return 1;
} else {
- evControl->reset(param_0);
+ event->reset(actor);
return 1;
}
}
/* 80042778-800428DC 03D0B8 0164+00 0/0 1/1 0/0 .text dEv_defaultSkipStb__FPvi */
-int dEv_defaultSkipStb(void* param_0, int param_1) {
- dEvt_control_c* evControl = &dComIfGp_getEvent();
+int dEv_defaultSkipStb(void* actor, int parameter) {
+ OS_REPORT("\x1b[34m%06d: event: スキップ STB event!!!\n\x1b[m", g_Counter.mCounter0);
+ dEvt_control_c* event = &dComIfGp_getEvent();
s16 eventID = -1;
- dStage_MapEvent_dt_c* data = evControl->getStageEventDt();
- bool var_r27 = true;
+ dStage_MapEvent_dt_c* data = event->getStageEventDt();
+ bool var_r27 = true;
if (data != NULL) {
if (data->field_0x9 != 0xFF) {
var_r27 = false;
@@ -659,37 +833,42 @@ int dEv_defaultSkipStb(void* param_0, int param_1) {
}
}
- switch (param_1) {
+ char eventName[28];
+ char* skipName;
+ switch (parameter) {
case 0:
- char eventName[32];
- strcpy(eventName, data->mName);
+ strcpy(eventName, data->data.event_name);
strcat(eventName, "$0");
eventID = dComIfGp_getEventManager().getEventIdx(eventName, 0xFF, -1);
+ OS_REPORT("%06d: event: [%d] %s!\n", g_Counter.mCounter0, eventID, eventName);
break;
case 1:
- char* skipName = dComIfGp_getEvent().getSkipEventName();
+ skipName = dComIfGp_getEvent().getSkipEventName();
eventID = dComIfGp_getEventManager().getEventIdx(skipName, 0xFF, -1);
+ OS_REPORT("%06d: event: [%d] %s!\n", g_Counter.mCounter0, eventID, dComIfGp_getEvent().getSkipEventName());
break;
+ default:
+ OS_REPORT("%06d: event: ERROR: illegal prameter!\n", g_Counter.mCounter0);
}
if (eventID != -1) {
- evControl->reset(param_0);
+ event->reset(actor);
dDemo_c::end();
- fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3,
+ fopAcM_orderOtherEventId((fopAc_ac_c*)actor, eventID, event->getMapToolId(), -1, 3,
0x400);
return 2;
} else if (var_r27) {
- evControl->reset(param_0);
+ event->reset(actor);
dDemo_c::end();
return 1;
} else {
- evControl->reset(param_0);
+ event->reset(actor);
return 1;
}
}
/* 800428DC-8004290C 03D21C 0030+00 0/0 1/1 33/33 .text dEv_noFinishSkipProc__FPvi */
-int dEv_noFinishSkipProc(void*, int) {
+int dEv_noFinishSkipProc(void* actor, int parameter) {
dComIfGp_getEvent().offSkipFade();
return 0;
}
@@ -698,44 +877,47 @@ char* dEvt_control_c::getSkipEventName() {
return mSkipEventName;
}
-void dEvt_control_c::setSkipProc(void* param_0, SkipFunc skipFunc, int param_2) {
- mSkipFunc = skipFunc;
- field_0x104 = getPId(param_0);
- field_0x10c = param_2;
+void dEvt_control_c::setSkipProc(void* skipActor, dEvt_SkipCb skipCb, int skipParameter) {
+ mSkipFunc = skipCb;
+ mSkipActorId = getPId(skipActor);
+ mSkipParameter = skipParameter;
}
-void dEvt_control_c::setSkipZev(void* param_0, char* evtName) {
- setSkipProc(param_0, dEv_defaultSkipZev, 1);
- strcpy(mSkipEventName, evtName);
+void dEvt_control_c::setSkipZev(void* skipActor, char* eventName) {
+ setSkipProc(skipActor, dEv_defaultSkipZev, 1);
+ strcpy(mSkipEventName, eventName);
}
void dEvt_control_c::onSkipFade() {
- mSkipFade = 1;
+ mIsSkipFade = TRUE;
}
void dEvt_control_c::offSkipFade() {
- if (mSkipFade != 0) {
- mSkipFade = 0;
+ if (mIsSkipFade) {
+ mIsSkipFade = FALSE;
}
- mSkipFade = 0;
+
+ mIsSkipFade = FALSE;
}
/* 800429D4-80042BBC 03D314 01E8+00 1/1 0/0 0/0 .text skipper__14dEvt_control_cFv */
bool dEvt_control_c::skipper() {
- bool startSkip = false;
+ bool doSkip = false;
bool canSkip = false;
offFlag2(8);
+
if (mEventStatus == 1) {
if (mSkipFunc != NULL) {
canSkip = true;
}
- if (mDoCPd_c::getTrigStart(PAD_1)) {
+ bool is_trig_skipbtn = mDoCPd_c::getTrigStart(PAD_1);
+ if (is_trig_skipbtn) {
if (mSkipTimer > 0) {
mSkipTimer = -1;
- if (canSkip && mSkipFade) {
+ if (canSkip && mIsSkipFade) {
mDoGph_gInf_c::fadeOut(0.1f);
}
} else if (mSkipTimer == 0) {
@@ -750,37 +932,33 @@ bool dEvt_control_c::skipper() {
dComIfGp_setSButtonStatusForce(0x4D, 1);
}
- int curTimer = mSkipTimer;
- mSkipTimer++;
- if (curTimer > 45) {
+ if (mSkipTimer++ > 45) {
mSkipTimer = 0;
}
} else if (mSkipTimer != 0) {
- if (canSkip && mSkipFade) {
- int curTimer = mSkipTimer;
- mSkipTimer--;
-
- if (curTimer < -20) {
- startSkip = true;
+ if (canSkip && mIsSkipFade) {
+ if (mSkipTimer-- < -20) {
+ doSkip = true;
mSkipTimer = 0;
}
} else {
if (canSkip) {
- startSkip = true;
+ doSkip = true;
}
mSkipTimer = 0;
}
}
- if (startSkip) {
+ if (doSkip) {
dMsgObject_onKillMessageFlag();
- fopAc_ac_c* ptr = convPId(field_0x104);
- if (ptr == NULL) {
- ptr = dComIfGp_getPlayer(0);
+ fopAc_ac_c* skipActor = convPId(mSkipActorId);
+ if (skipActor == NULL) {
+ OS_REPORT("\x1b[31m%06d: event: Skip ordered actor DEAD!! (%d) \n\x1b[m", g_Counter.mCounter0, mSkipActorId);
+ skipActor = dComIfGp_getPlayer(0);
}
- int skipRet = mSkipFunc(ptr, field_0x10c);
+ int skipRet = mSkipFunc(skipActor, mSkipParameter);
onFlag2(8);
if (skipRet != 0) {
@@ -795,15 +973,35 @@ bool dEvt_control_c::skipper() {
}
}
- return startSkip;
+ return doSkip;
}
/* 80042BBC-80042FA8 03D4FC 03EC+00 0/0 1/1 0/0 .text Step__14dEvt_control_cFv */
int dEvt_control_c::Step() {
dEvent_manager_c* evtMng = &dComIfGp_getEventManager();
+ #if DEBUG
+ static int prevEvId = -99;
+ static char* basename[] = {
+ "NULL",
+ "KEEP",
+ "STAGE",
+ "ROOM0",
+ "ROOM1",
+ "ROOM2",
+ "ROOM3",
+ "ROOM4",
+ "ROOM5",
+ "DEMO",
+ "DEBUG",
+ };
+
+ evtMng->debugBfProc();
+ #endif
+
field_0xe7 = 0;
field_0xe8 = mNum;
+
skipper();
if (chkEventFlag(8)) {
@@ -815,19 +1013,24 @@ int dEvt_control_c::Step() {
}
}
- dEvDtEvent_c* eventDt = evtMng->getEventData(mSpecifiedEvent);
+ dEvDtEvent_c* eventDt = evtMng->getEventData(mEventId);
if (eventDt != NULL) {
eventDt->forceFinish();
}
+
offEventFlag(8);
}
if (mEventStatus != 0) {
evtMng->Sequencer();
}
+
offEventFlag(0x300);
if (mEventStatus == 2) {
+ // "%06d: event: end (%d)"
+ OS_REPORT("\x1b[36m%06d: event: 終了 (%d)\n\x1b[m", g_Counter.mCounter0, prevEvId);
+
evtMng->cancelStaff("ALL");
evtMng->setCameraPlay(0);
mEventFlag = 0;
@@ -838,8 +1041,12 @@ int dEvt_control_c::Step() {
}
if (mEventStatus == 5 && !dComIfGp_isEnableNextStage()) {
+ #if DEBUG
+ prevEvId = mEventId;
+ #endif
+
if (chkFlag2(2) || mSkipTimer < 0) {
- if (mSkipFade) {
+ if (mIsSkipFade) {
mDoGph_gInf_c::fadeOut(-0.05f);
}
offFlag2(2);
@@ -847,16 +1054,28 @@ int dEvt_control_c::Step() {
}
endProc();
+
if (!chkFlag2(3)) {
- mSkipFade = false;
+ mIsSkipFade = false;
evtMng->setObjectArchive(NULL);
}
+
mEventStatus = 2;
+
+ // "%06d: event: order info (%d)"
+ OS_REPORT("\x1b[36m%06d: event: オーダー受付 (%d)\n\x1b[m", g_Counter.mCounter0, prevEvId);
} else if (mEventStatus == 5 && (chkFlag2(2) || mSkipTimer < 0)) {
clear_tmpflag_for_message();
}
if (change() != -1) {
+ #if DEBUG
+ if (event_debug_evnt()) {
+ // "%06d: event: event change"
+ OS_REPORT("\x1b[34m%06d: event: イベント変更\n\x1b[m", g_Counter.mCounter0);
+ }
+ #endif
+
evtMng->cancelStaff("ALL");
evtMng->setCameraPlay(0);
onEventFlag(0x200);
@@ -867,6 +1086,7 @@ int dEvt_control_c::Step() {
onFlag2(2);
}
}
+
mCompulsory = 0;
int roomNo = dComIfGp_roomControl_getStayNo();
@@ -875,10 +1095,11 @@ int dEvt_control_c::Step() {
mRoomNo = roomNo;
}
- if (mEventStatus == 0 && entry() != 0) {
+ if (mEventStatus == 0 && entry()) {
if (dMsgObject_getMsgObjectClass() != NULL) {
dMsgObject_setKillMessageFlag();
}
+
onEventFlag(0x100);
dComIfGp_getVibration().StopQuake(31);
@@ -887,24 +1108,54 @@ int dEvt_control_c::Step() {
if (!dCam_getBody()->Active() && player->checkFishingCastMode()) {
dCam_getBody()->QuickStart();
}
+
mEventStatus = 1;
clearSkipSystem();
+
+ #if PLATFORM_SHIELD || PLATFORM_WII
+ field_0x130 = 0;
+ #endif
+
+ #if DEBUG
+ const char* eventname;
+ if (mEventId == -1) {
+ eventname = "POTENTIAL?";
+ } else {
+ dEvDtEvent_c* data = evtMng->getEventData(mEventId);
+ if (data == NULL) {
+ eventname = "UNKOWN";
+ } else {
+ eventname = data->getName();
+ }
+ }
+
+ // "%06d: event: start (%d=%s[%d]) %s"
+ OS_REPORT("\x1b[36m%06d: event: 開始 (%d=%s[%d]) %s\n\x1b[m", g_Counter.mCounter0, mEventId,
+ mEventId == -1 ? "PROGRAM" : basename[mEventId >> 8], mEventId & 0xFF, eventname);
+ prevEvId = -99;
+ #endif
}
mNum = 0;
- mChangeOK = NULL;
+ mChangeActor = NULL;
if (chkEventFlag(0x200)) {
- Z2AudioMgr::getInterface()->setDemoName(NULL);
+ Z2GetAudioMgr()->setDemoName(NULL);
}
if (mEventStatus != 0) {
evtMng->Experts();
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ if (field_0x130) {
+ mDoGph_gInf_c::onWideZoom();
+ }
+ #endif
return 1;
} else {
if (!mRoomInfoSet) {
char lastStageName[8];
- strncpy(lastStageName, dComIfGp_getStartStageName(), 7);
+ strncpy(lastStageName, dComIfGp_getStartStageName(), sizeof(lastStageName) - 1);
lastStageName[7] = 0;
dComIfGp_setLastPlayStageName(lastStageName);
@@ -929,12 +1180,12 @@ int dEvt_control_c::moveApproval(void* param_0) {
}
switch (mMode) {
- case EVT_MODE_TALK:
+ case dEvt_mode_TALK_e:
if (getPt1() == actor || getPt2() == actor) {
return 2;
}
break;
- case EVT_MODE_DEMO:
+ case dEvt_mode_DEMO_e:
if (getPt1() == actor || getPt2() == actor) {
return 2;
}
@@ -943,7 +1194,7 @@ int dEvt_control_c::moveApproval(void* param_0) {
return 2;
}
break;
- case 3:
+ case dEvt_mode_COMPULSORY_e:
if (getPt1() == actor) {
return 2;
}
@@ -963,7 +1214,7 @@ int dEvt_control_c::moveApproval(void* param_0) {
return 0;
}
- if (mMode == EVT_MODE_TALK && fopAcM_CheckStatus(actor, 0x40)) {
+ if (mMode == dEvt_mode_TALK_e && fopAcM_CheckStatus(actor, 0x40)) {
return 1;
}
@@ -971,7 +1222,7 @@ int dEvt_control_c::moveApproval(void* param_0) {
return 1;
}
- if ((getMode() == 3 || getMode() == EVT_MODE_TALK) && fopAcM_CheckStatus(actor, 0x4000000)) {
+ if ((getMode() == 3 || getMode() == dEvt_mode_TALK_e) && fopAcM_CheckStatus(actor, 0x4000000)) {
return 0;
}
@@ -987,35 +1238,33 @@ int dEvt_control_c::moveApproval(void* param_0) {
}
/* 8004316C-800431E8 03DAAC 007C+00 0/0 28/28 0/0 .text compulsory__14dEvt_control_cFPvPCcUs */
-BOOL dEvt_control_c::compulsory(void* param_0, char const* eventName, u16 hind) {
- bool check = (mEventStatus == 0 || mEventStatus == 2);
-
- if (!check || mCompulsory) {
+BOOL dEvt_control_c::compulsory(void* param_0, const char* eventName, u16 hind) {
+ if (!isOrderOK() || mCompulsory) {
return 0;
}
mCompulsory = 1;
- return orderOld(EVT_TYPE_COMPULSORY, 2, 0, hind, param_0, NULL, eventName);
+ return orderOld(dEvt_type_COMPULSORY_e, 2, 0, hind, param_0, NULL, eventName);
}
void dEvt_control_c::remove() {
- mMode = EVT_MODE_NONE;
+ mMode = dEvt_mode_WAIT_e;
mEventStatus = 0;
mNum = 0;
mDebugStb = 0;
field_0xe6 = 0;
field_0xe7 = 0;
mCullRate = 0.0f;
- field_0xea = -1;
- mMapToolId = -1;
- field_0xec = -1;
+ field_0xea = 0xFF;
+ mMapToolId = 0xFF;
+ field_0xec = 0xFF;
mStageEventDt = NULL;
- mEventID = 255;
- field_0xed = 0;
+ mUnkEventId = 255;
+ mTalkXyType = 0;
mPreItemNo = fpcNm_ITEM_NONE;
mEventFlag = 0;
mFlag2 = 0;
- mChangeOK = NULL;
+ mChangeActor = NULL;
clearSkipSystem();
mCompulsory = 0;
mRoomInfoSet = false;
@@ -1032,9 +1281,9 @@ void dEvt_control_c::sceneChange(int exitId) {
dStage_changeScene4Event(exitId, mRoomNo, -1, mRoomInfoSet, 0.0f, 0, 0, -1);
}
-u32 dEvt_control_c::getPId(void* actor) {
+fpc_ProcID dEvt_control_c::getPId(void* actor) {
if (actor == NULL) {
- return 0xFFFFFFFF;
+ return fpcM_ERROR_PROCESS_ID_e;
} else {
return fopAcM_GetID(actor);
}
@@ -1048,39 +1297,54 @@ fopAc_ac_c* dEvt_control_c::convPId(fpc_ProcID id) {
/* 8004331C-800433F0 03DC5C 00D4+00 0/0 1/1 0/0 .text getStbDemoData__14dEvt_control_cFPc
*/
void* dEvt_control_c::getStbDemoData(char* resName) {
+ void* res = NULL;
char* demoArcName = dStage_roomControl_c::getDemoArcName();
+
if (*demoArcName != 0) {
- void* res = dComIfG_getObjectRes(demoArcName, resName);
+ res = dComIfG_getObjectRes(demoArcName, resName);
if (res != NULL) {
- event_debug_evnt();
+ if (event_debug_evnt()) {
+ OS_REPORT("%06d: event: stb data %s found in %s.arc\n", g_Counter.mCounter0, resName, demoArcName);
+ }
return res;
}
- event_debug_evnt();
+
+ if (event_debug_evnt()) {
+ OS_REPORT("%06d: event: stb data %s not found in %s.arc\n", g_Counter.mCounter0, resName, demoArcName);
+ }
} else {
- event_debug_evnt();
+ if (event_debug_evnt()) {
+ OS_REPORT("%06d: event: stb data %s unkown archive name\n", g_Counter.mCounter0, resName);
+ }
}
char* roomArcName = dComIfG_getRoomArcName(dComIfGp_roomControl_getStayNo());
- void* res2 = dComIfG_getStageRes(roomArcName, resName);
- if (res2 != NULL) {
- event_debug_evnt();
- return res2;
- } else {
- res2 = dComIfG_getStageRes(resName);
- if (res2 != NULL) {
- event_debug_evnt();
- return res2;
- } else {
- return NULL;
+ res = dComIfG_getStageRes(roomArcName, resName);
+ if (res != NULL) {
+ if (event_debug_evnt()) {
+ OS_REPORT("%06d: event: stb data %s found in %s.arc\n", g_Counter.mCounter0, resName, roomArcName);
+ }
+ return res;
+ }
+
+ res = dComIfG_getStageRes(resName);
+ if (res != NULL) {
+ if (event_debug_evnt()) {
+ OS_REPORT("%06d: event: stb %s data found in %s.arc\n", g_Counter.mCounter0, resName, "Stage");
}
+ return res;
+ } else {
+ OS_REPORT("\x1b[43;30m%06d: event: stb data %s NOT found\n\x1b[m", g_Counter.mCounter0, resName);
}
+
+ return NULL;
}
dEvt_info_c::dEvt_info_c() {
setCommand(dEvtCmd_NONE_e);
- setCondition(2);
+ setCondition(dEvtCnd_CANDEMO_e);
setEventId(-1);
- setMapToolId(-1);
+ setMapToolId(0xFF);
mArchiveName = NULL;
mIndex = 0;
}
@@ -1090,7 +1354,7 @@ void dEvt_info_c::setEventName(char* name) {
if (name == NULL) {
mEventId = -1;
} else {
- mEventId = dComIfGp_getEventManager().getEventIdx(name, -1, -1);
+ mEventId = (s16)dComIfGp_getEventManager().getEventIdx(name, 0xFF, -1);
}
}
@@ -1098,37 +1362,41 @@ void dEvt_info_c::setEventName(char* name) {
char* dEvt_info_c::getEventName() {
if (mEventId == -1) {
return NULL;
+ }
+
+ dEvDtEvent_c* data = dComIfGp_getEventManager().getEventData(mEventId);
+ if (data == NULL) {
+ return NULL;
} else {
- dEvDtEvent_c* data = dComIfGp_getEventManager().getEventData(mEventId);
- if (data == NULL) {
- return NULL;
- } else {
- return data->getName();
- }
+ return data->getName();
}
}
void dEvt_info_c::beforeProc() {
- setCondition(2);
+ mCondition = dEvtCnd_CANDEMO_e;
}
/* 800434D8-80043500 03DE18 0028+00 0/0 4/4 1/1 .text searchMapEventData__14dEvt_control_cFUc */
dStage_MapEvent_dt_c* dEvt_control_c::searchMapEventData(u8 mapToolID) {
- return searchMapEventData(mapToolID, dComIfGp_roomControl_getStayNo());
+ s32 roomNo = dComIfGp_roomControl_getStayNo();
+ return searchMapEventData(mapToolID, roomNo);
}
/* 80043500-8004360C 03DE40 010C+00 3/3 7/7 5/5 .text searchMapEventData__14dEvt_control_cFUcl */
dStage_MapEvent_dt_c* dEvt_control_c::searchMapEventData(u8 mapToolID, s32 roomNo) {
+ int i;
if (mapToolID == 0xFF) {
return NULL;
}
- dStage_roomDt_c* room_dt = dComIfGp_roomControl_getStatusRoomDt(roomNo);
+ s32 var_r28 = roomNo;
+ dStage_roomDt_c* room_dt = dComIfGp_roomControl_getStatusRoomDt(var_r28);
+ dStage_MapEventInfo_c* roomInfo;
if (room_dt != NULL) {
- dStage_MapEventInfo_c* roomInfo = room_dt->getMapEventInfo();
+ roomInfo = room_dt->getMapEventInfo();
if (roomInfo != NULL) {
- for (int i = 0; i < roomInfo->num; i++) {
+ for (i = 0; i < roomInfo->num; i++) {
if (mapToolID == roomInfo->m_entries[i].field_0x4) {
return &roomInfo->m_entries[i];
}
@@ -1136,11 +1404,11 @@ dStage_MapEvent_dt_c* dEvt_control_c::searchMapEventData(u8 mapToolID, s32 roomN
}
}
- dStage_MapEventInfo_c* stageInfo = dComIfGp_getStage()->getMapEventInfo();
- if (stageInfo != NULL) {
- for (int i = 0; i < stageInfo->num; i++) {
- if (mapToolID == stageInfo->m_entries[i].field_0x4) {
- return &stageInfo->m_entries[i];
+ roomInfo = dComIfGp_getStage()->getMapEventInfo();
+ if (roomInfo != NULL) {
+ for (i = 0; i < roomInfo->num; i++) {
+ if (mapToolID == roomInfo->m_entries[i].field_0x4) {
+ return &roomInfo->m_entries[i];
}
}
}
@@ -1149,31 +1417,35 @@ dStage_MapEvent_dt_c* dEvt_control_c::searchMapEventData(u8 mapToolID, s32 roomN
}
s16 dEvt_control_c::runningEventID(s16 eventID) {
- return eventID == mEventID ? mSpecifiedEvent : eventID;
+ if (eventID == mUnkEventId) {
+ return mEventId;
+ } else {
+ return eventID;
+ }
}
-void dEvt_control_c::setPt1(void* ptr) {
- mPt1 = getPId(ptr);
+void dEvt_control_c::setPt1(void* actor) {
+ mPt1 = getPId(actor);
}
-void dEvt_control_c::setPt2(void* ptr) {
- mPt2 = getPId(ptr);
+void dEvt_control_c::setPt2(void* actor) {
+ mPt2 = getPId(actor);
}
-void dEvt_control_c::setPtT(void* ptr) {
- mPtT = getPId(ptr);
+void dEvt_control_c::setPtT(void* actor) {
+ mPtT = getPId(actor);
}
-void dEvt_control_c::setPtI(void* ptr) {
- mPtI = getPId(ptr);
+void dEvt_control_c::setPtI(void* actor) {
+ mPtI = getPId(actor);
}
void dEvt_control_c::setPtI_Id(fpc_ProcID id) {
mPtI = id;
}
-void dEvt_control_c::setPtD(void* ptr) {
- mPtd = getPId(ptr);
+void dEvt_control_c::setPtD(void* actor) {
+ mPtd = getPId(actor);
}
void dEvt_control_c::setGtItm(u8 itemNo) {