diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-09-23 04:20:38 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-23 14:20:38 +0300 |
| commit | 125f2325a5d4979b8142d1610937d32f2f42fb82 (patch) | |
| tree | 35f255292bcdfb0d78b43442eb74f5b71d89d628 /src/d/d_event.cpp | |
| parent | 47abdf82fac4a2f58319e8d6ad22a1a035bf413e (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.cpp | 904 |
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) { |
