// // Generated by dtk // Translation Unit: d_a_warpf.cpp // #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_warpf.h" #include "d/actor/d_a_player.h" #include "d/d_level_se.h" #include "d/d_item.h" #include "d/d_bg_s_func.h" #include "f_op/f_op_actor_mng.h" #include "f_op/f_op_kankyo_mng.h" #include "f_op/f_op_camera.h" #include "res/Object/Ysbwp00.h" #include "res/Object/Gtfglow.h" namespace daWarpf_prm { static inline u32 getSetType(daWarpf_c* i_this) { return fopAcM_GetParam(i_this) >> 0x1C; } } const char* daWarpf_c::m_arcname[] = { /* STAGE_SEA */ NULL, /* STAGE_SEA2 */ NULL, /* STAGE_FF */ NULL, /* STAGE_DRC */ NULL, /* STAGE_FW */ NULL, /* STAGE_TOTG */ "Ysbwp00", /* STAGE_ET */ "Gtfglow", /* STAGE_WT */ "Gtfglow", /* STAGE_GT */ NULL, /* STAGE_HYRULE */ NULL, /* STAGE_SHIP */ NULL, /* STAGE_MISC */ NULL, /* STAGE_SUBDUNGEON */ NULL, /* STAGE_SUBDUNGEON_NEW */ NULL, /* STAGE_BLUE_CHU_JELLY */ NULL, /* STAGE_TEST */ NULL, }; const f32 daWarpf_c::m_warp_size[] = { /* STAGE_SEA */ 100.0f, /* STAGE_SEA2 */ 100.0f, /* STAGE_FF */ 100.0f, /* STAGE_DRC */ 100.0f, /* STAGE_FW */ 100.0f, /* STAGE_TOTG */ 200.0f, /* STAGE_ET */ 100.0f, /* STAGE_WT */ 100.0f, /* STAGE_GT */ 100.0f, /* STAGE_HYRULE */ 100.0f, /* STAGE_SHIP */ 100.0f, /* STAGE_MISC */ 100.0f, /* STAGE_SUBDUNGEON */ 100.0f, /* STAGE_SUBDUNGEON_NEW */ 100.0f, /* STAGE_BLUE_CHU_JELLY */ 100.0f, /* STAGE_TEST */ 100.0f, }; /* 00000078-00000098 .text CheckCreateHeap__FP10fopAc_ac_c */ static BOOL CheckCreateHeap(fopAc_ac_c* i_this) { return ((daWarpf_c*)i_this)->CreateHeap(); } /* 00000098-00000A2C .text CreateHeap__9daWarpf_cFv */ BOOL daWarpf_c::CreateHeap() { J3DModelData* modelData; J3DAnmTevRegKey* pbrk; J3DAnmTransform* pbck; J3DAnmTextureSRTKey* pbtk; switch (mStageNo) { case dSv_save_c::STAGE_TOTG: modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_YSBWP00_BDL_YSBWP00_e); JUT_ASSERT(343, modelData != NULL); m2A8 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000222); if (m2A8 == NULL) { return FALSE; } pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_YSBWP00_BRK_YSBWP00_e); JUT_ASSERT(358, pbrk != NULL); m2AC = new mDoExt_brkAnm(); if (m2AC == NULL || !m2AC->init(modelData, pbrk, true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, 0)) { return FALSE; } pbck = (J3DAnmTransform*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_YSBWP00_BCK_YSBWP00_e); JUT_ASSERT(374, pbck != NULL); m2B0 = new mDoExt_bckAnm(); if (m2B0 == NULL || !m2B0->init(modelData, pbck, true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false)) { return FALSE; } pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_YSBWP00_BTK_YSBWP00_e); JUT_ASSERT(391, pbtk != NULL); m2B4 = new mDoExt_btkAnm(); if (m2B4 == NULL || !m2B4->init(modelData, pbtk, true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false)) { return FALSE; } break; case dSv_save_c::STAGE_ET: case dSv_save_c::STAGE_WT: if (!checkEndDemo()) { m2C0 = NULL; modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_GTFGLOW_BDL_GTFGLOW00_e); JUT_ASSERT(411, modelData != NULL); m2A8 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000022); if (m2A8 == NULL) { return FALSE; } pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_GTFGLOW_BRK_GTFGLOW00_e); JUT_ASSERT(424, pbrk != NULL); m2AC = new mDoExt_brkAnm(); if (m2AC == NULL || !m2AC->init(modelData, pbrk, true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, 0)) { return FALSE; } m2AC->setPlaySpeed(1.0f); pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_GTFGLOW_BRK_GTFGLOW01_e); JUT_ASSERT(441, pbrk != NULL); m2B8 = new mDoExt_brkAnm(); if (m2B8 == NULL || !m2B8->init(modelData, pbrk, true, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false, 0)) { return FALSE; } m2B8->setPlaySpeed(0.0f); pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_GTFGLOW_BRK_GTFGLOW02_e); JUT_ASSERT(457, pbrk != NULL); m2BC = new mDoExt_brkAnm(); if (m2BC == NULL || !m2BC->init(modelData, pbrk, true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, 0)) { return FALSE; } m2BC->setPlaySpeed(0.0f); } else { modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_GTFGLOW_BDL_GDEMO29_A00_e); JUT_ASSERT(474, modelData != NULL); m2A8 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000022); if (m2A8 == NULL) { return FALSE; } pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(m_arcname[mStageNo], DEMO_SELECT(dRes_INDEX_GTFGLOW_BRK_GDEMO29_A00_e, dRes_INDEX_GTFGLOW_BRK_GDEMO29_A01_e)); JUT_ASSERT(488, pbrk != NULL); m2AC = new mDoExt_brkAnm(); if (m2AC == NULL || !m2AC->init(modelData, pbrk, true, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false, 0)) { return FALSE; } m2AC->setPlaySpeed(1.0f); modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname[mStageNo], dRes_INDEX_GTFGLOW_BDL_GDEMO29_B00_e); JUT_ASSERT(504, modelData != NULL); m2C0 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000022); if (m2C0 == NULL) { return FALSE; } m2B8 = NULL; m2BC = NULL; } break; } return TRUE; } /* 00000A74-00000B58 .text _delete__9daWarpf_cFv */ bool daWarpf_c::_delete() { if (m290 != NULL) { m290->becomeInvalidEmitter(); m290 = NULL; } if (m294 != NULL) { m294->becomeInvalidEmitter(); m294 = NULL; } if (m298 != NULL) { m298->becomeInvalidEmitter(); m298 = NULL; } if (m29C != NULL) { m29C->becomeInvalidEmitter(); m29C = NULL; } if (m_arcname[mStageNo] != NULL) { dComIfG_resDelete(&mPhase, m_arcname[mStageNo]); } return true; } /* 00000B58-00000C34 .text checkEndDemo__9daWarpf_cFv */ BOOL daWarpf_c::checkEndDemo() { BOOL ret = 0; switch (mStageNo) { case dSv_save_c::STAGE_SEA: case dSv_save_c::STAGE_SEA2: case dSv_save_c::STAGE_FF: break; case dSv_save_c::STAGE_DRC: if (checkItemGet(dItemNo_PEARL_DIN_e, TRUE)) { ret = TRUE; } break; case dSv_save_c::STAGE_FW: if (checkItemGet(dItemNo_PEARL_FARORE_e, TRUE)) { ret = TRUE; } break; case dSv_save_c::STAGE_TOTG: if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_2D10)) { ret = TRUE; } break; case dSv_save_c::STAGE_ET: #if VERSION == VERSION_DEMO if (dComIfGs_checkGetItem(dItemNo_MASTER_SWORD_2_e)) { #else if (checkItemGet(dItemNo_MASTER_SWORD_2_e, TRUE)) { #endif ret = TRUE; } break; case dSv_save_c::STAGE_WT: if (dComIfGs_checkGetItem(dItemNo_MASTER_SWORD_3_e)) { ret = TRUE; } break; case dSv_save_c::STAGE_SUBDUNGEON_NEW: break; } return ret; } /* 00000C34-00000C38 .text onEndDemo__9daWarpf_cFv */ void daWarpf_c::onEndDemo() { } /* 00000C38-00000CFC .text CreateInit__9daWarpf_cFv */ cPhs_State daWarpf_c::CreateInit() { current.pos.y = get_earth_pos(); if (!dComIfGs_isStageBossEnemy()) { return cPhs_ERROR_e; } set_effect(); if (!checkEndDemo()) { m2D6 = dComIfGp_evmng_getEventIdx("WARP_WIND"); } else { m2D6 = dComIfGp_evmng_getEventIdx("WARP_WIND_AFTER"); setEndAnim(); } return cPhs_COMPLEATE_e; } /* 00000CFC-00000E74 .text _create__9daWarpf_cFv */ cPhs_State daWarpf_c::_create() { fopAcM_ct(this, daWarpf_c); mStageNo = dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()); cPhs_State phase = cPhs_COMPLEATE_e; if (m_arcname[mStageNo] != NULL) { phase = dComIfG_resLoad(&mPhase, m_arcname[mStageNo]); if (phase == cPhs_COMPLEATE_e) { if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x5000)) { return cPhs_ERROR_e; } } } if (phase == cPhs_COMPLEATE_e) { if (CreateInit() == cPhs_ERROR_e) { return cPhs_ERROR_e; } u32 seNum = JA_SE_OBJ_BOSS_WARP_LV; if (mStageNo == dSv_save_c::STAGE_TOTG) { seNum = JA_SE_OBJ_WARP_EFF_SUS; } else if ((mStageNo == dSv_save_c::STAGE_ET) || (mStageNo == dSv_save_c::STAGE_WT)) { seNum = JA_SE_OBJ_BOSS_TF_WARP_SUS; } m2E8 = (dLevelSe_c*)fopKyM_fastCreate(fpcNm_LEVEL_SE_e, seNum, ¤t.pos, NULL, NULL); if (m2E8 != NULL) { m2E8->seStop(); m2E8->setReverb(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); } } return phase; } /* 00000E74-00000ED0 .text _execute__9daWarpf_cFv */ bool daWarpf_c::_execute() { m2E4++; checkOrder(); demo_proc(); set_se(); eventOrder(); anim_play(); return true; } /* 00000ED0-00000F2C .text eventOrder__9daWarpf_cFv */ void daWarpf_c::eventOrder() { if (m2D0 == 1) { fopAcM_orderOtherEventId(this, m2D6); eventInfo.onCondition(dEvtCnd_UNK2_e); } } /* 00000F2C-00000FF0 .text checkOrder__9daWarpf_cFv */ void daWarpf_c::checkOrder() { if (eventInfo.checkCommandDemoAccrpt()) { if (dComIfGp_evmng_startCheck(m2D6) && m2D0 != 0) { m2D0 = 0; } if (dComIfGp_evmng_endCheck(m2D6)) { dComIfGp_event_reset(); fopAcM_delete(this); } } else if (m2D0 == 0) { if (check_warp_event()) { m2D0 = 1; } set_effect(); } } static daWarpf_c::InitFunc event_init_tbl[] = { &daWarpf_c::initWait, &daWarpf_c::initWarpStart, &daWarpf_c::initWarpMode_1, &daWarpf_c::initWarpMode_2, &daWarpf_c::initWarpMode_3, &daWarpf_c::initEndWait, }; static daWarpf_c::ActionFunc event_action_tbl[] = { &daWarpf_c::actWait, &daWarpf_c::actWarpStart, &daWarpf_c::actWarpMode_1, &daWarpf_c::actWarpMode_2, &daWarpf_c::actWarpMode_3, &daWarpf_c::actEndWait, }; /* 00000FF0-0000110C .text demo_proc__9daWarpf_cFv */ void daWarpf_c::demo_proc() { mStaffID = dComIfGp_evmng_getMyStaffId("Warpf"); if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk() && mStaffID != -1) { static char* action_table[] = { "WAIT", "WARP_START", "WARP_1", "WARP_2", "WARP_3", "END_WAIT", }; s32 actIdx = dComIfGp_evmng_getMyActIdx(mStaffID, action_table, ARRAY_SIZE(action_table), 0, 0); if (actIdx == -1) { dComIfGp_evmng_cutEnd(mStaffID); } else { if (dComIfGp_evmng_getIsAddvance(mStaffID)) { (this->*event_init_tbl[actIdx])(mStaffID); } BOOL ret = (this->*event_action_tbl[actIdx])(mStaffID); if (ret) { dComIfGp_evmng_cutEnd(mStaffID); } } } } /* 0000110C-000011E8 .text initWait__9daWarpf_cFi */ void daWarpf_c::initWait(int) { if (m294 != NULL) { m294->becomeInvalidEmitter(); m294 = NULL; } if (m298 != NULL) { m298->becomeInvalidEmitter(); m298 = NULL; } if (m29C != NULL) { m29C->becomeInvalidEmitter(); m29C = NULL; } cXyz local_18 = current.pos; local_18.y += 1000.0f; local_18.y = dBgS_ObjGndChk_Func(local_18); dComIfGp_evmng_setGoal(&local_18); } /* 000011E8-00001224 .text actWait__9daWarpf_cFi */ BOOL daWarpf_c::actWait(int) { if (m2E4 % 10 == 0) { set_effect_wind00(); } return TRUE; } /* 00001224-0000124C .text initWarpStart__9daWarpf_cFi */ void daWarpf_c::initWarpStart(int) { daPy_py_c* player = daPy_getPlayerActorClass(); m2EC = player->current.pos; } /* 0000124C-00001254 .text actWarpStart__9daWarpf_cFi */ BOOL daWarpf_c::actWarpStart(int) { return TRUE; } /* 00001254-00001260 .text initWarpMode_1__9daWarpf_cFi */ void daWarpf_c::initWarpMode_1(int) { mWarpTimer = 180; } /* 00001260-00001384 .text actWarpMode_1__9daWarpf_cFi */ BOOL daWarpf_c::actWarpMode_1(int) { if (cLib_calcTimer(&mWarpTimer) == 0) { if (mStageNo != dSv_save_c::STAGE_TOTG && mStageNo != dSv_save_c::STAGE_ET && mStageNo != dSv_save_c::STAGE_WT) { cXyz local_18 = current.pos; csXyz local_20 = get_angle_wind01(); local_18.y = m2EC.y + 100.0f; dComIfGp_particle_set(dPa_name::ID_AK_SN_BOSSWARPWIND01_820B, &local_18, &local_20); } return TRUE; } if (mWarpTimer == 80) { for (s32 i = 0; i < 6; i++) { set_effect_wind00(); } } set_effect(); return FALSE; } /* 00001384-00001390 .text initWarpMode_2__9daWarpf_cFi */ void daWarpf_c::initWarpMode_2(int) { mWarpTimer = 5; } /* 00001390-0000148C .text actWarpMode_2__9daWarpf_cFi */ BOOL daWarpf_c::actWarpMode_2(int) { if (cLib_calcTimer(&mWarpTimer) == 0) { if (mStageNo != dSv_save_c::STAGE_TOTG && mStageNo != dSv_save_c::STAGE_ET && mStageNo != dSv_save_c::STAGE_WT) { cXyz local_18 = current.pos; csXyz local_20 = get_angle_wind01(); local_18.y = m2EC.y + 120.0f; local_20.z += 0x38E; dComIfGp_particle_set(dPa_name::ID_AK_SN_BOSSWARPWIND01_820B, &local_18, &local_20); } return TRUE; } return FALSE; } /* 0000148C-00001498 .text initWarpMode_3__9daWarpf_cFi */ void daWarpf_c::initWarpMode_3(int) { mWarpTimer = 5; } /* 00001498-000015E8 .text actWarpMode_3__9daWarpf_cFi */ BOOL daWarpf_c::actWarpMode_3(int) { if (cLib_calcTimer(&mWarpTimer) == 0) { if (mStageNo != dSv_save_c::STAGE_TOTG && mStageNo != dSv_save_c::STAGE_ET && mStageNo != dSv_save_c::STAGE_WT) { cXyz local_18 = current.pos; csXyz local_20 = get_angle_wind01(); local_18.y = m2EC.y + 140.0f; local_20.y += 0x71C; dComIfGp_particle_set(dPa_name::ID_AK_SN_BOSSWARPWIND01_820B, &local_18, &local_20); } mDoAud_seStart(JA_SE_LK_BOSS_WARP_EFF_ST, NULL, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); onEndDemo(); return TRUE; } return FALSE; } /* 000015E8-000015EC .text initEndWait__9daWarpf_cFi */ void daWarpf_c::initEndWait(int) { } /* 000015EC-000015F4 .text actEndWait__9daWarpf_cFi */ BOOL daWarpf_c::actEndWait(int) { return TRUE; } /* 000015F4-0000171C .text check_warp_event__9daWarpf_cFv */ BOOL daWarpf_c::check_warp_event() { daPy_py_c* player = daPy_getPlayerActorClass(); f32 abs = (player->current.pos - current.pos).absXZ(); if (player->checkPlayerFly()) { return FALSE; } return abs < get_distance(); } /* 0000171C-00001788 .text get_distance__9daWarpf_cFv */ f32 daWarpf_c::get_distance() { if ((mStageNo == dSv_save_c::STAGE_ET || mStageNo == dSv_save_c::STAGE_WT) && checkEndDemo()) { return 190.0f; } return m_warp_size[mStageNo]; } /* 00001788-00001808 .text get_earth_pos__9daWarpf_cFv */ f32 daWarpf_c::get_earth_pos() { static const f32 l_earth_pos[] = { /* STAGE_SEA */ 0.0f, /* STAGE_SEA2 */ 0.0f, /* STAGE_FF */ 0.0f, /* STAGE_DRC */ -100.0f, /* STAGE_FW */ 100.0f, /* STAGE_TOTG */ 0.0f, /* STAGE_ET */ 0.0f, /* STAGE_WT */ 300.0f, /* STAGE_GT */ 0.0f, /* STAGE_HYRULE */ 0.0f, /* STAGE_SHIP */ 0.0f, /* STAGE_MISC */ 0.0f, /* STAGE_SUBDUNGEON */ 0.0f, /* STAGE_SUBDUNGEON_NEW */ 0.0f, /* STAGE_BLUE_CHU_JELLY */ 0.0f, /* STAGE_TEST */ 0.0f, }; static const f32 l_earth_pos_2nd[] = { /* STAGE_SEA */ 0.0f, /* STAGE_SEA2 */ 0.0f, /* STAGE_FF */ 0.0f, /* STAGE_DRC */ -100.0f, /* STAGE_FW */ 0.0f, /* STAGE_TOTG */ 0.0f, /* STAGE_ET */ 0.0f, /* STAGE_WT */ 300.0f, /* STAGE_GT */ 0.0f, /* STAGE_HYRULE */ 0.0f, /* STAGE_SHIP */ 0.0f, /* STAGE_MISC */ 0.0f, /* STAGE_SUBDUNGEON */ 0.0f, /* STAGE_SUBDUNGEON_NEW */ 0.0f, /* STAGE_BLUE_CHU_JELLY */ 0.0f, /* STAGE_TEST */ 0.0f, }; #if VERSION == VERSION_DEMO f32 earthPos; if (!checkEndDemo()) { earthPos = l_earth_pos[mStageNo]; } else { earthPos = l_earth_pos_2nd[mStageNo]; } return earthPos; #else if (!checkEndDemo()) { f32 earthPos = l_earth_pos[mStageNo]; if (mStageNo == dSv_save_c::STAGE_FW && daWarpf_prm::getSetType(this)) { earthPos = 0.0f; } return earthPos; } return l_earth_pos_2nd[mStageNo]; #endif } /* 00001808-00001C44 .text set_effect__9daWarpf_cFv */ void daWarpf_c::set_effect() { daPy_py_c* player = daPy_getPlayerActorClass(); f32 twok = 2000.0f; f32 twenty = 20.0f; f32 three = 3.0f; s32 iVar2 = twenty; f32 abs = (player->current.pos - current.pos).absXZ(); if (abs < twok && abs > get_distance()) { f32 tmp = abs - get_distance(); if (twenty != three) { iVar2 = tmp / twok * (twenty - three) + three; } } switch (mStageNo) { case dSv_save_c::STAGE_TOTG: if (m290 == NULL) { if (daWarpf_prm::getSetType(this) == 0) { dComIfGp_particle_set(dPa_name::ID_AK_SN_BSTWARP00, ¤t.pos); dComIfGp_particle_set(dPa_name::ID_AK_SN_BSTWARP01, ¤t.pos); dComIfGp_particle_set(dPa_name::ID_AK_SN_BSTWARP02, ¤t.pos); } m290 = dComIfGp_particle_set(dPa_name::ID_AK_SN_BSTWARP03, ¤t.pos); } break; case dSv_save_c::STAGE_ET: case dSv_save_c::STAGE_WT: if (m298 == NULL) { if (!checkEndDemo()) { if (daWarpf_prm::getSetType(this) && m2B8 != NULL) { m2B8->setPlaySpeed(1.0f); } m298 = dComIfGp_particle_set(dPa_name::ID_IT_SN_SHINDENTF_LIGHT00, ¤t.pos, ¤t.angle); m29C = dComIfGp_particle_set(dPa_name::ID_IT_SN_SHINDENTF_STAR00, ¤t.pos, ¤t.angle); } else if (m29C == NULL) { m29C = dComIfGp_particle_set(dPa_name::ID_IT_SN_DEMO29_STAR00, ¤t.pos, ¤t.angle); } } break; default: if (m2E4 % iVar2 == 0) { set_effect_wind00(); } if (m294 == NULL) { m294 = dComIfGp_particle_set(dPa_name::ID_AK_SN_BOSSWARPKIRAKIRA00_820C, ¤t.pos); } break; } } /* 00001C44-00001D0C .text set_effect_wind00__9daWarpf_cFv */ void daWarpf_c::set_effect_wind00() { if (mStageNo == dSv_save_c::STAGE_TOTG || mStageNo == dSv_save_c::STAGE_WT || mStageNo == dSv_save_c::STAGE_ET) { return; } JPABaseEmitter* emitter = dComIfGp_particle_set(dPa_name::ID_AK_SN_BOSSWARPWIND00_820A, ¤t.pos); if (emitter != NULL) { emitter->setMaxFrame(1); emitter->setGlobalAlpha(cM_rndF(127.9f) + 128.0f); } } /* 00001D0C-00001D88 .text get_angle_wind01__9daWarpf_cFv */ csXyz daWarpf_c::get_angle_wind01() { csXyz ret = current.angle; ret.x = dCam_getAngleX(dComIfGp_getCamera(0)); ret.y = dCam_getAngleY(dComIfGp_getCamera(0)) + 0x8000; ret.z = 0; return ret; } /* 00001D88-00001E44 .text anim_play__9daWarpf_cFv */ void daWarpf_c::anim_play() { if (mStageNo == dSv_save_c::STAGE_TOTG) { if (m2AC != NULL) { m2AC->play(); } if (m2B0 != NULL) { m2B0->play(); } if (m2B0 != NULL) { m2B4->play(); } } else if (mStageNo == dSv_save_c::STAGE_ET || mStageNo == dSv_save_c::STAGE_WT) { if (m2AC != NULL) { m2AC->play(); } if (m2B8 != NULL) { if (m2E4 >= 120) { m2B8->setPlaySpeed(1.0f); } m2B8->play(); } } } /* 00001E44-00001F78 .text setEndAnim__9daWarpf_cFv */ void daWarpf_c::setEndAnim() { switch (mStageNo) { case dSv_save_c::STAGE_TOTG: if (m2AC != NULL) { m2AC->setFrame(m2AC->getEndFrame()); } if (this->m2B0 != NULL) { m2B0->setFrame(m2B0->getEndFrame()); } if (this->m2B4 != NULL) { m2B4->setFrame(m2B4->getEndFrame()); } break; case dSv_save_c::STAGE_ET: case dSv_save_c::STAGE_WT: if (!checkEndDemo() && m2AC != NULL) { m2AC->setFrame(m2AC->getEndFrame()); } break; } } /* 00001F78-000020EC .text set_se__9daWarpf_cFv */ void daWarpf_c::set_se() { m2E0++; if (m2E0 > 20000) { m2E0 = 20000; } switch (m2D8) { case 0: if (daWarpf_prm::getSetType(this) == 0) { if (mStageNo == dSv_save_c::STAGE_TOTG) { fopAcM_seStart(this, JA_SE_CM_BST_WARP_BEAM, 0); } else { #if VERSION > VERSION_DEMO if (mStageNo != dSv_save_c::STAGE_WT && mStageNo != dSv_save_c::STAGE_ET) #endif { fopAcM_seStart(this, JA_SE_OBJ_BOSS_WARP_APPEAR, 0); } } } m2D8 = 1; break; case 1: break; } if (mStageNo == dSv_save_c::STAGE_TOTG) { if (m2E0 >= 45 && m2E8 != NULL) { m2E8->seStart(); } } else if (m2E8 != NULL) { m2E8->seStart(); } } /* 000020EC-0000219C .text set_mtx__9daWarpf_cFv */ void daWarpf_c::set_mtx() { mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); if (m2A8 != NULL) { m2A8->setBaseScale(scale); m2A8->setBaseTRMtx(mDoMtx_stack_c::get()); } if (m2C0 != NULL) { m2C0->setBaseScale(scale); m2C0->setBaseTRMtx(mDoMtx_stack_c::get()); } } /* 0000219C-00002340 .text _draw__9daWarpf_cFv */ bool daWarpf_c::_draw() { switch (mStageNo) { case dSv_save_c::STAGE_TOTG: set_mtx(); g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr); g_env_light.setLightTevColorType(m2A8, &tevStr); if (m2AC != NULL) { m2AC->entry(m2A8->getModelData()); } if (m2B0 != NULL) { m2B0->entry(m2A8->getModelData()); } if (m2B4 != NULL) { m2B4->entry(m2A8->getModelData()); } mDoExt_modelUpdateDL(m2A8); break; case dSv_save_c::STAGE_ET: case dSv_save_c::STAGE_WT: set_mtx(); g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr); if (m2A8 != NULL) { g_env_light.setLightTevColorType(m2A8, &tevStr); if (m2AC != NULL) { m2AC->entry(m2A8->getModelData()); } if (m2B8 != NULL && m2B8->getPlaySpeed() > 0.0f && m2B8 != NULL) { m2B8->entry(m2A8->getModelData()); } mDoExt_modelUpdateDL(m2A8); } if (m2C0 != NULL) { g_env_light.setLightTevColorType(m2C0, &tevStr); mDoExt_modelUpdateDL(m2C0); } break; } return true; } /* 00002340-00002360 .text daWarpf_Create__FPv */ static cPhs_State daWarpf_Create(void* i_this) { return ((daWarpf_c*)i_this)->_create(); } /* 00002360-00002384 .text daWarpf_Delete__FPv */ static BOOL daWarpf_Delete(void* i_this) { return ((daWarpf_c*)i_this)->_delete(); } /* 00002384-000023A8 .text daWarpf_Draw__FPv */ static BOOL daWarpf_Draw(void* i_this) { return ((daWarpf_c*)i_this)->_draw(); } /* 000023A8-000023CC .text daWarpf_Execute__FPv */ static BOOL daWarpf_Execute(void* i_this) { return ((daWarpf_c*)i_this)->_execute(); } /* 000023CC-000023D4 .text daWarpf_IsDelete__FPv */ static BOOL daWarpf_IsDelete(void*) { return TRUE; } static actor_method_class daWarpfMethodTable = { (process_method_func)daWarpf_Create, (process_method_func)daWarpf_Delete, (process_method_func)daWarpf_Execute, (process_method_func)daWarpf_IsDelete, (process_method_func)daWarpf_Draw, }; actor_process_profile_definition g_profile_WARPFLOWER = { /* Layer ID */ fpcLy_CURRENT_e, /* List ID */ 0x0003, /* List Prio */ fpcPi_CURRENT_e, /* Proc Name */ fpcNm_WARPFLOWER_e, /* Proc SubMtd */ &g_fpcLf_Method.base, /* Size */ sizeof(daWarpf_c), /* Size Other */ 0, /* Parameters */ 0, /* Leaf SubMtd */ &g_fopAc_Method.base, /* Draw Prio */ fpcDwPi_WARPFLOWER_e, /* Actor SubMtd */ &daWarpfMethodTable, /* Status */ fopAcStts_UNK4000_e | fopAcStts_UNK40000_e, /* Group */ fopAc_ACTOR_e, /* Cull Type */ fopAc_CULLBOX_0_e, };