mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-24 15:00:55 -04:00
1322 lines
39 KiB
C++
1322 lines
39 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: d/event/d_event
|
|
//
|
|
|
|
#include "d/event/d_event.h"
|
|
#include "d/com/d_com_inf_game.h"
|
|
#include "d/d_camera.h"
|
|
#include "d/d_demo.h"
|
|
#include "d/d_procname.h"
|
|
#include "d/d_stage.h"
|
|
#include "d/msg/d_msg_object.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/types.h"
|
|
#include "f_op/f_op_actor_iter.h"
|
|
#include "f_op/f_op_actor_mng.h"
|
|
#include "rel/d/a/tag/d_a_tag_mhint/d_a_tag_mhint.h"
|
|
#include "rel/d/a/tag/d_a_tag_mstop/d_a_tag_mstop.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" static bool func_80041480();
|
|
extern "C" static void func_80041488();
|
|
extern "C" void __ct__14dEvt_control_cFv();
|
|
extern "C" void __ct__12dEvt_order_cFv();
|
|
extern "C" void orderOld__14dEvt_control_cFUsUsUsUsPvPvPCv();
|
|
extern "C" void order__14dEvt_control_cFUsUsUsUsPvPvsUc();
|
|
extern "C" void setParam__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void beforeFlagProc__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void afterFlagProc__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void commonCheck__14dEvt_control_cFP12dEvt_order_cUsUs();
|
|
extern "C" void talkCheck__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void talkXyCheck__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void catchCheck__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void talkEnd__14dEvt_control_cFv();
|
|
extern "C" void demoCheck__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void demoEnd__14dEvt_control_cFv();
|
|
extern "C" void potentialCheck__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void doorCheck__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void itemCheck__14dEvt_control_cFP12dEvt_order_c();
|
|
extern "C" void endProc__14dEvt_control_cFv();
|
|
extern "C" void change__14dEvt_control_cFv();
|
|
extern "C" void entry__14dEvt_control_cFv();
|
|
extern "C" void reset__14dEvt_control_cFv();
|
|
extern "C" void reset__14dEvt_control_cFPv();
|
|
extern "C" void clearSkipSystem__14dEvt_control_cFv();
|
|
extern "C" void dEv_defaultSkipProc__FPvi();
|
|
extern "C" void dEv_defaultSkipZev__FPvi();
|
|
extern "C" void dEv_defaultSkipStb__FPvi();
|
|
extern "C" void dEv_noFinishSkipProc__FPvi();
|
|
extern "C" void getSkipEventName__14dEvt_control_cFv();
|
|
extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii();
|
|
extern "C" void setSkipZev__14dEvt_control_cFPvPc();
|
|
extern "C" void onSkipFade__14dEvt_control_cFv();
|
|
extern "C" void offSkipFade__14dEvt_control_cFv();
|
|
extern "C" void skipper__14dEvt_control_cFv();
|
|
extern "C" void Step__14dEvt_control_cFv();
|
|
extern "C" void moveApproval__14dEvt_control_cFPv();
|
|
extern "C" void compulsory__14dEvt_control_cFPvPCcUs();
|
|
extern "C" void remove__14dEvt_control_cFv();
|
|
extern "C" void getStageEventDt__14dEvt_control_cFv();
|
|
extern "C" void sceneChange__14dEvt_control_cFi();
|
|
extern "C" void getPId__14dEvt_control_cFPv();
|
|
extern "C" void convPId__14dEvt_control_cFUi();
|
|
extern "C" void getStbDemoData__14dEvt_control_cFPc();
|
|
extern "C" void __ct__11dEvt_info_cFv();
|
|
extern "C" void setEventName__11dEvt_info_cFPc();
|
|
extern "C" void getEventName__11dEvt_info_cFv();
|
|
extern "C" void beforeProc__11dEvt_info_cFv();
|
|
extern "C" void searchMapEventData__14dEvt_control_cFUc();
|
|
extern "C" void searchMapEventData__14dEvt_control_cFUcl();
|
|
extern "C" void runningEventID__14dEvt_control_cFs();
|
|
extern "C" void setPt1__14dEvt_control_cFPv();
|
|
extern "C" void setPt2__14dEvt_control_cFPv();
|
|
extern "C" void setPtT__14dEvt_control_cFPv();
|
|
extern "C" void setPtI__14dEvt_control_cFPv();
|
|
extern "C" void setPtI_Id__14dEvt_control_cFUi();
|
|
extern "C" void setPtD__14dEvt_control_cFPv();
|
|
extern "C" void setGtItm__14dEvt_control_cFUc();
|
|
extern "C" extern char const* const d_event_d_event__stringBase0;
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void fadeOut__13mDoGph_gInf_cFf();
|
|
extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
|
|
extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs();
|
|
extern "C" void fopAcM_getItemEventPartner__FPC10fopAc_ac_c();
|
|
extern "C" void fpcSch_JudgeByID__FPvPv();
|
|
extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
|
|
extern "C" void dStage_changeScene4Event__FiScibfUlsi(int, s8, int, bool, float, u32, s16, int);
|
|
extern "C" void dComIfGp_getSelectItem__Fi();
|
|
extern "C" void dComIfG_getStageRes__FPCc();
|
|
extern "C" void dComIfG_getRoomArcName__Fi();
|
|
extern "C" void dComIfGs_onVisitedRoom__Fi();
|
|
extern "C" void __dt__12dEvt_order_cFv();
|
|
extern "C" void offEventBit__11dSv_event_cFUs();
|
|
extern "C" void onSwitch__10dSv_info_cFii();
|
|
extern "C" void isSwitch__10dSv_info_cCFii();
|
|
extern "C" void dead__12daItemBase_cFv();
|
|
extern "C" void end__7dDemo_cFv();
|
|
extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
|
|
extern "C" void forceFinish__12dEvDtEvent_cFv();
|
|
extern "C" void setStartDemo__18dEvent_exception_cFi();
|
|
extern "C" void setObjectArchive__16dEvent_manager_cFPc();
|
|
extern "C" void endProc__16dEvent_manager_cFsi();
|
|
extern "C" void Sequencer__16dEvent_manager_cFv();
|
|
extern "C" void Experts__16dEvent_manager_cFv();
|
|
extern "C" void getEventData__16dEvent_manager_cFs();
|
|
extern "C" void getEventIdx__16dEvent_manager_cFPCcUcl();
|
|
extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc();
|
|
extern "C" void order__16dEvent_manager_cFs();
|
|
extern "C" void issueStaff__16dEvent_manager_cFPCc();
|
|
extern "C" void cancelStaff__16dEvent_manager_cFPCc();
|
|
extern "C" void StopQuake__12dVibration_cFi();
|
|
extern "C" void QuickStart__9dCamera_cFv();
|
|
extern "C" void dCam_getBody__Fv();
|
|
extern "C" void onKillMessageFlag__12dMsgObject_cFv();
|
|
extern "C" void setKillMessageFlag__12dMsgObject_cFv();
|
|
extern "C" void endFlowGroup__12dMsgObject_cFv();
|
|
extern "C" void setDemoName__11Z2StatusMgrFPc();
|
|
extern "C" void __construct_array();
|
|
extern "C" void _savegpr_22();
|
|
extern "C" void _savegpr_25();
|
|
extern "C" void _savegpr_26();
|
|
extern "C" void _savegpr_27();
|
|
extern "C" void _savegpr_28();
|
|
extern "C" void _savegpr_29();
|
|
extern "C" void _restgpr_22();
|
|
extern "C" void _restgpr_25();
|
|
extern "C" void _restgpr_26();
|
|
extern "C" void _restgpr_27();
|
|
extern "C" void _restgpr_28();
|
|
extern "C" void _restgpr_29();
|
|
extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */];
|
|
extern "C" extern void* __vt__11dEvt_info_c[3 + 1 /* padding */];
|
|
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
|
|
extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */];
|
|
extern "C" u8 m_mode__7dDemo_c[4];
|
|
extern "C" u8 m_midnaActor__9daPy_py_c[4];
|
|
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
/* 80041480-80041488 03BDC0 0008+00 1/1 0/0 0/0 .text event_debug_evnt__21@unnamed@d_event_cpp@Fv
|
|
*/
|
|
static bool func_80041480() {
|
|
return false;
|
|
}
|
|
|
|
/* 80041488-80041580 03BDC8 00F8+00 1/1 0/0 0/0 .text
|
|
* clear_tmpflag_for_message__21@unnamed@d_event_cpp@Fv */
|
|
static void func_80041488() {
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[11]);
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[12]);
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[13]);
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[14]);
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[15]);
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[51]);
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[52]);
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[53]);
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[54]);
|
|
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[55]);
|
|
}
|
|
|
|
dEvt_control_c::dEvt_control_c() {
|
|
remove();
|
|
}
|
|
|
|
dEvt_order_c::dEvt_order_c() {
|
|
/* empty function */
|
|
}
|
|
|
|
/* 800415D8-80041668 03BF18 0090+00 1/1 0/0 0/0 .text orderOld__14dEvt_control_cFUsUsUsUsPvPvPCv
|
|
*/
|
|
s32 dEvt_control_c::orderOld(u16 param_0, u16 param_1, u16 param_2, u16 param_3, void* param_4,
|
|
void* param_5, void const* param_6) {
|
|
int eventIdx = i_dComIfGp_getEventManager().getEventIdx((char*)param_6, -1, -1);
|
|
return order(param_0, param_1, param_2, param_3, param_4, param_5, eventIdx, -1);
|
|
}
|
|
|
|
/* 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 param_3, void* param_4,
|
|
void* param_5, s16 eventID, u8 infoIdx) {
|
|
if (!(flag & 0x400) && infoIdx != 0xFF) {
|
|
int roomNo = dComIfGp_roomControl_getStayNo();
|
|
dStage_MapEvent_dt_c* data = searchMapEventData(infoIdx, roomNo);
|
|
|
|
if (data != NULL && data->field_0x1B != 0xFF) {
|
|
if (dComIfGs_isSwitch(data->field_0x1B, roomNo)) {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (mNum >= 8) {
|
|
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->field_0x04 = param_3;
|
|
order->mEventInfoIdx = infoIdx;
|
|
|
|
if (order->mPriority == 0) {
|
|
order->mPriority = 1;
|
|
}
|
|
|
|
if (mNum == 0) {
|
|
field_0xe3 = 0;
|
|
order->mNextOrderIdx = -1;
|
|
} else {
|
|
dEvt_order_c* order2;
|
|
int tmp_e3 = field_0xe3;
|
|
order2 = &mOrder[tmp_e3];
|
|
|
|
if (order->mPriority < order2->mPriority) {
|
|
field_0xe3 = mNum;
|
|
order->mNextOrderIdx = tmp_e3;
|
|
} else {
|
|
while (order2->mNextOrderIdx >= 0) {
|
|
if (order->mPriority < mOrder[order2->mNextOrderIdx].mPriority) {
|
|
break;
|
|
}
|
|
int nextOrderIdx = order2->mNextOrderIdx;
|
|
order2 = &mOrder[nextOrderIdx];
|
|
}
|
|
|
|
order->mNextOrderIdx = order2->mNextOrderIdx;
|
|
order2->mNextOrderIdx = mNum;
|
|
}
|
|
}
|
|
mNum++;
|
|
|
|
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);
|
|
|
|
mSpecifiedEvent = p_order->mEventId;
|
|
mHindFlag = p_order->field_0x04;
|
|
|
|
if (dComIfGp_getPlayer(0) != p_order->mActor1) {
|
|
setPtT(p_order->mActor1);
|
|
setPtI(p_order->mActor1);
|
|
} else {
|
|
setPtT(p_order->mActor2);
|
|
setPtI(p_order->mActor2);
|
|
}
|
|
|
|
mMapToolId = p_order->mEventInfoIdx;
|
|
field_0xea = 0xFF;
|
|
field_0xec = 0xFF;
|
|
|
|
int roomNo = dComIfGp_roomControl_getStayNo();
|
|
dStage_MapEvent_dt_c* data = searchMapEventData(mMapToolId, roomNo);
|
|
mStageEventDt = data;
|
|
|
|
if (data != NULL) {
|
|
field_0xea = data->field_0x16;
|
|
|
|
if (data->field_0x1B != 0xFF) {
|
|
dComIfGs_onSwitch(data->field_0x1B, roomNo);
|
|
}
|
|
|
|
if (p_order->mFlag & 0x300) {
|
|
field_0xec = data->field_0x5;
|
|
}
|
|
}
|
|
|
|
if (!(p_order->mFlag & 0x200)) {
|
|
field_0xe0 = p_order->mEventId;
|
|
}
|
|
|
|
mCullRate = 1.0f;
|
|
mEventFlag = 0;
|
|
}
|
|
|
|
/* 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;
|
|
|
|
if (p_order->mFlag & 4 && actor->mEvtInfo.chkCondition(1) != true) {
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_80379D80 = "???";
|
|
#pragma pop
|
|
|
|
/* 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) {
|
|
i_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 param_1, u16 param_2) {
|
|
fopAc_ac_c* actor1 = p_order->mActor1;
|
|
fopAc_ac_c* actor2 = p_order->mActor2;
|
|
|
|
if ((actor1 != NULL && actor1->mEvtInfo.chkCondition(param_1)) &&
|
|
(actor2 != NULL && actor2->mEvtInfo.chkCondition(param_1))) {
|
|
actor1->mEvtInfo.setCommand(param_2);
|
|
actor2->mEvtInfo.setCommand(param_2);
|
|
setParam(p_order);
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_80379D8B = "DEFAULT_TALK";
|
|
SECTION_DEAD static char const* const stringBase_80379D98 = "MHINT_TALK";
|
|
#pragma pop
|
|
|
|
/* 80041A20-80041B58 03C360 0138+00 1/1 0/0 0/0 .text talkCheck__14dEvt_control_cFP12dEvt_order_c
|
|
*/
|
|
#ifdef NONMATCHING
|
|
// regswap, this pointer in r31 is weird
|
|
int dEvt_control_c::talkCheck(dEvt_order_c* p_order) {
|
|
char* event = "DEFAULT_TALK";
|
|
fopAc_ac_c* actor = p_order->mActor2;
|
|
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) {
|
|
daMidna_c* midna = daPy_py_c::getMidnaActor();
|
|
if (!daPy_py_c::i_checkNowWolf() || midna->checkNoDraw()) {
|
|
event = "MHINT_TALK";
|
|
}
|
|
}
|
|
if (commonCheck(p_order, 1, 1)) {
|
|
mMode = 1;
|
|
if (mSpecifiedEvent == -1) {
|
|
if (actor != NULL && actor->mEvtInfo.getEventName() != NULL) {
|
|
mSpecifiedEvent = actor->mEvtInfo.getEventId();
|
|
} else {
|
|
mSpecifiedEvent = i_dComIfGp_getEventManager().getEventIdx(event, 0xFF, UINT32_MAX);
|
|
}
|
|
}
|
|
i_dComIfGp_getEventManager().order(mSpecifiedEvent);
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm int dEvt_control_c::talkCheck(dEvt_order_c* param_0) {
|
|
nofralloc
|
|
#include "asm/d/event/d_event/talkCheck__14dEvt_control_cFP12dEvt_order_c.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_80379DA3 = "DEFAULT_TALK_XY";
|
|
#pragma pop
|
|
|
|
/* 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 iVar5;
|
|
switch (p_order->mEventType) {
|
|
case 6:
|
|
iVar5 = 0;
|
|
field_0xed = 1;
|
|
break;
|
|
case 7:
|
|
field_0xed = 2;
|
|
iVar5 = 1;
|
|
break;
|
|
default:
|
|
field_0xed = 0;
|
|
return 0;
|
|
}
|
|
if (dComIfGp_getSelectItem(iVar5) == 0xFF) {
|
|
return 0;
|
|
}
|
|
if (pActor2 == NULL || !pActor2->mEvtInfo.chkCondition(0x20)) {
|
|
return 0;
|
|
}
|
|
if (commonCheck(p_order, 1, 1)) {
|
|
mMode = 1;
|
|
mPreItemNo = dComIfGp_getSelectItem(iVar5);
|
|
mSpecifiedEvent = i_dComIfGp_getEventManager().getEventIdx(event, 0xFF, UINT32_MAX);
|
|
i_dComIfGp_getEventManager().order(mSpecifiedEvent);
|
|
return 1;
|
|
} else {
|
|
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;
|
|
|
|
if (actor1 == NULL || (actor2 != NULL && !actor2->mEvtInfo.chkCondition(0x40))) {
|
|
return 0;
|
|
}
|
|
actor1->mEvtInfo.setCommand(6);
|
|
if (actor2 != NULL) {
|
|
actor2->mEvtInfo.setCommand(6);
|
|
}
|
|
setParam(p_order);
|
|
mPreItemNo = dComIfGp_att_getCatchChgItem();
|
|
mMode = 2;
|
|
if (mSpecifiedEvent != -1) {
|
|
i_dComIfGp_getEventManager().order(mSpecifiedEvent);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 80041D34-80041DDC 03C674 00A8+00 1/1 0/0 0/0 .text talkEnd__14dEvt_control_cFv */
|
|
int dEvt_control_c::talkEnd() {
|
|
fopAc_ac_c* actor = (fopAc_ac_c*)getPt1();
|
|
if (actor != NULL) {
|
|
actor->mEvtInfo.setCommand(0);
|
|
}
|
|
actor = (fopAc_ac_c*)getPt2();
|
|
if (actor != NULL) {
|
|
actor->mEvtInfo.setCommand(0);
|
|
}
|
|
if (mSpecifiedEvent != -1) {
|
|
i_dComIfGp_getEventManager().endProc(mSpecifiedEvent, 1);
|
|
mSpecifiedEvent = -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;
|
|
if (actor2 == NULL) {
|
|
return 0;
|
|
}
|
|
if (!(p_order->mFlag & 0x10)) {
|
|
if (actor1 != NULL && !actor1->mEvtInfo.chkCondition(2)) {
|
|
return 0;
|
|
}
|
|
if (actor2 != NULL && !actor2->mEvtInfo.chkCondition(2)) {
|
|
return 0;
|
|
}
|
|
}
|
|
if (!beforeFlagProc(p_order)) {
|
|
return 0;
|
|
}
|
|
if (actor1 != NULL) {
|
|
i_dComIfGp_getEventManager().setObjectArchive(actor1->mEvtInfo.getArchiveName());
|
|
}
|
|
if (!i_dComIfGp_getEventManager().order(eventId)) {
|
|
return 0;
|
|
}
|
|
if (actor1 != NULL) {
|
|
actor1->mEvtInfo.setCommand(2);
|
|
}
|
|
if (actor2 != NULL) {
|
|
actor2->mEvtInfo.setCommand(2);
|
|
}
|
|
mMode = 2;
|
|
setParam(p_order);
|
|
afterFlagProc(p_order);
|
|
return 1;
|
|
}
|
|
|
|
/* 80041F18-80041FA0 03C858 0088+00 1/1 0/0 0/0 .text demoEnd__14dEvt_control_cFv */
|
|
int dEvt_control_c::demoEnd() {
|
|
fopAc_ac_c* actor = (fopAc_ac_c*)getPt1();
|
|
if (actor != NULL) {
|
|
actor->mEvtInfo.setCommand(0);
|
|
}
|
|
actor = (fopAc_ac_c*)getPt2();
|
|
if (actor != NULL) {
|
|
actor->mEvtInfo.setCommand(0);
|
|
}
|
|
if (mSpecifiedEvent != -1) {
|
|
i_dComIfGp_getEventManager().endProc(mSpecifiedEvent, 1);
|
|
mSpecifiedEvent = -1;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
int dEvt_control_c::potentialCheck(dEvt_order_c* p_order) {
|
|
fopAc_ac_c* actor = p_order->mActor1;
|
|
|
|
if (!beforeFlagProc(p_order)) {
|
|
return 0;
|
|
} else {
|
|
actor->mEvtInfo.setCommand(2);
|
|
mMode = 2;
|
|
setParam(p_order);
|
|
afterFlagProc(p_order);
|
|
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 = 2;
|
|
fopAc_ac_c* actor2 = (fopAc_ac_c*)getPt2();
|
|
if (actor2 != NULL) {
|
|
i_dComIfGp_getEventManager().setObjectArchive(actor2->mEvtInfo.getArchiveName());
|
|
}
|
|
if (mSpecifiedEvent == -1 && actor2 != NULL && actor2->mEvtInfo.getEventId() != -1) {
|
|
mSpecifiedEvent = actor2->mEvtInfo.getEventId();
|
|
}
|
|
if (mSpecifiedEvent != -1 &&
|
|
i_dComIfGp_getEventManager().getEventData(mSpecifiedEvent) != NULL) {
|
|
i_dComIfGp_getEventManager().order(mSpecifiedEvent);
|
|
} else {
|
|
mSpecifiedEvent = -1;
|
|
reset();
|
|
}
|
|
if (p_order->mEventType == 0xB) {
|
|
onEventFlag(4);
|
|
} else {
|
|
onEventFlag(0x40);
|
|
}
|
|
return 1;
|
|
} else {
|
|
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";
|
|
|
|
if (commonCheck(p_order, 8, 4)) {
|
|
mMode = 2;
|
|
mSpecifiedEvent = i_dComIfGp_getEventManager().getEventIdx(event, -1, -1);
|
|
i_dComIfGp_getEventManager().order(mSpecifiedEvent);
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/* 800421C0-80042254 03CB00 0094+00 1/1 0/0 0/0 .text endProc__14dEvt_control_cFv */
|
|
// missing extra branch
|
|
int dEvt_control_c::endProc() {
|
|
switch (mMode) {
|
|
case 1:
|
|
talkEnd();
|
|
break;
|
|
case 2:
|
|
demoEnd();
|
|
break;
|
|
case 3:
|
|
break;
|
|
}
|
|
|
|
mMode = 0;
|
|
field_0xea = 255;
|
|
mMapToolId = 255;
|
|
mStageEventDt = NULL;
|
|
field_0xec = 255;
|
|
field_0xed = 0;
|
|
field_0xe0 = 255;
|
|
mPreItemNo = 255;
|
|
i_dComIfGp_getEventManager().setStartDemo(-2);
|
|
return 1;
|
|
}
|
|
|
|
/* 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 var_r7;
|
|
if (mNum != 0) {
|
|
var_r7 = field_0xe3;
|
|
|
|
do {
|
|
order = &mOrder[var_r7];
|
|
|
|
if (order->mFlag & 0xE00 && order->mActor1 == mChangeOK) {
|
|
field_0xe3 = var_r7;
|
|
mNum = 1;
|
|
order->mNextOrderIdx = -1;
|
|
return var_r7;
|
|
}
|
|
|
|
var_r7 = order->mNextOrderIdx;
|
|
} while (var_r7 >= 0);
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
/* 800422C0-80042468 03CC00 01A8+00 2/1 0/0 0/0 .text entry__14dEvt_control_cFv */
|
|
int dEvt_control_c::entry() {
|
|
if (mNum != 0) {
|
|
s8 orderIdx = field_0xe3;
|
|
mNum = 0;
|
|
|
|
do {
|
|
dEvt_order_c* order = &mOrder[orderIdx];
|
|
orderIdx = order->mNextOrderIdx;
|
|
|
|
switch (order->mEventType) {
|
|
case 0:
|
|
if (i_dComIfGs_getLife() != 0 && talkCheck(order) != 0) {
|
|
return 1;
|
|
}
|
|
break;
|
|
case 2:
|
|
if (i_dComIfGs_getLife() != 0 && demoCheck(order) != 0) {
|
|
return 1;
|
|
}
|
|
break;
|
|
case 1:
|
|
case 11:
|
|
if (i_dComIfGs_getLife() != 0 && doorCheck(order) != 0) {
|
|
return 1;
|
|
}
|
|
break;
|
|
case 3:
|
|
mMode = 3;
|
|
setParam(order);
|
|
return 1;
|
|
case 4:
|
|
if (i_dComIfGs_getLife() != 0 && potentialCheck(order) != 0) {
|
|
return 1;
|
|
}
|
|
break;
|
|
case 5:
|
|
if (i_dComIfGs_getLife() != 0 && itemCheck(order) != 0) {
|
|
return 1;
|
|
}
|
|
break;
|
|
case 6:
|
|
case 7:
|
|
if (i_dComIfGs_getLife() != 0 && talkXyCheck(order) != 0) {
|
|
return 1;
|
|
}
|
|
break;
|
|
case 10:
|
|
if (i_dComIfGs_getLife() != 0 && catchCheck(order) != 0) {
|
|
return 1;
|
|
}
|
|
break;
|
|
case 13:
|
|
break;
|
|
}
|
|
} while (orderIdx >= 0);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 80042468-80042518 03CDA8 00B0+00 1/1 8/8 388/388 .text reset__14dEvt_control_cFv */
|
|
void dEvt_control_c::reset() {
|
|
if (field_0xec != 0xFF) {
|
|
void* pt1 = getPt1();
|
|
s16 eventIdx = i_dComIfGp_getEventManager().getEventIdx(NULL, field_0xec, -1);
|
|
void* pt2 = getPt2();
|
|
|
|
order(2, 3, 0x201, mHindFlag, pt1, pt2, eventIdx, field_0xec);
|
|
mChangeOK = pt1;
|
|
}
|
|
|
|
onEventFlag(8);
|
|
}
|
|
|
|
/* 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 = i_dComIfGp_getEventManager().getEventIdx((fopAc_ac_c*)param_0, field_0xec);
|
|
void* pt2 = getPt2();
|
|
order(2, 3, 0x201, mHindFlag, param_0, pt2, eventIdx, field_0xec);
|
|
}
|
|
|
|
mChangeOK = param_0;
|
|
onEventFlag(8);
|
|
}
|
|
|
|
void dEvt_control_c::clearSkipSystem() {
|
|
mSkipFunc = NULL;
|
|
field_0x104 = -1;
|
|
field_0x10c = 0;
|
|
mSkipTimer = 0;
|
|
|
|
if (!chkFlag2(3)) {
|
|
mSkipFade = 0;
|
|
}
|
|
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) {
|
|
i_dComIfGp_getEvent().reset(param_0);
|
|
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 = &i_dComIfGp_getEvent();
|
|
|
|
s16 eventID = -1;
|
|
dStage_MapEvent_dt_c* data = evControl->getStageEventDt();
|
|
bool var_r27 = true;
|
|
|
|
if (data != NULL) {
|
|
if (data->field_0x9 != 0xFF) {
|
|
var_r27 = false;
|
|
} else if (data->field_0x7 != 0xFF) {
|
|
var_r27 = false;
|
|
}
|
|
}
|
|
|
|
switch (param_1) {
|
|
case 0:
|
|
char eventName[32];
|
|
strcpy(eventName, data->mName);
|
|
strcat(eventName, "$0");
|
|
eventID = i_dComIfGp_getEventManager().getEventIdx(eventName, 0xFF, -1);
|
|
break;
|
|
case 1:
|
|
char* skipName = i_dComIfGp_getEvent().getSkipEventName();
|
|
eventID = i_dComIfGp_getEventManager().getEventIdx(skipName, 0xFF, -1);
|
|
break;
|
|
}
|
|
|
|
if (eventID != -1) {
|
|
evControl->reset(param_0);
|
|
fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3,
|
|
0x400);
|
|
return 2;
|
|
} else if (var_r27) {
|
|
evControl->reset(param_0);
|
|
return 1;
|
|
} else {
|
|
evControl->reset(param_0);
|
|
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 = &i_dComIfGp_getEvent();
|
|
|
|
s16 eventID = -1;
|
|
dStage_MapEvent_dt_c* data = evControl->getStageEventDt();
|
|
bool var_r27 = true;
|
|
|
|
if (data != NULL) {
|
|
if (data->field_0x9 != 0xFF) {
|
|
var_r27 = false;
|
|
} else if (data->field_0x7 != 0xFF) {
|
|
var_r27 = false;
|
|
}
|
|
}
|
|
|
|
switch (param_1) {
|
|
case 0:
|
|
char eventName[32];
|
|
strcpy(eventName, data->mName);
|
|
strcat(eventName, "$0");
|
|
eventID = i_dComIfGp_getEventManager().getEventIdx(eventName, 0xFF, -1);
|
|
break;
|
|
case 1:
|
|
char* skipName = i_dComIfGp_getEvent().getSkipEventName();
|
|
eventID = i_dComIfGp_getEventManager().getEventIdx(skipName, 0xFF, -1);
|
|
break;
|
|
}
|
|
|
|
if (eventID != -1) {
|
|
evControl->reset(param_0);
|
|
dDemo_c::end();
|
|
fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3,
|
|
0x400);
|
|
return 2;
|
|
} else if (var_r27) {
|
|
evControl->reset(param_0);
|
|
dDemo_c::end();
|
|
return 1;
|
|
} else {
|
|
evControl->reset(param_0);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
/* 800428DC-8004290C 03D21C 0030+00 0/0 1/1 33/33 .text dEv_noFinishSkipProc__FPvi */
|
|
int dEv_noFinishSkipProc(void*, int) {
|
|
i_dComIfGp_getEvent().offSkipFade();
|
|
return 0;
|
|
}
|
|
|
|
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::setSkipZev(void* param_0, char* evtName) {
|
|
setSkipProc(param_0, dEv_defaultSkipZev, 1);
|
|
strcpy(mSkipEventName, evtName);
|
|
}
|
|
|
|
void dEvt_control_c::onSkipFade() {
|
|
mSkipFade = 1;
|
|
}
|
|
|
|
void dEvt_control_c::offSkipFade() {
|
|
if (mSkipFade != 0) {
|
|
mSkipFade = 0;
|
|
}
|
|
mSkipFade = 0;
|
|
}
|
|
|
|
/* 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 canSkip = false;
|
|
|
|
offFlag2(8);
|
|
if (mEventStatus == 1) {
|
|
if (mSkipFunc != NULL) {
|
|
canSkip = true;
|
|
}
|
|
|
|
if (mDoCPd_c::getTrigStart(PAD_1)) {
|
|
if (mSkipTimer > 0) {
|
|
mSkipTimer = -1;
|
|
|
|
if (canSkip && mSkipFade) {
|
|
mDoGph_gInf_c::fadeOut(0.1f);
|
|
}
|
|
} else if (mSkipTimer == 0) {
|
|
mSkipTimer = 1;
|
|
}
|
|
}
|
|
|
|
if (mSkipTimer > 0) {
|
|
if (canSkip) {
|
|
dComIfGp_setSButtonStatusForce(0x43, 1);
|
|
} else {
|
|
dComIfGp_setSButtonStatusForce(0x4D, 1);
|
|
}
|
|
|
|
int curTimer = mSkipTimer;
|
|
mSkipTimer++;
|
|
if (curTimer > 45) {
|
|
mSkipTimer = 0;
|
|
}
|
|
} else if (mSkipTimer != 0) {
|
|
if (canSkip && mSkipFade) {
|
|
int curTimer = mSkipTimer;
|
|
mSkipTimer--;
|
|
|
|
if (curTimer < -20) {
|
|
startSkip = true;
|
|
mSkipTimer = 0;
|
|
}
|
|
} else {
|
|
if (canSkip) {
|
|
startSkip = true;
|
|
}
|
|
mSkipTimer = 0;
|
|
}
|
|
}
|
|
|
|
if (startSkip) {
|
|
dMsgObject_onKillMessageFlag();
|
|
|
|
void* ptr = convPId(field_0x104);
|
|
if (ptr == NULL) {
|
|
ptr = dComIfGp_getPlayer(0);
|
|
}
|
|
|
|
int skipRet = mSkipFunc(ptr, field_0x10c);
|
|
onFlag2(8);
|
|
|
|
if (skipRet != 0) {
|
|
mSkipFunc = NULL;
|
|
|
|
if (skipRet == 2) {
|
|
onFlag2(1);
|
|
} else {
|
|
onFlag2(2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return startSkip;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80451EC8-80451ECC 0004C8 0004+00 1/1 0/0 0/0 .sdata2 @5013 */
|
|
SECTION_SDATA2 static f32 lit_5013 = -1.0f / 20.0f;
|
|
|
|
/* 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 = &i_dComIfGp_getEventManager();
|
|
|
|
field_0xe7 = 0;
|
|
field_0xe8 = mNum;
|
|
skipper();
|
|
|
|
if (chkEventFlag(8)) {
|
|
if (mEventStatus == 1) {
|
|
mEventStatus = 5;
|
|
|
|
if (dMsgObject_getMsgObjectClass() != NULL) {
|
|
dMsgObject_endFlowGroup();
|
|
}
|
|
}
|
|
|
|
dEvDtEvent_c* eventDt = evtMng->getEventData(mSpecifiedEvent);
|
|
if (eventDt != NULL) {
|
|
eventDt->forceFinish();
|
|
}
|
|
offEventFlag(8);
|
|
}
|
|
|
|
if (mEventStatus != 0) {
|
|
evtMng->Sequencer();
|
|
}
|
|
offEventFlag(0x300);
|
|
|
|
if (mEventStatus == 2) {
|
|
evtMng->cancelStaff("ALL");
|
|
evtMng->setCameraPlay(0);
|
|
mEventFlag = 0;
|
|
onEventFlag(0x200);
|
|
mEventStatus = 0;
|
|
} else if (mEventStatus == 0) {
|
|
mEventFlag = 0;
|
|
}
|
|
|
|
if (mEventStatus == 5 && !dComIfGp_isEnableNextStage()) {
|
|
if (chkFlag2(2) || mSkipTimer < 0) {
|
|
if (mSkipFade) {
|
|
mDoGph_gInf_c::fadeOut(-0.05f);
|
|
}
|
|
offFlag2(2);
|
|
func_80041488();
|
|
}
|
|
|
|
endProc();
|
|
if (!chkFlag2(3)) {
|
|
mSkipFade = false;
|
|
evtMng->setObjectArchive(NULL);
|
|
}
|
|
mEventStatus = 2;
|
|
} else if (mEventStatus == 5 && (chkFlag2(2) || mSkipTimer < 0)) {
|
|
func_80041488();
|
|
}
|
|
|
|
if (change() != -1) {
|
|
evtMng->cancelStaff("ALL");
|
|
evtMng->setCameraPlay(0);
|
|
onEventFlag(0x200);
|
|
mEventStatus = 0;
|
|
|
|
if (chkFlag2(1)) {
|
|
offFlag2(1);
|
|
onFlag2(2);
|
|
}
|
|
}
|
|
mCompulsory = 0;
|
|
|
|
int roomNo = dComIfGp_roomControl_getStayNo();
|
|
if (mRoomNo != roomNo) {
|
|
field_0x129 = 0;
|
|
mRoomNo = roomNo;
|
|
}
|
|
|
|
if (mEventStatus == 0 && entry() != 0) {
|
|
if (dMsgObject_getMsgObjectClass() != NULL) {
|
|
dMsgObject_setKillMessageFlag();
|
|
}
|
|
onEventFlag(0x100);
|
|
|
|
dComIfGp_getVibration().StopQuake(31);
|
|
daAlink_c* player = daAlink_getAlinkActorClass();
|
|
|
|
if (!dCam_getBody()->Active() && player->checkFishingCastMode()) {
|
|
dCam_getBody()->QuickStart();
|
|
}
|
|
mEventStatus = 1;
|
|
clearSkipSystem();
|
|
}
|
|
|
|
mNum = 0;
|
|
mChangeOK = NULL;
|
|
|
|
if (chkEventFlag(0x200)) {
|
|
Z2AudioMgr::getInterface()->mStatusMgr.setDemoName(NULL);
|
|
}
|
|
|
|
if (mEventStatus != 0) {
|
|
evtMng->Experts();
|
|
return 1;
|
|
} else {
|
|
if (!field_0x129) {
|
|
char lastStageName[7];
|
|
strncpy(lastStageName, dComIfGp_getStartStageName(), 7);
|
|
lastStageName[7] = 0;
|
|
|
|
dComIfGp_setLastPlayStageName(lastStageName);
|
|
dComIfGs_onVisitedRoom(mRoomNo);
|
|
}
|
|
field_0x129 = 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 80042FA8-8004316C 03D8E8 01C4+00 0/0 2/2 0/0 .text moveApproval__14dEvt_control_cFPv
|
|
*/
|
|
int dEvt_control_c::moveApproval(void* param_0) {
|
|
fopAc_ac_c* actor = (fopAc_ac_c*)param_0;
|
|
if (fopAcM_checkStatus(actor, 0x20000)) {
|
|
return 2;
|
|
}
|
|
if (!runCheck()) {
|
|
return 1;
|
|
}
|
|
switch (mMode) {
|
|
case 1:
|
|
if (getPt1() == actor || getPt2() == actor) {
|
|
return 2;
|
|
}
|
|
break;
|
|
case 2:
|
|
if (getPt1() == actor || getPt2() == actor) {
|
|
return 2;
|
|
}
|
|
if (actor->mDemoActorId != 0) {
|
|
return 2;
|
|
}
|
|
break;
|
|
case 3:
|
|
if (getPt1() == actor) {
|
|
return 2;
|
|
}
|
|
break;
|
|
}
|
|
if (fopAcM_checkStatus(actor, 0x8000)) {
|
|
return 2;
|
|
}
|
|
if (fopAcM_checkStatus(actor, 0x800)) {
|
|
return 1;
|
|
}
|
|
if (i_dComIfGp_checkPlayerStatus0(0, 0x20000000) ||
|
|
i_dComIfGp_checkPlayerStatus1(0, 0x4002000)) {
|
|
return 0;
|
|
}
|
|
if (mMode == 1 && fopAcM_checkStatus(actor, 0x40)) {
|
|
return 1;
|
|
}
|
|
if (dDemo_c::getMode() == 1) {
|
|
return 1;
|
|
}
|
|
if ((getMode() == 3 || getMode() == 1) && fopAcM_checkStatus(actor, 0x4000000)) {
|
|
return 0;
|
|
}
|
|
if (fopAcM_checkStatus(actor, 0x4000)) {
|
|
return 1;
|
|
}
|
|
if (fopAcM_checkStatus(actor, 0x2000)) {
|
|
return 1;
|
|
}
|
|
return 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* param_1, u16 param_2) {
|
|
bool check = (mEventStatus == 0 || mEventStatus == 2);
|
|
|
|
if (!check || mCompulsory) {
|
|
return 0;
|
|
}
|
|
|
|
mCompulsory = 1;
|
|
return orderOld(3, 2, 0, param_2, param_0, NULL, param_1);
|
|
}
|
|
|
|
void dEvt_control_c::remove() {
|
|
mMode = 0;
|
|
mEventStatus = 0;
|
|
mNum = 0;
|
|
mDebugStb = 0;
|
|
field_0xe6 = 0;
|
|
field_0xe7 = 0;
|
|
mCullRate = 0.0f;
|
|
field_0xea = -1;
|
|
mMapToolId = -1;
|
|
field_0xec = -1;
|
|
mStageEventDt = NULL;
|
|
field_0xe0 = 255;
|
|
field_0xed = 0;
|
|
mPreItemNo = -1;
|
|
mEventFlag = 0;
|
|
mFlag2 = 0;
|
|
mChangeOK = NULL;
|
|
clearSkipSystem();
|
|
mCompulsory = 0;
|
|
field_0x129 = 0;
|
|
mRoomNo = -1;
|
|
}
|
|
|
|
/* 80043278-80043280 03DBB8 0008+00 2/2 2/2 0/0 .text getStageEventDt__14dEvt_control_cFv
|
|
*/
|
|
dStage_MapEvent_dt_c* dEvt_control_c::getStageEventDt() {
|
|
return mStageEventDt;
|
|
}
|
|
|
|
void dEvt_control_c::sceneChange(int exitId) {
|
|
dStage_changeScene4Event(exitId, mRoomNo, -1, field_0x129, 0.0f, 0, 0, -1);
|
|
}
|
|
|
|
u32 dEvt_control_c::getPId(void* actor) {
|
|
if (actor == NULL) {
|
|
return 0xFFFFFFFF;
|
|
} else {
|
|
return fopAcM_GetID(actor);
|
|
}
|
|
}
|
|
|
|
/* 800432EC-8004331C 03DC2C 0030+00 7/7 13/13 16/16 .text convPId__14dEvt_control_cFUi */
|
|
void* dEvt_control_c::convPId(unsigned int param_0) {
|
|
return fopAcIt_Judge(fpcSch_JudgeByID, (void*)¶m_0);
|
|
}
|
|
|
|
/* 8004331C-800433F0 03DC5C 00D4+00 0/0 1/1 0/0 .text getStbDemoData__14dEvt_control_cFPc
|
|
*/
|
|
void* dEvt_control_c::getStbDemoData(char* param_0) {
|
|
char* demoArcName = dStage_roomControl_c::getDemoArcName();
|
|
if (*demoArcName != 0) {
|
|
void* res = dComIfG_getObjectRes(demoArcName, param_0);
|
|
if (res != NULL) {
|
|
func_80041480();
|
|
return res;
|
|
}
|
|
func_80041480();
|
|
} else {
|
|
func_80041480();
|
|
}
|
|
char* roomArcName = dComIfG_getRoomArcName(dComIfGp_roomControl_getStayNo());
|
|
void* res2 = dComIfG_getStageRes(roomArcName, param_0);
|
|
if (res2 != NULL) {
|
|
func_80041480();
|
|
return res2;
|
|
} else {
|
|
res2 = dComIfG_getStageRes(param_0);
|
|
if (res2 != NULL) {
|
|
func_80041480();
|
|
return res2;
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|
|
}
|
|
|
|
dEvt_info_c::dEvt_info_c() {
|
|
setCommand(0);
|
|
setCondition(2);
|
|
setEventId(-1);
|
|
setMapToolId(-1);
|
|
mArchiveName = NULL;
|
|
mIndex = 0;
|
|
}
|
|
|
|
/* 80043428-80043480 03DD68 0058+00 0/0 0/0 4/4 .text setEventName__11dEvt_info_cFPc */
|
|
void dEvt_info_c::setEventName(char* name) {
|
|
if (name == NULL) {
|
|
mEventId = -1;
|
|
} else {
|
|
mEventId = i_dComIfGp_getEventManager().getEventIdx(name, -1, -1);
|
|
}
|
|
}
|
|
|
|
/* 80043480-800434CC 03DDC0 004C+00 1/1 0/0 0/0 .text getEventName__11dEvt_info_cFv */
|
|
char* dEvt_info_c::getEventName() {
|
|
if (mEventId == -1) {
|
|
return 0;
|
|
} else {
|
|
dEvDtEvent_c* data = i_dComIfGp_getEventManager().getEventData(mEventId);
|
|
if (data == NULL) {
|
|
return 0;
|
|
} else {
|
|
return data->getName();
|
|
}
|
|
}
|
|
}
|
|
|
|
void dEvt_info_c::beforeProc() {
|
|
setCondition(2);
|
|
}
|
|
|
|
/* 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());
|
|
}
|
|
|
|
/* 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) {
|
|
if (mapToolID == 0xFF) {
|
|
return NULL;
|
|
}
|
|
|
|
dStage_roomStatus_c* room = dComIfGp_roomControl_getStatusRoomDt(roomNo);
|
|
if (room != NULL) {
|
|
dStage_MapEventInfo_c* roomDt = room->mRoomDt.getMapEventInfo();
|
|
|
|
if (roomDt != NULL) {
|
|
for (int i = 0; i < roomDt->mCount; i++) {
|
|
if (mapToolID == roomDt->mData[i].field_0x4) {
|
|
return &roomDt->mData[i];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dStage_MapEventInfo_c* stageDt = i_dComIfGp_getStage()->getMapEventInfo();
|
|
if (stageDt != NULL) {
|
|
for (int i = 0; i < stageDt->mCount; i++) {
|
|
if (mapToolID == stageDt->mData[i].field_0x4) {
|
|
return &stageDt->mData[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
s16 dEvt_control_c::runningEventID(s16 param_0) {
|
|
return param_0 == field_0xe0 ? mSpecifiedEvent : param_0;
|
|
}
|
|
|
|
void dEvt_control_c::setPt1(void* ptr) {
|
|
mPt1 = getPId(ptr);
|
|
}
|
|
|
|
void dEvt_control_c::setPt2(void* ptr) {
|
|
mPt2 = getPId(ptr);
|
|
}
|
|
|
|
void dEvt_control_c::setPtT(void* ptr) {
|
|
mPtT = getPId(ptr);
|
|
}
|
|
|
|
void dEvt_control_c::setPtI(void* ptr) {
|
|
mPtI = getPId(ptr);
|
|
}
|
|
|
|
void dEvt_control_c::setPtI_Id(unsigned int id) {
|
|
mPtI = id;
|
|
}
|
|
|
|
void dEvt_control_c::setPtD(void* ptr) {
|
|
mPtd = getPId(ptr);
|
|
}
|
|
|
|
void dEvt_control_c::setGtItm(u8 itemNo) {
|
|
mGtItm = itemNo;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80379DC6-80379DD0 006426 0008+02 0/0 0/0 0/0 .rodata None */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_80379DC6 = "GIVEMAN";
|
|
/* @stringBase0 padding */
|
|
SECTION_DEAD static char const* const pad_80379DCE = "\0";
|
|
#pragma pop
|
|
|
|
/* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|