// // Generated by dtk // Translation Unit: d_event_manager.cpp // #include "d/d_event_manager.h" #include "d/d_com_inf_game.h" #include "d/d_procname.h" /* 800737DC-800737F4 .text init__18dEvent_exception_cFv */ void dEvent_exception_c::init() { mEventInfoIdx = -1; field_0x4 = -1; mState = 0; } /* 800737F4-80073900 .text setStartDemo__18dEvent_exception_cFi */ int dEvent_exception_c::setStartDemo(int eventInfoIdx) { dStage_EventInfo_c* stageEventInfo = dComIfGp_getStageEventInfo(); if (eventInfoIdx == 0xFF) { mEventInfoIdx = 206; return 0xFF; } else if (eventInfoIdx >= 200) { mEventInfoIdx = eventInfoIdx; return eventInfoIdx; } else { if (stageEventInfo == NULL) { return 0xFF; } else if (eventInfoIdx == -1 || stageEventInfo->num < eventInfoIdx) { return 0xFF; } else { u8 switchNo = stageEventInfo->events[eventInfoIdx].field_0x13; if (switchNo != 0xFF) { if (dComIfGs_isSwitch(switchNo, dComIfGp_roomControl_getStayNo())) { mEventInfoIdx = 206; return 0xFF; } dComIfGs_onSwitch(switchNo, dComIfGp_roomControl_getStayNo()); } mEventInfoIdx = eventInfoIdx; } } return eventInfoIdx; } /* 80073900-80073A48 .text getEventName__18dEvent_exception_cFv */ const char* dEvent_exception_c::getEventName() { static const char* soecial_table[] = { "NORMAL_COMEBACK", "MAGMA_COMEBACK", "TORNADO_COMEBACK", "TIMEWARP_COMEBACK", "SHIP_COMEBACK", "DEFAULT_START", "SHUTTER_START", "SHUTTER_START_STOP", "BS_SHUTTER_START", "KNOB_START", "KNOB_START_B", "FMASTER_START", "FALL_START", }; dStage_EventInfo_c* stageEventInfo = dComIfGp_getStageEventInfo(); stage_stag_info_class* stage_info = dComIfGp_getStageStagInfo(); if (mEventInfoIdx == -1) return NULL; if (mEventInfoIdx == 207) { JUT_ASSERT(0x9b, stage_info); if (dStage_stagInfo_GetSTType(stage_info) == dStageType_BOSS_e) return "BS_SHUTTER_START"; } s32 idx = mEventInfoIdx; if (idx > 0xc8 && idx < 0xd6) { return soecial_table[idx - 0xc9]; } else { if (stageEventInfo == NULL) return NULL; if (stageEventInfo->num < idx) return NULL; return stageEventInfo->events[idx].mName; } return NULL; } /* 80073A48-80073A4C .text debugBfProc__16dEvent_manager_cFv */ void dEvent_manager_c::debugBfProc() { } enum { dEvtSub_FLOAT_e, dEvtSub_XYZ_e, dEvtSub_UNK2_e, dEvtSub_INT_e, dEvtSub_STR_e, }; /* 80073A4C-80073BC0 .text getSubstance__16dEvent_manager_cFP11dEvDtData_ci */ void* dEvent_manager_c::getSubstance(dEvDtData_c* data, int type) { if (data->getIndex() < 0 || data->getNumber() <= 0) { JUT_ASSERT(0x169, 0); return NULL; } if (type != -1 && type != data->getType()) { JUT_ASSERT(0x16e, 0); } s32 index; switch (data->getType()) { case dEvtSub_FLOAT_e: case dEvtSub_XYZ_e: case dEvtSub_UNK2_e: index = data->getIndex(); return mList.getFDataP(index); case dEvtSub_INT_e: index = data->getIndex(); return mList.getIDataP(index); case dEvtSub_STR_e: index = data->getIndex(); return mList.getSDataP(index); default: JUT_ASSERT(0x182, 0); return NULL; } } /* 80073BC0-80073C94 .text setData__16dEvent_manager_cFPCc */ void dEvent_manager_c::setData(const char* data) { if (data == NULL) return; mList.setHeaderP((event_binary_data_header*)data); if (mList.getEventNum() > 0) mList.setEventP((dEvDtEvent_c*)(data + mList.getEventTop())); if (mList.getStaffNum() > 0) mList.setStaffP((dEvDtStaff_c*)(data + mList.getStaffTop())); if (mList.getCutNum() > 0) mList.setCutP((dEvDtCut_c*)(data + mList.getCutTop())); if (mList.getDataNum() > 0) mList.setDataP((dEvDtData_c*)(data + mList.getDataTop())); if (mList.getFDataNum() > 0) mList.setFDataP((f32*)(data + mList.getFDataTop())); if (mList.getIDataNum() > 0) mList.setIDataP((int*)(data + mList.getIDataTop())); if (mList.getSDataNum() > 0) mList.setSDataP((char*)(data + mList.getSDataTop())); } /* 80073C94-80073D10 .text create__16dEvent_manager_cFv */ BOOL dEvent_manager_c::create() { mList.init(); mCameraPlay = 0; mException.init(); mFlag.init(); setData((const char*)dComIfG_getStageRes("Stage", "event_list.dat")); return TRUE; } /* 80073D10-80073D54 .text remove__16dEvent_manager_cFv */ void dEvent_manager_c::remove() { mList.init(); mCameraPlay = 0; mException.init(); mFlag.init(); } /* 80073D54-80073E00 .text findObjectCallBack__FP10fopAc_ac_cPv */ static void* findObjectCallBack(fopAc_ac_c* actor, void* work) { dEv_seach_prm* prm = (dEv_seach_prm*)work; if (prm == NULL) return NULL; dStage_objectNameInf* inf = dStage_searchName(prm->mName); if (inf == NULL) return NULL; if (inf->mProcName == fopAcM_GetProfName(actor) && inf->mSubtype == actor->subtype && (prm->mMask == 0 || (prm->mValue == (prm->mMask & fopAcM_GetParam(actor))))) return actor; return NULL; } /* 80073E00-80073F14 .text extraOnObjectCallBack__FP10fopAc_ac_cPv */ static void* extraOnObjectCallBack(fopAc_ac_c* actor, void* work) { dEv_seach_prm* prm = (dEv_seach_prm*)work; if (prm == NULL) return NULL; const char* name = prm->mName; if (strcmp(name, "ALL") == 0) { fopAcM_OnStatus(actor, fopAcStts_UNK800_e); if (prm->mCastInFlag & 1) fopAcM_OnStatus(actor, fopAcStts_FORCEMOVE_e); return NULL; } else { dStage_objectNameInf* inf = dStage_searchName(name); if (inf == NULL) return NULL; if (inf->mProcName == fopAcM_GetProfName(actor) && inf->mSubtype == actor->subtype && (prm->mMask == 0 || (prm->mValue == (prm->mMask & fopAcM_GetParam(actor))))) { fopAcM_OnStatus(actor, fopAcStts_UNK800_e); if (prm->mCastInFlag & 1) fopAcM_OnStatus(actor, fopAcStts_FORCEMOVE_e); } return NULL; } } /* 80073F14-80073FD4 .text extraOffObjectCallBack__FP10fopAc_ac_cPv */ static void* extraOffObjectCallBack(fopAc_ac_c* actor, void* work) { const char* name = (const char*)work; if (strcmp(name, "ALL") == 0) { fopAcM_OffStatus(actor, fopAcStts_UNK800_e); fopAcM_OffStatus(actor, fopAcStts_FORCEMOVE_e); return NULL; } else { dStage_objectNameInf* inf = dStage_searchName(name); if (inf == NULL) return NULL; if (inf->mProcName == fopAcM_GetProfName(actor) && inf->mSubtype == actor->subtype) { fopAcM_OffStatus(actor, fopAcStts_UNK800_e); } return NULL; } } /* 80073FD4-80073FF0 .text allOffObjectCallBack__FP10fopAc_ac_cPv */ static void* allOffObjectCallBack(fopAc_ac_c* actor, void*) { fopAcM_OffStatus(actor, fopAcStts_UNK800_e | fopAcStts_UNK1000_e | fopAcStts_FORCEMOVE_e); return NULL; } /* 80073FF0-80074108 .text startProc__16dEvent_manager_cFP12dEvDtEvent_c */ void dEvent_manager_c::startProc(dEvDtEvent_c* event) { dEv_seach_prm prm(NULL, 0, 0); for (s32 i = 0; i < event->getNStaff(); i++) { int staffIdx = event->getStaff(i); dEvDtStaff_c* staff = mList.getStaffP(staffIdx); if (staff->getType() == dEvDtStaff_c::NORMAL_e) { fopAc_ac_c* actor = specialCast(staff->getName(), 1); if (actor == NULL) { setPrmStaff(&prm, staffIdx); actor = fopAcM_Search((fopAcIt_JudgeFunc)findObjectCallBack, &prm); } if (actor != NULL) { fopAcM_OnStatus(actor, fopAcStts_FORCEMOVE_e); } } if (staff->getType() == dEvDtStaff_c::ALL_e) { setPrmStaff(&prm, staffIdx); fopAcM_Search((fopAcIt_JudgeFunc)extraOnObjectCallBack, &prm); } staff->init(); } event->mEventState = dEvDtEvent_c::PLAY_e; mFlag.init(); } /* 80074108-80074114 .text closeProc__16dEvent_manager_cFP12dEvDtEvent_c */ void dEvent_manager_c::closeProc(dEvDtEvent_c* event) { event->mEventState = dEvDtEvent_c::CLOSE_e; } /* 80074114-800741D4 .text endProc__16dEvent_manager_cFsi */ void dEvent_manager_c::endProc(s16 eventIdx, int act) { dEvDtEvent_c* event = getEventData(eventIdx); if (event == NULL) { JUT_ASSERT(0x2ec, 0); return; } if (act) closeProc(event); if (event->mEventState == dEvDtEvent_c::CLOSE_e) { const char* all = "ALL"; fopAcIt_Judge((fopAcIt_JudgeFunc)allOffObjectCallBack, (void*)all); mCameraPlay = 0; event->mEventState = dEvDtEvent_c::NONE_e; } } /* 800741D4-80074324 .text mainProc__16dEvent_manager_cFv */ void dEvent_manager_c::mainProc() { if (mList.mHeaderP != NULL) { dEvDtEvent_c* event; s32 i; for (i = 0; i < mList.mHeaderP->eventNum; i++) { event = &mList.mEventP[i]; if (event->mEventState == dEvDtEvent_c::PLAY_e && event->finish_check()) closeProc(event); } for (i = 0; i < mList.mHeaderP->eventNum; i++) { event = &mList.mEventP[i]; if (event->mEventState == dEvDtEvent_c::ORDER_e) startProc(event); } for (i = 0; i < mList.mHeaderP->eventNum; i++) { event = &mList.mEventP[i]; if (event->mEventState == dEvDtEvent_c::PLAY_e) mList.advanceCut(event); } for (i = 0; i < mList.mHeaderP->eventNum; i++) { event = &mList.mEventP[i]; if (event->mEventState == dEvDtEvent_c::PLAY_e) event->specialStaffProc(mList.mStaffP); } } } /* 80074324-80074370 .text runProc__16dEvent_manager_cFv */ void dEvent_manager_c::runProc() { exceptionProc(); debugBfProc(); dComIfGp_event_check(); mainProc(); } /* 80074370-800743AC .text getEventData__16dEvent_manager_cFs */ dEvDtEvent_c* dEvent_manager_c::getEventData(s16 eventIdx) { if (mList.mHeaderP == NULL || eventIdx < 0 || eventIdx >= mList.mHeaderP->eventNum) return NULL; return &mList.mEventP[eventIdx]; } /* 800743AC-800744AC .text getEventIdx__16dEvent_manager_cFPCcUc */ s16 dEvent_manager_c::getEventIdx(const char* eventName, u8 eventInfoIdx) { dStage_EventInfo_c* stageEventInfo = dComIfGp_getStageEventInfo(); if (mList.mHeaderP == NULL) return -1; if (stageEventInfo != NULL && eventInfoIdx != 0xFF && stageEventInfo->num > eventInfoIdx) return getEventIdx(stageEventInfo->events[eventInfoIdx].mName, 0xFF); if (eventName == NULL) return -1; for (s32 i = 0; i < mList.mHeaderP->eventNum; i++) { if (strcmp(eventName, mList.mEventP[i].getName()) == 0) return i; } return -1; } /* 800744AC-800744E8 .text order__16dEvent_manager_cFs */ BOOL dEvent_manager_c::order(s16 eventIdx) { dEvDtEvent_c* event = getEventData(eventIdx); if (event == NULL) return FALSE; event->mEventState = dEvDtEvent_c::ORDER_e; return TRUE; } /* 800744E8-80074528 .text startCheck__16dEvent_manager_cFs */ BOOL dEvent_manager_c::startCheck(s16 eventIdx) { dEvDtEvent_c* event = getEventData(eventIdx); if (event == NULL) return FALSE; return (event->mEventState == dEvDtEvent_c::PLAY_e) ? TRUE : FALSE; } /* 80074528-80074564 .text startCheckOld__16dEvent_manager_cFPCc */ BOOL dEvent_manager_c::startCheckOld(const char* eventName) { return startCheck(getEventIdx(eventName, 0xFF)); } /* 80074564-800745A4 .text endCheck__16dEvent_manager_cFs */ BOOL dEvent_manager_c::endCheck(s16 eventIdx) { dEvDtEvent_c* event = getEventData(eventIdx); if (event == NULL) return FALSE; return (event->mEventState == dEvDtEvent_c::CLOSE_e) ? TRUE : FALSE; } /* 800745A4-800745E0 .text endCheckOld__16dEvent_manager_cFPCc */ BOOL dEvent_manager_c::endCheckOld(const char* eventName) { return endCheck(getEventIdx(eventName, 0xFF)); } /* 800745E0-80074718 .text getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci */ int dEvent_manager_c::getMyStaffId(const char* name, fopAc_ac_c* actor, int tagId) { if (dComIfGp_event_getMode() == dEvtMode_NONE_e) return -1; if (mList.getHeaderP() == NULL) return -1; if (actor && !fopAcM_CheckStatus(actor, fopAcStts_FORCEMOVE_e)) return -1; for (s32 i = 0; i < mList.getEventNum(); i++) { dEvDtEvent_c* event = mList.getEventP(i); if (event->mEventState == dEvDtEvent_c::PLAY_e || event->mEventState == dEvDtEvent_c::CLOSE_e || event->mEventState == dEvDtEvent_c::UNK3_e) { s32 nStaff = event->getNStaff(); for (s32 j = 0; j < nStaff; j++) { int staffIdx = event->getStaff(j); dEvDtStaff_c* staff = mList.getStaffP(staffIdx); if (staff->mStaffType != dEvDtStaff_c::ALL_e && strcmp(name, staff->getName()) == 0 && tagId == staff->getTagID()) return staffIdx; } } } return -1; } /* 80074718-8007473C .text getIsAddvance__16dEvent_manager_cFi */ BOOL dEvent_manager_c::getIsAddvance(int staffIdx) { if (staffIdx == -1) return FALSE; return mList.getStaffP(staffIdx)->mAdvance; } /* 8007473C-80074824 .text dEvmng_strcmp__FPCcPc */ int dEvmng_strcmp(const char* s1, char* s2) { u32 len1 = strlen(s1); u32 len2 = strlen(s2); if (len1 >= 100 || len2 >= 100) { JUT_ASSERT(0x44a, 0); return -1; } if (len1 > len2) return 1; for (int i = 0; i < len1; i++) { if (s1[i] != s2[i]) return 1; } return 0; } /* 80074824-80074964 .text getMyActIdx__16dEvent_manager_cFiPCPCciii */ int dEvent_manager_c::getMyActIdx(int staffIdx, const char* const* action, int actionNum, int force, int nameType) { if (staffIdx == -1) return -1; dEvDtStaff_c* staff = mList.getStaffP(staffIdx); if (staff->mbHasAction && !force) return staff->mCurActionIdx; s32 i; char* name = getMyNowCutName(staffIdx); if (name == NULL) return -1; staff->mbHasAction = true; for (i = 0; i < actionNum; i++) { JUT_ASSERT(0x46a, action[i]); if (nameType != 0) { if (dEvmng_strcmp(action[i], name) == 0) { staff->mCurActionIdx = i; return i; } } else { if (strcmp(action[i], name) == 0) { staff->mCurActionIdx = i; return i; } } } staff->mCurActionIdx = -1; return -1; } /* 80074964-800749A0 .text getMyActName__16dEvent_manager_cFi */ char* dEvent_manager_c::getMyActName(int staffIdx) { if (staffIdx == -1) return NULL; char* cutName = getMyNowCutName(staffIdx); if (cutName == NULL) return NULL; return cutName; } /* 800749A0-800749D0 .text getMyNowCutName__16dEvent_manager_cFi */ char* dEvent_manager_c::getMyNowCutName(int staffIdx) { if (staffIdx == -1) return NULL; return mList.getCutStaffCurrentCutP(staffIdx)->getName(); } /* 800749D0-80074AA0 .text getMyDataP__16dEvent_manager_cFiPCci */ dEvDtData_c* dEvent_manager_c::getMyDataP(int staffIdx, const char* name, int mode) { if (staffIdx == -1) return NULL; dEvDtCut_c* cut; if (mode != 0) cut = mList.getCutStaffStartCutP(staffIdx); else cut = mList.getCutStaffCurrentCutP(staffIdx); s32 dataIdx = cut->getDataTop(); while (dataIdx != -1) { dEvDtData_c* data = mList.getDataP(dataIdx); if (strcmp(name, data->getName()) == 0) return data; dataIdx = data->getNext(); } return NULL; } /* 80074AA0-80074AF8 .text getMySubstanceP__16dEvent_manager_cFiPCci */ void* dEvent_manager_c::getMySubstanceP(int staffIdx, const char* name, int type) { dEvDtData_c* data = getMyDataP(staffIdx, name, 0); if (data == NULL) return 0; return getSubstance(data, type); } /* 80074AF8-80074B30 .text getMySubstanceNum__16dEvent_manager_cFiPCc */ s32 dEvent_manager_c::getMySubstanceNum(int staffIdx, const char* name) { dEvDtData_c* data = getMyDataP(staffIdx, name, 0); if (data == NULL) return 0; return data->mSubstanceSize; } /* 80074B30-80074B7C .text cutEnd__16dEvent_manager_cFi */ void dEvent_manager_c::cutEnd(int staffIdx) { if (staffIdx == -1) return; dEvDtCut_c* cut = mList.getCutStaffCurrentCutP(staffIdx); getFlags().flagSet(cut->getFlagId()); } /* 80074B7C-80074BB0 .text getEventPrio__16dEvent_manager_cFs */ u32 dEvent_manager_c::getEventPrio(s16 eventIdx) { dEvDtEvent_c* event = getEventData(eventIdx); if (event == NULL) return 0; return event->getPriority(); } /* 80074BB0-80074BE4 .text getEventEndSound__16dEvent_manager_cFs */ u8 dEvent_manager_c::getEventEndSound(s16 eventIdx) { dEvDtEvent_c* event = getEventData(eventIdx); if (event == NULL) return 0; return event->getEndSound(); } /* 80074BE4-80074D78 .text exceptionProc__16dEvent_manager_cFv */ void dEvent_manager_c::exceptionProc() { const char* eventName = mException.getEventName(); s16 eventIdx = getEventIdx(eventName, 0xFF); if (eventIdx == -1) { mException.mEventInfoIdx = -1; return; } u8 mapToolID; if (200 <= mException.mEventInfoIdx) { mapToolID = 0xFF; } else { mapToolID = mException.mEventInfoIdx; } switch (mException.mState) { case 0: mException.mState = 1; fopAcM_orderOtherEventId(NULL, eventIdx, mapToolID); break; case 1: if (startCheck(eventIdx)) { mException.mState = 2; if (strcmp(eventName, "MEETSHISHIOH") == 0) dComIfGs_onEventBit(0x0F80); if (strcmp(eventName, "look_tetra") == 0) dComIfGs_onEventBit(0x0280); } else { fopAcM_orderOtherEvent2(NULL, (char*)eventName, dEvtFlag_NOPARTNER_e); } break; case 2: if (endCheck(eventIdx)) { dComIfGp_event_reset(); mException.mState = 0; mException.mEventInfoIdx = -1; } break; } } static void dummy1() { OSReport("EVENT_DEBUG_OFF"); } /* 80074D78-80074DB4 .text issueStaff__16dEvent_manager_cFPCc */ void dEvent_manager_c::issueStaff(const char* name) { dEv_seach_prm prm(name, 0, 0); fopAcIt_Judge((fopAcIt_JudgeFunc)extraOnObjectCallBack, &prm); } /* 80074DB4-80074DDC .text cancelStaff__16dEvent_manager_cFPCc */ void dEvent_manager_c::cancelStaff(const char* name) { fopAcIt_Judge((fopAcIt_JudgeFunc)extraOffObjectCallBack, (void*)name); } /* 80074DDC-80074DF8 .text setGoal__16dEvent_manager_cFP4cXyz */ void dEvent_manager_c::setGoal(cXyz* goal) { mGoal.set(*goal); } /* 80074DF8-80074E00 .text getGoal__16dEvent_manager_cFv */ cXyz* dEvent_manager_c::getGoal() { return &mGoal; } struct find_shutter_param { s16 profName; fopAc_ac_c* actor; }; /* 80074E00-80074EB4 .text findShutterCallBack__FP10fopAc_ac_cPv */ static fopAc_ac_c* findShutterCallBack(fopAc_ac_c* actor, void* user) { find_shutter_param* param = (find_shutter_param*)user; if (param->profName != fopAcM_GetProfName(actor)) return NULL; cXyz diff = actor->home.pos - param->actor->home.pos; if (diff.x < 10.0f && diff.x > -10.0f && diff.y < 10.0f && diff.y > -10.0f && diff.z < 10.0f && diff.z > -10.0f) return actor; return NULL; } /* 80074EB4-80074FE8 .text specialCast_Shutter__16dEvent_manager_cFsi */ fopAc_ac_c* dEvent_manager_c::specialCast_Shutter(s16 profName, int flag) { find_shutter_param param; param.profName = profName; param.actor = dComIfGp_getPlayer(0); if (dComIfGp_getPlayer(0) == NULL) JUT_ASSERT(0x623, 0); fopAc_ac_c* shutter = (fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)findShutterCallBack, ¶m); if (shutter != NULL && flag) { cXyz goal = shutter->home.pos; s16 angle = param.actor->home.angle.y + 0x8000; goal.x += cM_ssin(angle) * 100.0f; goal.z += cM_scos(angle) * 100.0f; dComIfGp_evmng_setGoal(&goal); g_dComIfG_gameInfo.play.getEvent().setPt2(shutter); } return shutter; } /* 80074FE8-800750FC .text specialCast__16dEvent_manager_cFPCci */ fopAc_ac_c* dEvent_manager_c::specialCast(const char* name, int flag) { fopAc_ac_c* actor = NULL; if (name == NULL) return NULL; if (strcmp(name, "SHUTTER_DOOR") == 0) { actor = specialCast_Shutter(PROC_DOOR10, flag); if (actor == NULL) actor = specialCast_Shutter(PROC_DOOR12, flag); if (actor == NULL) actor = specialCast_Shutter(PROC_KDDOOR, flag); if (actor == NULL) actor = specialCast_Shutter(PROC_KNOB00, flag); if (actor != NULL) dComIfGp_event_onEventFlag(0x10); } if (actor != NULL) { if (flag) fopAcM_OnStatus(actor, fopAcStts_UNK1000_e); else fopAcM_OffStatus(actor, fopAcStts_UNK1000_e); } return actor; } /* 800750FC-80075288 .text setPrmStaff__16dEvent_manager_cFPvi */ void dEvent_manager_c::setPrmStaff(void* work, int staffIdx) { dEv_seach_prm* prm = (dEv_seach_prm*)work; dEvDtStaff_c* staff_data = mList.getStaffP(staffIdx); JUT_ASSERT(0x66b, staff_data); JUT_ASSERT(0x66c, prm); prm->mName = staff_data->getName(); dEvDtData_c* dev_prm_data = getMyDataP(staffIdx, "DEV_PRM_MASK", 1); if (dev_prm_data == NULL) { prm->mMask = 0; prm->mValue = 0; } else { int* i_data = (int*)getSubstance(dev_prm_data, dEvtSub_INT_e); JUT_ASSERT(0x678, i_data); prm->mMask = i_data[0]; prm->mValue = i_data[1]; } prm->mCastInFlag = 0; if (getMyDataP(staffIdx, "CAST_IN", 1) != NULL) prm->mCastInFlag |= 1; } /* 80075288-8007537C .text getToolId__16dEvent_manager_cFUci */ u8 dEvent_manager_c::getToolId(u8 r4, int r31) { dStage_EventInfo_c* eventInfo = dComIfGp_getStageEventInfo(); int r5 = r31; if (r4 == 0xFF) { return 0xFF; } if (eventInfo == NULL) { return 0xFF; } if (r4 >= eventInfo->num) { return 0xFF; } for (; r5 >= 0; r5--) { dStage_Event_dt_c* event = &eventInfo->events[r4]; if (event->field_0x12 == 0xFF) { if (r5 == 0) { return r4; } } else if (r31 == event->field_0x12) { return r4; } r4 = event->field_0x0; if (r4 == 0xFF) { return 0xFF; } } return 0xFF; } /* 8007537C-80075394 .text __ct__13dEv_seach_prmFPCcUlUl */ dEv_seach_prm::dEv_seach_prm(const char* name, u32 mask, u32 value) { mName = name; mMask = mask; mValue = value; mCastInFlag = 0; } /* 80075394-800753A8 .text dEv_extra_createCB__FPv */ int dEv_extra_createCB(void* actor) { fopAcM_OnStatus((fopAc_ac_c*)actor, fopAcStts_UNK800_e); return 4; } /* 800753A8-80075450 .text dEv_talkman_get_action__Fi */ static int dEv_talkman_get_action(int param_0) { static char* action_table[] = { "WAIT", "TALK0", "TALK1", }; int staffId = dComIfGp_evmng_getMyStaffId("TALKMAN"); if (staffId == -1) { return -1; } int actIdx = dComIfGp_evmng_getMyActIdx(staffId, action_table, ARRAY_SIZE(action_table), 0, 0); if (actIdx == param_0) { dComIfGp_evmng_cutEnd(staffId); } return actIdx; } /* 80075450-8007548C .text ChkPresentEnd__16dEvent_manager_cFv */ BOOL dEvent_manager_c::ChkPresentEnd() { return dEv_talkman_get_action(0) >= 1; } /* 8007548C-800754BC .text CancelPresent__16dEvent_manager_cFv */ BOOL dEvent_manager_c::CancelPresent() { return dEv_talkman_get_action(1) == 1; } /* 800754BC-800754EC .text checkStartDemo__16dEvent_manager_cFv */ BOOL dEvent_manager_c::checkStartDemo() { if (!dComIfGp_event_runCheck()) { return FALSE; } if (mException.mEventInfoIdx == -1) { return FALSE; } return TRUE; } static u8 daNpc_Tt_tact_table[] = { 0x00, 0x03, 0x04, 0x02, 0x01, }; // Fakematch: dEvmng_daNpc_Tt_Conv and dEvmng_daNpc_Tt_GetEvFlag are unused but need to appear in this TU for a match. // Strangely, these two functions do not appear in the debug symbol maps, but do appear in the non-debug maps for both // the demo and the full game. #pragma force_active on /* 800754EC-80075590 .text dEvmng_daNpc_Tt_Conv__FUc */ u8 dEvmng_daNpc_Tt_Conv(u8 param_0) { if (param_0 >= ARRAY_SIZE(daNpc_Tt_tact_table)) { JUT_ASSERT(1814, 0); } for (u8 i = 0; i < ARRAY_SIZE(daNpc_Tt_tact_table); i++) { if (daNpc_Tt_tact_table[i] == param_0) { return i; } } return 0; } /* 80075590-800755A4 .text dEvmng_daNpc_Tt_GetEvFlag__Fi */ u16 dEvmng_daNpc_Tt_GetEvFlag(int idx) { static u16 dance_table[] = { 0xFD1F, 0xFC1F, 0xFB1F, 0xFA1F, 0xF91F, }; return dance_table[idx]; }