mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-26 07:18:47 -04:00
1217 lines
42 KiB
C++
1217 lines
42 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: d/event/d_event_manager
|
|
//
|
|
|
|
#include "d/event/d_event_manager.h"
|
|
#include "SSystem/SComponent/c_math.h"
|
|
#include "Z2AudioLib/Z2AudioMgr.h"
|
|
#include "d/com/d_com_inf_game.h"
|
|
#include "d/d_camera.h"
|
|
#include "d/d_stage.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/types.h"
|
|
#include "m_Do/m_Do_audio.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" void init__18dEvent_exception_cFv();
|
|
extern "C" void setStartDemo__18dEvent_exception_cFi();
|
|
extern "C" void getEventName__18dEvent_exception_cFv();
|
|
extern "C" void getSubstance__16dEvent_manager_cFP11dEvDtData_ci();
|
|
extern "C" void __ct__16dEvent_manager_cFv();
|
|
extern "C" void __ct__11dEvDtBase_cFv();
|
|
extern "C" void create__16dEvent_manager_cFv();
|
|
extern "C" void setObjectArchive__16dEvent_manager_cFPc();
|
|
extern "C" void demoInit__16dEvent_manager_cFv();
|
|
extern "C" void roomInit__16dEvent_manager_cFi();
|
|
extern "C" void roomFinish__16dEvent_manager_cFi();
|
|
extern "C" void orderStartDemo__16dEvent_manager_cFv();
|
|
extern "C" void remove__16dEvent_manager_cFv();
|
|
extern "C" static void extraOnObjectCallBack__FP10fopAc_ac_cPv();
|
|
extern "C" static void extraOffObjectCallBack__FP10fopAc_ac_cPv();
|
|
extern "C" static void allOffObjectCallBack__FP10fopAc_ac_cPv();
|
|
extern "C" void startProc__16dEvent_manager_cFP12dEvDtEvent_c();
|
|
extern "C" void closeProc__16dEvent_manager_cFP12dEvDtEvent_c();
|
|
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_cFsi();
|
|
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 getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc();
|
|
extern "C" void isMapToolCamera__16dEvent_manager_cFUcl();
|
|
extern "C" void order__16dEvent_manager_cFs();
|
|
extern "C" void startCheck__16dEvent_manager_cFs();
|
|
extern "C" void startCheckOld__16dEvent_manager_cFPCc();
|
|
extern "C" void endCheck__16dEvent_manager_cFs();
|
|
extern "C" void endCheckOld__16dEvent_manager_cFPCc();
|
|
extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
|
|
extern "C" void getIsAddvance__16dEvent_manager_cFi();
|
|
extern "C" static void dEvmng_strcmp__FPCcPc();
|
|
extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
|
|
extern "C" void getMyNowCutName__16dEvent_manager_cFi();
|
|
extern "C" void getMyDataP__16dEvent_manager_cFiPCci();
|
|
extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci();
|
|
extern "C" void getMySubstanceNum__16dEvent_manager_cFiPCc();
|
|
extern "C" void cutEnd__16dEvent_manager_cFi();
|
|
extern "C" void getEventPrio__16dEvent_manager_cFP10fopAc_ac_cs();
|
|
extern "C" void issueStaff__16dEvent_manager_cFPCc();
|
|
extern "C" void cancelStaff__16dEvent_manager_cFPCc();
|
|
extern "C" void setGoal__16dEvent_manager_cFP4cXyz();
|
|
extern "C" void getGoal__16dEvent_manager_cFv();
|
|
extern "C" void getRunEventName__16dEvent_manager_cFv();
|
|
extern "C" static void findShutterCallBack__FP10fopAc_ac_cPv();
|
|
extern "C" void specialCast_Shutter__16dEvent_manager_cFsi();
|
|
extern "C" void specialCast__16dEvent_manager_cFPCci();
|
|
extern "C" static void dEv_talkman_get_action__Fi();
|
|
extern "C" void ChkPresentEnd__16dEvent_manager_cFv();
|
|
extern "C" void checkStartDemo__16dEvent_manager_cFv();
|
|
extern "C" extern char const* const d_event_d_event_manager__stringBase0;
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
|
|
extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs();
|
|
extern "C" void fopAcM_orderMapToolAutoNextEvent__FP10fopAc_ac_cUcsUsUsUs();
|
|
extern "C" void fopAcM_searchFromName4Event__FPCcs();
|
|
extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
|
|
extern "C" void dComIfG_getStageRes__FPCc();
|
|
extern "C" void dComIfG_getRoomArcName__Fi();
|
|
extern "C" void dComIfGp_SelectWarpPt_get__Fv();
|
|
extern "C" void __dt__11dEvDtBase_cFv();
|
|
extern "C" void isSwitch__10dSv_info_cCFii();
|
|
extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
|
|
extern "C" void reset__14dEvt_control_cFv();
|
|
extern "C" void dEv_defaultSkipProc__FPvi();
|
|
extern "C" void dEv_defaultSkipZev__FPvi();
|
|
extern "C" void dEv_defaultSkipStb__FPvi();
|
|
extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii();
|
|
extern "C" void onSkipFade__14dEvt_control_cFv();
|
|
extern "C" void getStageEventDt__14dEvt_control_cFv();
|
|
extern "C" void sceneChange__14dEvt_control_cFi();
|
|
extern "C" void convPId__14dEvt_control_cFUi();
|
|
extern "C" void searchMapEventData__14dEvt_control_cFUcl();
|
|
extern "C" void runningEventID__14dEvt_control_cFs();
|
|
extern "C" void setPt2__14dEvt_control_cFPv();
|
|
extern "C" void setPtI__14dEvt_control_cFPv();
|
|
extern "C" void setPtD__14dEvt_control_cFPv();
|
|
extern "C" void flagSet__11dEvDtFlag_cFi();
|
|
extern "C" void init__11dEvDtFlag_cFv();
|
|
extern "C" void finishCheck__12dEvDtEvent_cFv();
|
|
extern "C" void specialStaffProc__12dEvDtEvent_cFP12dEvDtStaff_c();
|
|
extern "C" void init__12dEvDtStaff_cFv();
|
|
extern "C" void init__11dEvDtBase_cFv();
|
|
extern "C" void init__11dEvDtBase_cFPci();
|
|
extern "C" void advanceCut__11dEvDtBase_cFP12dEvDtEvent_c();
|
|
extern "C" void EventRecoverNotime__9dCamera_cFv();
|
|
extern "C" void dCam_getBody__Fv();
|
|
extern "C" void Center__9dCamera_cFv();
|
|
extern "C" void __mi__4cXyzCFRC3Vec();
|
|
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
|
extern "C" void setDemoName__11Z2StatusMgrFPc();
|
|
extern "C" void __construct_array();
|
|
extern "C" void _savegpr_20();
|
|
extern "C" void _savegpr_22();
|
|
extern "C" void _savegpr_24();
|
|
extern "C" void _savegpr_25();
|
|
extern "C" void _savegpr_27();
|
|
extern "C" void _savegpr_28();
|
|
extern "C" void _savegpr_29();
|
|
extern "C" void _restgpr_20();
|
|
extern "C" void _restgpr_22();
|
|
extern "C" void _restgpr_24();
|
|
extern "C" void _restgpr_25();
|
|
extern "C" void _restgpr_27();
|
|
extern "C" void _restgpr_28();
|
|
extern "C" void _restgpr_29();
|
|
extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */];
|
|
extern "C" u8 sincosTable___5JMath[65536];
|
|
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
|
|
|
inline dEvent_manager_c& dComIfGp_getEventManager() {
|
|
return g_dComIfG_gameInfo.play.getEvtManager();
|
|
}
|
|
|
|
inline dEvt_control_c& dComIfGp_getEvent() {
|
|
return g_dComIfG_gameInfo.play.getEvent();
|
|
}
|
|
|
|
BOOL daPy_py_c::checkNowWolf() {
|
|
return dComIfGp_getLinkPlayer()->i_checkWolf();
|
|
}
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
void dEvent_exception_c::init() {
|
|
mEventInfoIdx = -1;
|
|
mState = 0;
|
|
}
|
|
|
|
/* 800463F0-80046480 040D30 0090+00 0/0 2/2 0/0 .text setStartDemo__18dEvent_exception_cFi */
|
|
s32 dEvent_exception_c::setStartDemo(int index) {
|
|
int tmp = dComIfGp_roomControl_getStayNo();
|
|
dStage_MapEvent_dt_c* eventData = dEvt_control_c::searchMapEventData(index, tmp);
|
|
if (eventData != NULL && eventData->field_0x1B != 0xFF &&
|
|
dComIfGs_isSwitch(eventData->field_0x1B, tmp)) {
|
|
return 0xFF;
|
|
} else if (mEventInfoIdx != index) {
|
|
mEventInfoIdx = index;
|
|
}
|
|
return index;
|
|
}
|
|
|
|
/* 80046480-800465E8 040DC0 0168+00 1/1 0/0 0/0 .text getEventName__18dEvent_exception_cFv */
|
|
const char* dEvent_exception_c::getEventName() {
|
|
/* 803A8270-803A82A8 -00001 0038+00 1/1 0/0 0/0 .data soecial_names$3966 */
|
|
static char* soecial_names[14] = {
|
|
"NORMAL_COMEBACK", "DEFAULT_START", "SHUTTER_START", "SHUTTER_START_STOP",
|
|
"BS_SHUTTER_START", "BS_SHUTTER_START_B", "KNOB_START", "KNOB_START_B",
|
|
"FMASTER_START", "FALL_START", "CRAWLOUT_START", "BOSSWARP_START",
|
|
"PORTALWARP_START", "PORTALWARP_START_B",
|
|
};
|
|
s32 roomNo = dComIfGp_roomControl_getStayNo();
|
|
dStage_roomStatus_c* roomStatus = dComIfGp_roomControl_getStatusRoomDt(roomNo);
|
|
dStage_MapEventInfo_c* eventInfo = roomStatus->mRoomDt.getMapEventInfo();
|
|
if (mEventInfoIdx == -1) {
|
|
return "(!NO REGIST!)";
|
|
}
|
|
if (0xC8 < mEventInfoIdx && mEventInfoIdx < 0xD7) {
|
|
if (mEventInfoIdx == 0xCB) {
|
|
dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo());
|
|
} else if (mEventInfoIdx == 0xD5) {
|
|
switch (dComIfGp_SelectWarpPt_get()) {
|
|
case 3:
|
|
mEventInfoIdx = 0xD6;
|
|
}
|
|
}
|
|
return soecial_names[mEventInfoIdx - 0xC9];
|
|
} else {
|
|
if (eventInfo == NULL) {
|
|
return "(!NO INFO!)";
|
|
}
|
|
if (mEventInfoIdx < 0 || mEventInfoIdx > eventInfo->mCount) {
|
|
return "(!BAD NUMBER!)";
|
|
}
|
|
dStage_MapEvent_dt_c* revt = &eventInfo->mData[mEventInfoIdx];
|
|
switch (revt->mType) {
|
|
case 1:
|
|
case 2:
|
|
return revt->mName;
|
|
case 0:
|
|
return "(MAP TOOL CAMERA)";
|
|
default:
|
|
return "(!BAD DATA!)";
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 800465E8-80046688 040F28 00A0+00 1/1 0/0 0/0 .text
|
|
* getSubstance__16dEvent_manager_cFP11dEvDtData_ci */
|
|
void* dEvent_manager_c::getSubstance(dEvDtData_c* p_data, int type) {
|
|
if (p_data->getIndex() < 0 || p_data->getNumber() <= 0) {
|
|
return NULL;
|
|
} else {
|
|
switch (p_data->getType()) {
|
|
case dEvDtData_c::TYPE_FLOAT:
|
|
case dEvDtData_c::TYPE_VEC:
|
|
case 2:
|
|
return getBase().getFDataP(p_data->getIndex());
|
|
case dEvDtData_c::TYPE_INT:
|
|
return getBase().getIDataP(p_data->getIndex());
|
|
case dEvDtData_c::TYPE_STRING:
|
|
return getBase().getSDataP(p_data->getIndex());
|
|
}
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
dEvent_manager_c::dEvent_manager_c() {
|
|
mDataLoaded = false;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80379F50-80379F60 0065B0 000F+01 6/6 0/0 0/0 .rodata
|
|
* DataFileName__29@unnamed@d_event_manager_cpp@ */
|
|
static char const DataFileName[] = "event_list.dat";
|
|
|
|
/* 80046710-80046800 041050 00F0+00 0/0 1/1 0/0 .text create__16dEvent_manager_cFv */
|
|
int dEvent_manager_c::create() {
|
|
mCameraPlay = 0;
|
|
mEventException.init();
|
|
mFlags.init();
|
|
mCurrentEventType = 0;
|
|
mCurrentEventCompositId = -1;
|
|
field_0x1b8 = 0;
|
|
mRoomNo = -1;
|
|
mDataLoaded = 0;
|
|
|
|
for (int i = 4; i <= 9; i++) {
|
|
mEventList[i].init();
|
|
}
|
|
|
|
mEventList[3].init((char*)dComIfG_getStageRes(DataFileName), -1);
|
|
mEventList[10].init();
|
|
mEventList[1].init((char*)dComIfG_getObjectRes("Event", DataFileName), -1);
|
|
mEventList[2].init();
|
|
return 1;
|
|
}
|
|
|
|
/* 80046800-80046888 041140 0088+00 0/0 8/8 24/24 .text setObjectArchive__16dEvent_manager_cFPc */
|
|
bool dEvent_manager_c::setObjectArchive(char* param_0) {
|
|
char* rt = NULL;
|
|
|
|
if (param_0 != NULL) {
|
|
char* res = (char*)dComIfG_getObjectRes(param_0, DataFileName);
|
|
rt = res;
|
|
mEventList[2].init(res, -1);
|
|
} else {
|
|
mEventList[2].init();
|
|
}
|
|
return rt != NULL;
|
|
}
|
|
|
|
/* 80046888-80046904 0411C8 007C+00 0/0 1/1 0/0 .text demoInit__16dEvent_manager_cFv */
|
|
void dEvent_manager_c::demoInit() {
|
|
if (mDataLoaded == false) {
|
|
if (dStage_roomControl_c::getDemoArcName()[0] != '\0') {
|
|
mEventList[10].init(
|
|
(char*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), DataFileName),
|
|
-1);
|
|
}
|
|
mDataLoaded = true;
|
|
}
|
|
}
|
|
|
|
/* 80046904-800469EC 041244 00E8+00 0/0 1/1 0/0 .text roomInit__16dEvent_manager_cFi */
|
|
void dEvent_manager_c::roomInit(int roomNo) {
|
|
if (roomNo == -1) {
|
|
roomNo = dComIfGp_roomControl_getStayNo();
|
|
}
|
|
char arc_name[8];
|
|
strcpy(arc_name, dComIfG_getRoomArcName(roomNo));
|
|
char* data = (char*)dComIfG_getStageRes(arc_name, DataFileName);
|
|
|
|
int i;
|
|
int eventIdx = -1;
|
|
for (i = 4; i <= 9; i++) {
|
|
if (mEventList[i].getHeaderP() == NULL) {
|
|
eventIdx = i;
|
|
continue;
|
|
}
|
|
|
|
if (mEventList[i].roomNo() == roomNo) {
|
|
eventIdx = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (eventIdx != -1) {
|
|
mEventList[eventIdx].init(data, roomNo);
|
|
}
|
|
mRoomNo = roomNo;
|
|
}
|
|
|
|
void dEvent_manager_c::roomFinish(int param_0) {
|
|
for (int i = 4; i <= 9; i++) {
|
|
if (mEventList[i].getHeaderP() != NULL && param_0 == mEventList[i].roomNo()) {
|
|
mEventList[i].init();
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 80046A58-80046C0C 041398 01B4+00 0/0 1/1 0/0 .text orderStartDemo__16dEvent_manager_cFv */
|
|
int dEvent_manager_c::orderStartDemo() {
|
|
BOOL success = FALSE;
|
|
if (mEventException.mEventInfoIdx == -2) {
|
|
return -2;
|
|
}
|
|
s16 eventIdx;
|
|
if (0xC8 < mEventException.mEventInfoIdx && mEventException.mEventInfoIdx < 0xD7) {
|
|
eventIdx = this->getEventIdx(mEventException.getEventName(), -1, -1);
|
|
success = fopAcM_orderOtherEventId(NULL, eventIdx, 0xFF, 0xFFFF, 5, 1);
|
|
} else if (mEventException.mEventInfoIdx != -1 && mEventException.mEventInfoIdx != 0xFF) {
|
|
u8 eventInfoIdx = mEventException.mEventInfoIdx;
|
|
eventIdx = this->getEventIdx(NULL, eventInfoIdx, -1);
|
|
success = fopAcM_orderMapToolAutoNextEvent(NULL, eventInfoIdx, eventIdx, 0xFFFF, 1, 5);
|
|
} else if (dComIfGp_getStartStagePoint() == -2 || dComIfGp_getStartStagePoint() == -3) {
|
|
eventIdx = this->getEventIdx(
|
|
daPy_py_c::checkNowWolf() ? "WOLF_WORLD_CHANGE_OUT" : "WORLD_CHANGE_OUT", 0xFF, -1);
|
|
success = fopAcM_orderOtherEventId(NULL, eventIdx, 0xFF, 0xFFFF, 5, 1);
|
|
}
|
|
if (success == FALSE) {
|
|
eventIdx = this->getEventIdx("DEFAULT_START", 0xFF, -1);
|
|
fopAcM_orderOtherEventId(NULL, eventIdx, 0xFF, 0xFFFF, 5, 1);
|
|
}
|
|
return eventIdx;
|
|
}
|
|
|
|
void dEvent_manager_c::remove() {
|
|
for (int i = 0; i < 11; i++) {
|
|
mEventList[i].init();
|
|
}
|
|
mCameraPlay = 0;
|
|
mEventException.init();
|
|
mFlags.init();
|
|
}
|
|
|
|
/* 80046C74-80046C88 0415B4 0014+00 1/1 0/0 0/0 .text extraOnObjectCallBack__FP10fopAc_ac_cPv */
|
|
static int extraOnObjectCallBack(fopAc_ac_c* pActor, void* param_1) {
|
|
fopAcM_OnStatus(pActor, 0x800);
|
|
return 0;
|
|
}
|
|
|
|
/* 80046C88-80046C9C 0415C8 0014+00 1/1 0/0 0/0 .text extraOffObjectCallBack__FP10fopAc_ac_cPv */
|
|
static int extraOffObjectCallBack(fopAc_ac_c* pActor, void* param_1) {
|
|
fopAcM_OffStatus(pActor, 0x800);
|
|
return 0;
|
|
}
|
|
|
|
/* 80046C9C-80046CB8 0415DC 001C+00 1/1 0/0 0/0 .text allOffObjectCallBack__FP10fopAc_ac_cPv */
|
|
static int allOffObjectCallBack(fopAc_ac_c* pActor, void* param_1) {
|
|
fopAcM_OffStatus(pActor, 0x9000);
|
|
return 0;
|
|
}
|
|
|
|
/* 80046CB8-80046DA0 0415F8 00E8+00 1/1 0/0 0/0 .text
|
|
* startProc__16dEvent_manager_cFP12dEvDtEvent_c */
|
|
void dEvent_manager_c::startProc(dEvDtEvent_c* p_evnt) {
|
|
for (int i = 0; i < p_evnt->getNStaff(); i++) {
|
|
dEvDtStaff_c* staff = getBase().getStaffP(p_evnt->getStaff(i));
|
|
if (staff->getType() == dEvDtStaff_c::TYPE_DEFAULT) {
|
|
fopAc_ac_c* ac = specialCast(staff->getName(), 1);
|
|
if (ac == NULL) {
|
|
ac = fopAcM_searchFromName4Event(staff->getName(), -1);
|
|
}
|
|
if (ac != NULL) {
|
|
fopAcM_OnStatus(ac, 0x8000);
|
|
}
|
|
}
|
|
if (staff->getType() == dEvDtStaff_c::TYPE_ALL) {
|
|
issueStaff(staff->getName());
|
|
}
|
|
staff->init();
|
|
}
|
|
p_evnt->mEventState = 1;
|
|
mFlags.init();
|
|
}
|
|
|
|
/* 80046DA0-80046DAC 0416E0 000C+00 2/2 0/0 0/0 .text
|
|
* closeProc__16dEvent_manager_cFP12dEvDtEvent_c */
|
|
void dEvent_manager_c::closeProc(dEvDtEvent_c* p_evnt) {
|
|
p_evnt->mEventState = 2;
|
|
}
|
|
|
|
/* 80046DAC-80046E64 0416EC 00B8+00 0/0 2/2 0/0 .text endProc__16dEvent_manager_cFsi */
|
|
void dEvent_manager_c::endProc(s16 param_0, int param_1) {
|
|
dEvDtEvent_c* event = this->getEventData(param_0);
|
|
if (event != NULL) {
|
|
if (param_1 != 0) {
|
|
this->closeProc(event);
|
|
}
|
|
if (event->mEventState == 2) {
|
|
char* param = "ALL";
|
|
fopAcM_Search((fopAcIt_JudgeFunc)allOffObjectCallBack, (void*)param);
|
|
mCameraPlay = 2;
|
|
event->mEventState = 0;
|
|
mCurrentEventType = 0;
|
|
mCurrentEventCompositId = -1;
|
|
dComIfGp_getEvent().setPtD(NULL);
|
|
dComIfGp_getEvent().setPtI(NULL);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 80046E64-800473FC 0417A4 0598+00 0/0 1/1 0/0 .text Sequencer__16dEvent_manager_cFv */
|
|
void dEvent_manager_c::Sequencer() {
|
|
dEvt_control_c& evtControl = dComIfGp_getEvent();
|
|
dEvDtEvent_c* event = this->getEventData(mCurrentEventCompositId);
|
|
dStage_MapEvent_dt_c* mapEvent = evtControl.getStageEventDt();
|
|
if (event != NULL) {
|
|
if (evtControl.chkEventFlag(0x100)) {
|
|
char* name = NULL;
|
|
if (mapEvent != NULL) {
|
|
switch (mapEvent->mType) {
|
|
case 0:
|
|
default:
|
|
break;
|
|
case 1:
|
|
case 2:
|
|
name = mapEvent->mName;
|
|
break;
|
|
}
|
|
if (dStage_MapEvent_dt_c_getEventSCutSW(mapEvent) != 0 && !evtControl.chkFlag2(2)) {
|
|
if (dStage_MapEvent_dt_c_getEventSCutType(mapEvent) == 2) {
|
|
evtControl.onSkipFade();
|
|
}
|
|
void* actor = evtControl.getPt1();
|
|
if (actor == NULL) {
|
|
actor = evtControl.getPt2();
|
|
}
|
|
if (actor == NULL) {
|
|
actor = dComIfGp_getPlayer(0);
|
|
}
|
|
if (actor != NULL) {
|
|
switch (mapEvent->mType) {
|
|
case 2:
|
|
evtControl.setSkipProc(actor, dEv_defaultSkipStb, 0);
|
|
break;
|
|
case 1:
|
|
evtControl.setSkipProc(actor, dEv_defaultSkipZev, 0);
|
|
break;
|
|
case 0:
|
|
evtControl.setSkipProc(actor, dEv_defaultSkipProc, 0);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Z2GetAudioMgr()->mStatusMgr.setDemoName(name);
|
|
}
|
|
if (event->finishCheck() != 0) {
|
|
bool bVar1 = false;
|
|
if (evtControl.chkFlag2(1)) {
|
|
bVar1 = true;
|
|
}
|
|
int exit = -1;
|
|
bool iVar5;
|
|
if (evtControl.chkFlag2(2)) {
|
|
iVar5 = true;
|
|
} else {
|
|
iVar5 = false;
|
|
}
|
|
if (mapEvent != NULL) {
|
|
int cutType = dStage_MapEvent_dt_c_getEventSCutType(mapEvent);
|
|
if (iVar5 && cutType != 1) {
|
|
bVar1 = true;
|
|
cXyz attentionPos(
|
|
((fopAc_ac_c*)dComIfGp_getPlayer(0))->mAttentionInfo.mPosition);
|
|
cXyz camCenter = dCam_getBody()->Center();
|
|
f32 distance = cXyz((attentionPos - camCenter)).abs();
|
|
if (cutType == 0) {
|
|
if (distance > 180) {
|
|
dCam_getBody()->EventRecoverNotime();
|
|
}
|
|
} else {
|
|
switch (mapEvent->field_0x3) {
|
|
case 1:
|
|
case 2:
|
|
if (distance > 180) {
|
|
dCam_getBody()->EventRecoverNotime();
|
|
}
|
|
break;
|
|
case 3:
|
|
dCam_getBody()->EventRecoverNotime();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
switch (mapEvent->mType) {
|
|
case 0:
|
|
switch (mapEvent->field_0x18) {
|
|
case 1:
|
|
mDoAud_seStart(0xC, NULL, 0, 0);
|
|
break;
|
|
case 2:
|
|
mDoAud_seStart(0xD, NULL, 0, 0);
|
|
break;
|
|
}
|
|
if (!bVar1) {
|
|
if (iVar5 && mapEvent->field_0x9 != 0xFF) {
|
|
exit = mapEvent->field_0x9;
|
|
evtControl.sceneChange(exit);
|
|
} else if (mapEvent->field_0x17 != 0xFF) {
|
|
exit = mapEvent->field_0x17;
|
|
evtControl.sceneChange(exit);
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
if (!bVar1) {
|
|
if (iVar5 && mapEvent->field_0x9 != 0xFF) {
|
|
exit = mapEvent->field_0x9;
|
|
evtControl.sceneChange(exit);
|
|
} else if (mapEvent->field_0x7 != 0xFF) {
|
|
exit = mapEvent->field_0x7;
|
|
evtControl.sceneChange(exit);
|
|
}
|
|
}
|
|
break;
|
|
case 1:
|
|
if (!bVar1) {
|
|
if (iVar5 && mapEvent->field_0x9 != 0xFF) {
|
|
exit = mapEvent->field_0x9;
|
|
evtControl.sceneChange(exit);
|
|
} else if (mapEvent->field_0x7 != 0xFF) {
|
|
exit = mapEvent->field_0x7;
|
|
evtControl.sceneChange(exit);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (exit == -1) {
|
|
getBase().advanceCut(event);
|
|
closeProc(event);
|
|
evtControl.reset();
|
|
}
|
|
} else {
|
|
if (event->mEventState == 1) {
|
|
getBase().advanceCut(event);
|
|
}
|
|
}
|
|
if (field_0x1b8 != 0) {
|
|
field_0x1b8--;
|
|
}
|
|
} else {
|
|
if (evtControl.chkEventFlag(0x100)) {
|
|
Z2GetAudioMgr()->mStatusMgr.setDemoName(NULL);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 800473FC-80047454 041D3C 0058+00 0/0 1/1 0/0 .text Experts__16dEvent_manager_cFv */
|
|
void dEvent_manager_c::Experts() {
|
|
dEvDtEvent_c* event = this->getEventData(mCurrentEventCompositId);
|
|
if (event != NULL && event->mEventState == 1) {
|
|
event->specialStaffProc(this->getBase().getStaffP(0));
|
|
}
|
|
}
|
|
|
|
/* 80047454-800474BC 041D94 0068+00 1/1 0/0 0/0 .text getEventData__16dEvent_manager_cFsi
|
|
*/
|
|
dEvDtEvent_c* dEvent_manager_c::getEventData(s16 param_0, int idx) {
|
|
if (idx <= 0 || idx > 11) {
|
|
return NULL;
|
|
} else {
|
|
dEvDtBase_c* base = &mEventList[idx];
|
|
|
|
if (base == NULL || base->getHeaderP() == NULL) {
|
|
return NULL;
|
|
} else if (param_0 < 0 || param_0 >= base->getEventNum()) {
|
|
return NULL;
|
|
} else {
|
|
return base->getEventP(param_0);
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
/* 800474BC-80047514 041DFC 0058+00 9/9 3/3 4/4 .text getEventData__16dEvent_manager_cFs
|
|
*/
|
|
#ifdef NONMATCHING
|
|
dEvDtEvent_c* dEvent_manager_c::getEventData(s16 eventCompositId) {
|
|
if (param_0 == -1) {
|
|
return NULL;
|
|
} else {
|
|
// extsh instead of mr here
|
|
return this->getEventData(getIndexCompositId(param_0), getTypeCompositId(param_0));
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm dEvDtEvent_c* dEvent_manager_c::getEventData(s16 eventCompositId) {
|
|
nofralloc
|
|
#include "asm/d/event/d_event_manager/getEventData__16dEvent_manager_cFs.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80047514-80047698 041E54 0184+00 3/3 8/8 3/3 .text getEventIdx__16dEvent_manager_cFPCcUcl */
|
|
s16 dEvent_manager_c::getEventIdx(char const* eventName, u8 param_1, s32 roomNo) {
|
|
if (roomNo == -1) {
|
|
roomNo = dComIfGp_roomControl_getStayNo();
|
|
}
|
|
if (param_1 != 0xFF) {
|
|
dStage_MapEvent_dt_c* data = dEvt_control_c::searchMapEventData(param_1, roomNo);
|
|
if (data != NULL) {
|
|
switch (data->mType) {
|
|
case 1:
|
|
case 2:
|
|
return getEventIdx(data->mName, 0xFF, roomNo);
|
|
case 0:
|
|
static char map_tool_name[17];
|
|
sprintf(map_tool_name, "MapToolCamera%d", param_1);
|
|
return getEventIdx(map_tool_name, 0xFF, roomNo);
|
|
}
|
|
}
|
|
}
|
|
if (eventName == NULL) {
|
|
return -1;
|
|
}
|
|
dEvDtBase_c* event;
|
|
int j;
|
|
int i;
|
|
for (i = ARRAY_SIZE(mEventList) - 1; i >= 1; i--) {
|
|
if (i < 4 || 9 < i || roomNo == mEventList[i].roomNo()) {
|
|
event = &mEventList[i];
|
|
if (event->getHeaderP() != NULL) {
|
|
for (j = 0; j < event->getHeaderP()->eventNum; j++) {
|
|
if (strcmp(eventName, event->getEventName(j)) == 0) {
|
|
return makeCompositId(j, i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
/* 80047698-80047758 041FD8 00C0+00 0/0 3/3 25/25 .text
|
|
* getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc */
|
|
s16 dEvent_manager_c::getEventIdx(fopAc_ac_c* pActor, u8 param_1) {
|
|
dStage_MapEvent_dt_c* data = dEvt_control_c::searchMapEventData(param_1, pActor->getRoomNo());
|
|
if (data != NULL) {
|
|
switch (data->mType) {
|
|
case 1:
|
|
case 2:
|
|
return getEventIdx(pActor, data->mName, 0xFF);
|
|
case 0:
|
|
static char map_tool_name[17];
|
|
sprintf(map_tool_name, "MapToolCamera%d", param_1);
|
|
return getEventIdx(pActor, map_tool_name, 0xFF);
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
/* 80047758-80047930 042098 01D8+00 1/1 10/10 92/92 .text
|
|
* getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc */
|
|
s16 dEvent_manager_c::getEventIdx(fopAc_ac_c* pActor, char const* eventName, u8 param_2) {
|
|
s8 actorRoomNo = pActor->getRoomNo();
|
|
if (param_2 != 0xFF) {
|
|
dStage_MapEvent_dt_c* data = dEvt_control_c::searchMapEventData(param_2, actorRoomNo);
|
|
if (data != NULL) {
|
|
switch (data->mType) {
|
|
case 1:
|
|
case 2:
|
|
return getEventIdx(pActor, data->mName, 0xFF);
|
|
case 0:
|
|
static char map_tool_name[17];
|
|
sprintf(map_tool_name, "MapToolCamera%d", param_2);
|
|
return getEventIdx(pActor, map_tool_name, 0xFF);
|
|
}
|
|
}
|
|
}
|
|
if (eventName == NULL) {
|
|
return -1;
|
|
}
|
|
dEvDtBase_c* event;
|
|
int j;
|
|
int type;
|
|
for (type = ARRAY_SIZE(mEventList) - 1; type >= 1; type--) {
|
|
dEvDtBase_c* eventP = &mEventList[type];
|
|
dEvDtBase_c event;
|
|
if (type < 4 || 9 < type || actorRoomNo == mEventList[type].roomNo()) {
|
|
if (pActor != NULL && type == 2 && pActor->mEvtInfo.getArchiveName() != NULL) {
|
|
event.init(
|
|
(char*)dComIfG_getObjectRes(pActor->mEvtInfo.getArchiveName(), DataFileName),
|
|
-1);
|
|
eventP = &event;
|
|
}
|
|
if (eventP->getHeaderP() != NULL) {
|
|
for (j = 0; j < eventP->getHeaderP()->eventNum; j++) {
|
|
if (strcmp(eventName, eventP->getEventName(j)) == 0) {
|
|
return makeCompositId(j, type);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
/* 80047930-80047984 042270 0054+00 0/0 0/0 1/1 .text isMapToolCamera__16dEvent_manager_cFUcl */
|
|
int dEvent_manager_c::isMapToolCamera(u8 param_0, s32 roomNo) {
|
|
if (roomNo == -1) {
|
|
roomNo = dComIfGp_roomControl_getStayNo();
|
|
}
|
|
dStage_MapEvent_dt_c* data = dEvt_control_c::searchMapEventData(param_0, roomNo);
|
|
if (data != NULL) {
|
|
return data->mType == 0;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/* 80047984-800479F8 0422C4 0074+00 0/0 6/6 0/0 .text order__16dEvent_manager_cFs */
|
|
int dEvent_manager_c::order(s16 eventCompositId) {
|
|
dEvDtEvent_c* event = this->getEventData(eventCompositId);
|
|
if (event == NULL) {
|
|
return 0;
|
|
} else {
|
|
mCurrentEventType = getTypeCompositId(eventCompositId);
|
|
mCurrentEventCompositId = eventCompositId;
|
|
this->startProc(event);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
/* 800479F8-80047A38 042338 0040+00 1/1 0/0 9/9 .text startCheck__16dEvent_manager_cFs */
|
|
int dEvent_manager_c::startCheck(s16 eventCompositId) {
|
|
dEvDtEvent_c* event = this->getEventData(eventCompositId);
|
|
if (event == NULL) {
|
|
return 0;
|
|
} else {
|
|
if (event->mEventState == 1) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 80047A38-80047A78 042378 0040+00 0/0 2/2 0/0 .text startCheckOld__16dEvent_manager_cFPCc */
|
|
int dEvent_manager_c::startCheckOld(char const* pName) {
|
|
return this->startCheck(this->getEventIdx(pName, 0xFF, -1));
|
|
}
|
|
|
|
/* 80047A78-80047ADC 0423B8 0064+00 1/1 2/2 122/122 .text endCheck__16dEvent_manager_cFs
|
|
*/
|
|
int dEvent_manager_c::endCheck(s16 param_0) {
|
|
dEvDtEvent_c* event = this->getEventData(dComIfGp_getEvent().runningEventID(param_0));
|
|
if (event == NULL) {
|
|
return 0;
|
|
} else {
|
|
if (event->mEventState == 2) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 80047ADC-80047B1C 04241C 0040+00 0/0 2/2 10/10 .text endCheckOld__16dEvent_manager_cFPCc */
|
|
int dEvent_manager_c::endCheckOld(char const* pName) {
|
|
return this->endCheck(this->getEventIdx(pName, 0xFF, -1));
|
|
}
|
|
|
|
/* 80047B1C-80047D4C 04245C 0230+00 1/1 10/10 210/210 .text
|
|
* getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci */
|
|
s32 dEvent_manager_c::getMyStaffId(char const* pStaffName, fopAc_ac_c* pActor, int tagId) {
|
|
int staffNum;
|
|
int i;
|
|
int evtIdx = -1;
|
|
if (dComIfGp_getEvent().getMode() == 0) {
|
|
return -1;
|
|
} else {
|
|
if (pActor != NULL) {
|
|
evtIdx = pActor->mEvtInfo.getIdx();
|
|
}
|
|
if (mCurrentEventCompositId == -1) {
|
|
return -1;
|
|
} else {
|
|
dEvDtEvent_c* event = this->getEventData(mCurrentEventCompositId);
|
|
if (event != NULL && (event->mEventState == 1 || event->mEventState == 2)) {
|
|
int staffCount = event->getNStaff();
|
|
bool hasDp = false;
|
|
if (strchr(pStaffName, ':') != NULL) {
|
|
hasDp = true;
|
|
}
|
|
for (i = 0; i < staffCount; i++) {
|
|
staffNum = event->getStaff(i);
|
|
dEvDtStaff_c* staff = getBase().getStaffP(staffNum);
|
|
if (staff->mType != 1) {
|
|
char buf[0x18];
|
|
strcpy(buf, staff->mName);
|
|
char* ptr = NULL;
|
|
if (!hasDp) {
|
|
char* tmpPtr = strchr(buf, ':');
|
|
ptr = tmpPtr;
|
|
if (tmpPtr != NULL) {
|
|
*tmpPtr = '\0';
|
|
ptr++;
|
|
}
|
|
}
|
|
if (strcmp(pStaffName, buf) == 0 && (tagId < 0 || tagId == staff->mTagID)) {
|
|
s16 num = 0;
|
|
if (ptr != NULL) {
|
|
char c;
|
|
while ((c = *ptr) != '\0') {
|
|
if (c < '0' || '9' < c) {
|
|
num = 0;
|
|
break;
|
|
}
|
|
num = c - '0' + num * 10;
|
|
ptr++;
|
|
}
|
|
if (evtIdx < 0 || num == evtIdx) {
|
|
return staffNum;
|
|
}
|
|
} else {
|
|
return staffNum;
|
|
}
|
|
}
|
|
if (strcmp(pStaffName, "Alink") == 0 && strcmp("Link", buf) == 0 &&
|
|
tagId == staff->mTagID) {
|
|
return staffNum;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
/* 80047D4C-80047DAC 04268C 0060+00 0/0 9/9 417/417 .text getIsAddvance__16dEvent_manager_cFi */
|
|
int dEvent_manager_c::getIsAddvance(int param_0) {
|
|
if (dComIfGp_getEvent().getMode() == 0) {
|
|
return 0;
|
|
} else if (param_0 == -1) {
|
|
return 0;
|
|
} else if (mCurrentEventCompositId == -1) {
|
|
return 0;
|
|
} else {
|
|
return this->getBase().getStaffP(param_0)->field_0x40;
|
|
}
|
|
}
|
|
|
|
/* 80047DAC-80047E10 0426EC 0064+00 1/1 0/0 0/0 .text dEvmng_strcmp__FPCcPc */
|
|
static int dEvmng_strcmp(char const* param_0, char* param_1) {
|
|
u32 len = 0;
|
|
while (*param_0 != '\0') {
|
|
if (*param_1 == '\0') {
|
|
return 1;
|
|
}
|
|
if (len >= 100) {
|
|
return -1;
|
|
}
|
|
if (*param_0 != *param_1) {
|
|
return 1;
|
|
}
|
|
len++;
|
|
param_0++;
|
|
param_1++;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 80047E10-80047F5C 042750 014C+00 1/1 1/1 118/118 .text
|
|
* getMyActIdx__16dEvent_manager_cFiPCPCciii */
|
|
int dEvent_manager_c::getMyActIdx(int param_0, char const* const* param_1, int param_2, int param_3,
|
|
int param_4) {
|
|
if (dComIfGp_getEvent().getMode() == 0) {
|
|
return 0;
|
|
} else if (param_0 == -1) {
|
|
return -1;
|
|
} else if (mCurrentEventCompositId == -1) {
|
|
return -1;
|
|
}
|
|
dEvDtStaff_c* staff = getBase().getStaffP(param_0);
|
|
if (staff) {
|
|
if (staff->field_0x41 != false && param_3 == 0) {
|
|
return staff->field_0x3c;
|
|
}
|
|
} else {
|
|
return -1;
|
|
}
|
|
|
|
int i;
|
|
char* nowCutName = this->getMyNowCutName(param_0);
|
|
if (nowCutName == NULL) {
|
|
staff->field_0x3c = -1;
|
|
return -1;
|
|
} else {
|
|
staff->field_0x41 = true;
|
|
for (i = 0; i < param_2; i++) {
|
|
if (param_4 != 0) {
|
|
if (dEvmng_strcmp(param_1[i], nowCutName) == 0) {
|
|
staff->field_0x3c = i;
|
|
return i;
|
|
}
|
|
} else {
|
|
if (strcmp(param_1[i], nowCutName) == 0) {
|
|
staff->field_0x3c = i;
|
|
return i;
|
|
}
|
|
}
|
|
}
|
|
staff->field_0x3c = -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 80047F5C-80047FC8 04289C 006C+00 1/1 9/9 62/62 .text getMyNowCutName__16dEvent_manager_cFi */
|
|
char* dEvent_manager_c::getMyNowCutName(int index) {
|
|
if (dComIfGp_getEvent().getMode() == 0) {
|
|
return NULL;
|
|
} else if (index == -1) {
|
|
return NULL;
|
|
} else if (mCurrentEventCompositId == -1) {
|
|
return NULL;
|
|
} else {
|
|
return getBase().getCutStaffCurrentCutP(index)->getName();
|
|
}
|
|
}
|
|
|
|
/* 80047FC8-800480EC 042908 0124+00 2/2 0/0 0/0 .text getMyDataP__16dEvent_manager_cFiPCci */
|
|
dEvDtData_c* dEvent_manager_c::getMyDataP(int index, char const* name, int type) {
|
|
if (dComIfGp_getEvent().getMode() == 0) {
|
|
return NULL;
|
|
} else if (index == -1) {
|
|
return NULL;
|
|
} else if (mCurrentEventCompositId == -1) {
|
|
return NULL;
|
|
} else {
|
|
dEvDtCut_c* cut;
|
|
if (type != 0) {
|
|
cut = getBase().getCutStaffStartCutP(index);
|
|
} else {
|
|
cut = getBase().getCutStaffCurrentCutP(index);
|
|
}
|
|
|
|
int top = cut->getDataTop();
|
|
while (top != -1) {
|
|
dEvDtData_c* data = getBase().getDataP(top);
|
|
if (!strcmp(name, data->getName())) {
|
|
return data;
|
|
}
|
|
top = data->getNext();
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
/* 800480EC-80048144 042A2C 0058+00 0/0 22/22 355/355 .text
|
|
* getMySubstanceP__16dEvent_manager_cFiPCci */
|
|
void* dEvent_manager_c::getMySubstanceP(int index, char const* name, int type) {
|
|
dEvDtData_c* data = getMyDataP(index, name, 0);
|
|
if (data == NULL) {
|
|
return NULL;
|
|
}
|
|
return getSubstance(data, type);
|
|
}
|
|
|
|
/* 80048144-8004817C 042A84 0038+00 0/0 12/12 0/0 .text getMySubstanceNum__16dEvent_manager_cFiPCc
|
|
*/
|
|
int dEvent_manager_c::getMySubstanceNum(int index, char const* name) {
|
|
dEvDtData_c* data = getMyDataP(index, name, 0);
|
|
if (data == NULL) {
|
|
return NULL;
|
|
} else {
|
|
return data->getNumber();
|
|
}
|
|
}
|
|
|
|
/* 8004817C-800481F4 042ABC 0078+00 1/1 78/78 182/182 .text cutEnd__16dEvent_manager_cFi
|
|
*/
|
|
#ifdef NONMATCHING
|
|
void dEvent_manager_c::cutEnd(int index) {
|
|
if (dComIfGp_getEvent().getMode() == 0) {
|
|
return;
|
|
} else if (index == -1) {
|
|
return;
|
|
} else if (field_0x1aa == -1) {
|
|
return;
|
|
} else {
|
|
// instruction swap
|
|
mFlags.flagSet(getBase().getCutStaffCurrentCutP(index)->getFlagId());
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dEvent_manager_c::cutEnd(int param_0) {
|
|
nofralloc
|
|
#include "asm/d/event/d_event_manager/cutEnd__16dEvent_manager_cFi.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 800481F4-800482CC 042B34 00D8+00 0/0 4/4 0/0 .text
|
|
* getEventPrio__16dEvent_manager_cFP10fopAc_ac_cs */
|
|
int dEvent_manager_c::getEventPrio(fopAc_ac_c* pActor, s16 eventCompositId) {
|
|
dEvDtEvent_c* event = NULL;
|
|
dEvDtBase_c eventBase;
|
|
if (getTypeCompositId(eventCompositId) == 2 && pActor != NULL &&
|
|
pActor->mEvtInfo.getArchiveName() != NULL) {
|
|
char* data = (char*)dComIfG_getObjectRes(pActor->mEvtInfo.getArchiveName(), DataFileName);
|
|
eventBase.init(data, -1);
|
|
event = eventBase.mEventP;
|
|
}
|
|
if (event == NULL) {
|
|
event = getEventData(eventCompositId);
|
|
}
|
|
if (event == NULL) {
|
|
return 0;
|
|
} else {
|
|
return event->getPriority();
|
|
}
|
|
}
|
|
|
|
/* 800482CC-80048348 042C0C 007C+00 1/1 1/1 0/0 .text issueStaff__16dEvent_manager_cFPCc
|
|
*/
|
|
void dEvent_manager_c::issueStaff(char const* pName) {
|
|
if (!strcmp(pName, "ALL")) {
|
|
fopAcM_Search((fopAcIt_JudgeFunc)extraOnObjectCallBack, NULL);
|
|
} else {
|
|
char nameBuf[0x20];
|
|
strcpy(nameBuf, pName);
|
|
fopAcM_OnStatus(fopAcM_searchFromName4Event(nameBuf, -1), 0x800);
|
|
}
|
|
}
|
|
|
|
/* 80048348-800483C4 042C88 007C+00 0/0 1/1 0/0 .text cancelStaff__16dEvent_manager_cFPCc
|
|
*/
|
|
void dEvent_manager_c::cancelStaff(char const* pName) {
|
|
if (!strcmp(pName, "ALL")) {
|
|
fopAcM_Search((fopAcIt_JudgeFunc)extraOffObjectCallBack, NULL);
|
|
} else {
|
|
char nameBuf[0x20];
|
|
strcpy(nameBuf, pName);
|
|
fopAcM_OffStatus(fopAcM_searchFromName4Event(nameBuf, -1), 0x800);
|
|
}
|
|
}
|
|
|
|
/* 800483C4-800483E0 042D04 001C+00 1/1 2/2 38/38 .text setGoal__16dEvent_manager_cFP4cXyz */
|
|
void dEvent_manager_c::setGoal(cXyz* pGoal) {
|
|
mGoal = *pGoal;
|
|
}
|
|
|
|
/* 800483E0-800483E8 042D20 0008+00 0/0 1/1 1/1 .text getGoal__16dEvent_manager_cFv */
|
|
cXyz* dEvent_manager_c::getGoal() {
|
|
return &mGoal;
|
|
}
|
|
|
|
/* 800483E8-8004846C 042D28 0084+00 0/0 5/5 27/27 .text getRunEventName__16dEvent_manager_cFv */
|
|
const char* dEvent_manager_c::getRunEventName() {
|
|
if (mCurrentEventCompositId == -1) {
|
|
return "NO DATA";
|
|
}
|
|
if (getBase().getHeaderP() == NULL) {
|
|
return "NO DATA";
|
|
}
|
|
dEvDtEvent_c* event = getEventData(mCurrentEventCompositId);
|
|
if (event != NULL && event->mEventState == 1) {
|
|
return event->getName();
|
|
} else {
|
|
return "NOT RUNNING";
|
|
}
|
|
}
|
|
|
|
struct FindShtrCbPrms {
|
|
s16 mBsTypeId;
|
|
fopAc_ac_c* mActor;
|
|
};
|
|
|
|
/* 8004846C-80048520 042DAC 00B4+00 1/1 0/0 0/0 .text findShutterCallBack__FP10fopAc_ac_cPv */
|
|
static fopAc_ac_c* findShutterCallBack(fopAc_ac_c* pActor, void* param_1) {
|
|
FindShtrCbPrms* prms = (FindShtrCbPrms*)param_1;
|
|
if (prms->mBsTypeId != fpcAcM_GetProfName(pActor)) {
|
|
return NULL;
|
|
}
|
|
cXyz diff = pActor->mOrig.mPosition - prms->mActor->mOrig.mPosition;
|
|
if (diff.x < 10 && diff.x > -10 && diff.y < 10 && diff.y > -10 && diff.z < 10 && diff.z > -10) {
|
|
return pActor;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
/* 80048520-80048618 042E60 00F8+00 1/1 0/0 0/0 .text specialCast_Shutter__16dEvent_manager_cFsi
|
|
*/
|
|
fopAc_ac_c* dEvent_manager_c::specialCast_Shutter(s16 bsTypeId, int param_1) {
|
|
FindShtrCbPrms prms;
|
|
prms.mBsTypeId = bsTypeId;
|
|
prms.mActor = (fopAc_ac_c*)dComIfGp_getPlayer(0);
|
|
fopAc_ac_c* shutterActor =
|
|
(fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)findShutterCallBack, &prms);
|
|
if (shutterActor != NULL && param_1 != 0) {
|
|
cXyz goal(shutterActor->mOrig.mPosition);
|
|
s16 angle = prms.mActor->mOrig.mAngle.y + 0x8000;
|
|
goal.x += cM_ssin(angle) * 100;
|
|
goal.z += cM_scos(angle) * 100;
|
|
this->setGoal(&goal);
|
|
dComIfGp_getEvent().setPt2(shutterActor);
|
|
dComIfGp_getEvent().setPtD(shutterActor);
|
|
}
|
|
return shutterActor;
|
|
}
|
|
|
|
/* 80048618-80048748 042F58 0130+00 1/1 0/0 0/0 .text specialCast__16dEvent_manager_cFPCci */
|
|
fopAc_ac_c* dEvent_manager_c::specialCast(char const* pName, int param_1) {
|
|
fopAc_ac_c* shutterActor = NULL;
|
|
if (pName == NULL) {
|
|
return NULL;
|
|
}
|
|
if (!strcmp(pName, "SHUTTER_DOOR")) {
|
|
shutterActor = specialCast_Shutter(0x226, param_1);
|
|
if (shutterActor == NULL) {
|
|
shutterActor = specialCast_Shutter(0x228, param_1);
|
|
}
|
|
if (shutterActor == NULL) {
|
|
shutterActor = specialCast_Shutter(0x229, param_1);
|
|
}
|
|
if (shutterActor == NULL) {
|
|
shutterActor = specialCast_Shutter(0x22A, param_1);
|
|
}
|
|
if (shutterActor == NULL) {
|
|
shutterActor = specialCast_Shutter(0x22B, param_1);
|
|
}
|
|
if (shutterActor != NULL) {
|
|
dComIfGp_getEvent().onEventFlag(0x10);
|
|
}
|
|
}
|
|
if (shutterActor != NULL) {
|
|
if (param_1 != 0) {
|
|
fopAcM_OnStatus(shutterActor, 0x1000);
|
|
} else {
|
|
fopAcM_OffStatus(shutterActor, 0x1000);
|
|
}
|
|
}
|
|
return shutterActor;
|
|
}
|
|
|
|
/* 80048748-800487F0 043088 00A8+00 1/1 0/0 0/0 .text dEv_talkman_get_action__Fi */
|
|
static int dEv_talkman_get_action(int param_0) {
|
|
int staffId = dComIfGp_getEventManager().getMyStaffId("TALKMAN", NULL, -1);
|
|
if (staffId == -1) {
|
|
return -1;
|
|
} else {
|
|
/* 803A82A8-803A82B8 -00001 000C+04 1/1 0/0 0/0 .data action_table$5100 */
|
|
static char* action_table[] = {
|
|
"WAIT",
|
|
"TALK0",
|
|
"TALK1",
|
|
};
|
|
int actIdx = dComIfGp_getEventManager().getMyActIdx(staffId, action_table,
|
|
ARRAY_SIZE(action_table), 0, 0);
|
|
if (actIdx == param_0) {
|
|
dComIfGp_getEventManager().cutEnd(staffId);
|
|
}
|
|
return actIdx;
|
|
}
|
|
}
|
|
|
|
/* 800487F0-8004882C 043130 003C+00 0/0 0/0 108/108 .text ChkPresentEnd__16dEvent_manager_cFv */
|
|
int dEvent_manager_c::ChkPresentEnd() {
|
|
return dEv_talkman_get_action(0) >= 1;
|
|
}
|
|
|
|
/* 8004882C-8004886C 04316C 0040+00 0/0 2/2 2/2 .text checkStartDemo__16dEvent_manager_cFv */
|
|
int dEvent_manager_c::checkStartDemo() {
|
|
if (!dComIfGp_getEvent().runCheck()) {
|
|
return 0;
|
|
}
|
|
if (mEventException.mEventInfoIdx == -1) {
|
|
return 0;
|
|
}
|
|
if (mEventException.mEventInfoIdx == -2) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 80379F60-80379F60 0065C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|