// // Generated by dtk // Translation Unit: d_a_sbox.cpp // #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_sbox.h" #include "d/actor/d_a_ship.h" #include "res/Object/Dalways.h" #include "d/d_kankyo.h" #include "d/d_com_inf_game.h" #include "f_op/f_op_actor_mng.h" const char daSbox_c::M_arcname[] = "Dalways"; /* 00000078-00000098 .text CheckCreateHeap__FP10fopAc_ac_c */ static BOOL CheckCreateHeap(fopAc_ac_c* a_this) { return ((daSbox_c*)a_this)->CreateHeap(); } /* 00000098-0000034C .text CreateHeap__8daSbox_cFv */ BOOL daSbox_c::CreateHeap() { J3DModelData* modelData = (J3DModelData*)(dComIfG_getObjectRes("Dalways", dRes_INDEX_DALWAYS_BDL_BOXSEA_e)); JUT_ASSERT(113, modelData != NULL); if (!mBck1.init(modelData, (J3DAnmTransform*)(dComIfG_getObjectRes("Dalways", dRes_INDEX_DALWAYS_BCK_BOXOPENBOX_e)), true, J3DFrameCtrl::EMode_NONE)) { return FALSE; } mpModel1 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000022); if (mpModel1 == NULL) { return FALSE; } J3DModelData* flashModelData = (J3DModelData*)(dComIfG_getObjectRes("Dalways", dRes_INDEX_DALWAYS_BDL_IT_TAKARA_FLASH_e)); JUT_ASSERT(140, flashModelData != NULL); mpModel2 = mDoExt_J3DModel__create(flashModelData, 0x80000, 0x1000200); if (mpModel2 == NULL) { return FALSE; } if (!mBck2.init( flashModelData, (J3DAnmTransform*)(dComIfG_getObjectRes("Dalways", dRes_INDEX_DALWAYS_BCK_IT_TAKARA_FLASH2_e)), true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false )) { return FALSE; } if (!mBtk.init( flashModelData, (J3DAnmTextureSRTKey*)(dComIfG_getObjectRes("Dalways", dRes_INDEX_DALWAYS_BTK_IT_TAKARA_FLASH_e)), true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, 0 )) { return FALSE; } if (!mBrk.init( flashModelData, (J3DAnmTevRegKey*)(dComIfG_getObjectRes("Dalways", dRes_INDEX_DALWAYS_BRK_IT_TAKARA_FLASH_e)), true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, 0 )) { return FALSE; } calcMtx(); return TRUE; } /* 0000034C-00000430 .text calcMtx__8daSbox_cFv */ void daSbox_c::calcMtx() { mpModel1->setBaseScale(scale); mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); mDoMtx_stack_c::YrotM(current.angle.y); mpModel1->setBaseTRMtx(mDoMtx_stack_c::get()); mpModel2->setBaseScale(scale); mDoMtx_stack_c::transS(current.pos.x, current.pos.y + 50.0f, current.pos.z); mDoMtx_stack_c::YrotM(current.angle.y); mpModel2->setBaseTRMtx(mDoMtx_stack_c::get()); } /* 00000430-00000598 .text shipMtx__8daSbox_cFv */ void daSbox_c::shipMtx() { daShip_c* ship = dComIfGp_getShipActor(); if (ship == NULL) { JUT_ASSERT(220, FALSE); } mDoMtx_stack_c::copy(ship->getBodyMtx()); mDoMtx_stack_c::transM(0.0f, 22.35f, 20.0f); mDoMtx_stack_c::YrotM(0x7fff); mpModel1->setBaseTRMtx(mDoMtx_stack_c::get()); mDoMtx_multVecZero(mDoMtx_stack_c::get(), ¤t.pos); attention_info.position = current.pos; eyePos = current.pos; current.angle.y = ship->shape_angle.y + 0x7fff; shape_angle.y = ship->shape_angle.y; mDoMtx_stack_c::copy(ship->getBodyMtx()); mDoMtx_stack_c::transM(0.0f, 72.35f, 20.0f); mpModel2->setBaseTRMtx(mDoMtx_stack_c::get()); } /* 00000598-0000062C .text volmProc__8daSbox_cFv */ BOOL daSbox_c::volmProc() { if (mEmitter == NULL) { return TRUE; } m300++; if (m300 == 0x24) { mEmitter->setGlobalAlpha(0xff); } else { if (m300 >= 0xb5) { mEmitter->setGlobalAlpha(0); mEmitter->becomeInvalidEmitter(); mEmitter = NULL; return TRUE; } if (m300 > 0x9c) { u8 tmp = 10; mEmitter->setGlobalAlpha((0xB5 - m300) * tmp); } } return FALSE; } /* 0000062C-00000700 .text darkProc__8daSbox_cFv */ BOOL daSbox_c::darkProc() { BOOL ret; if (!chkFlag(0x10)) { return TRUE; } m308++; if (m308 > 0x96) { m304 = 1.0f; dKy_set_allcol_ratio(1.0f); clrFlag(0x10); ret = 1; } else { if (m308 > 0x78) { f32 tmp = (m308 - 120.0f) / 30.0f; m304 = tmp * 0.6f + 0.4f; } dKy_set_allcol_ratio(m304); ret = 0; } return ret; } /* 00000700-000007F4 .text lightProc__8daSbox_cFv */ BOOL daSbox_c::lightProc() { if (!chkFlag(0x20)) { return TRUE; } m34C++; if (m34C < 0x9c) { if (m30C.mPower < 130.0f) { m30C.mPower += 13.0f; } if (m32C.mPower < 120.0f) { m32C.mPower += 12.0f; } } else { if (m30C.mPower > 5.2f) { m30C.mPower -= 5.2f; } else { m30C.mPower = 0.0f; } if (m32C.mPower > 4.8f) { m32C.mPower -= 4.8f; } else { m32C.mPower = 0.0f; } if (m30C.mPower == 0.0f && m32C.mPower == 0.0f) { clrFlag(0x20); return TRUE; } } return FALSE; } /* 000007F4-000008BC .text lightInit__8daSbox_cFv */ void daSbox_c::lightInit() { m30C.mPos.set(current.pos.x, current.pos.y + 55.0f, current.pos.z); m30C.mColor.r = 0xff; m30C.mColor.g = 0xff; m30C.mColor.b = 0xff; m30C.mPower = 0.0f; m30C.mFluctuation = 0.0f; m32C.mPos.set(current.pos.x, current.pos.y + 50.0f, current.pos.z); m32C.mColor.r = 0xff; m32C.mColor.g = 0xff; m32C.mColor.b = 100; m32C.mPower = 0.0f; m32C.mFluctuation = 0.0f; setFlag(0x20); m34C = 0; dKy_plight_priority_set(&m30C); dKy_efplight_set(&m32C); } /* 000008BC-000008F0 .text CreateInit__8daSbox_cFv */ BOOL daSbox_c::CreateInit() { tevStr.mRoomNo = current.roomNo; setAction(0); calcMtx(); return TRUE; } /* 000008F0-000009F0 .text create__8daSbox_cFv */ cPhs_State daSbox_c::create() { fopAcM_ct_Retail(this, daSbox_c); cPhs_State PVar1 = dComIfG_resLoad(&mPhase, M_arcname); if (PVar1 != cPhs_COMPLEATE_e) { return PVar1; } fopAcM_ct_Demo(this, daSbox_c); if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x15C0)) { return cPhs_ERROR_e; } CreateInit(); return cPhs_COMPLEATE_e; } /* 00000B4C-00000BB4 .text demoInitWait__8daSbox_cFv */ void daSbox_c::demoInitWait() { int* puVar1 = dComIfGp_evmng_getMyIntegerP(m2F8, "Timer"); if (puVar1 != NULL) { m2F4 = *puVar1; } else { m2F4 = 0; } } /* 00000BB4-00000C04 .text demoProcWait__8daSbox_cFv */ BOOL daSbox_c::demoProcWait() { if (m2F4 > 0) { m2F4--; } else { dComIfGp_evmng_cutEnd(m2F8); } return FALSE; } /* 00000C04-00000F1C .text demoInitOpen__8daSbox_cFv */ void daSbox_c::demoInitOpen() { mBck1.setPlaySpeed(1.0f); mBck2.setPlaySpeed(1.0f); mBtk.setPlaySpeed(1.0f); mBrk.setPlaySpeed(1.0f); fopAcM_seStart(this, JA_SE_OBJ_TBOX_OPEN_S1, 0); fopAcM_seStart(this, JA_SE_OBJ_TBOX_UNLOCK, 0); mDoAud_subBgmStart(JA_BGM_OPEN_BOX); setFlag(2); dComIfGp_particle_set(dPa_name::ID_IT_JN_TAKARA_PAKAF, ¤t.pos, ¤t.angle); dComIfGp_particle_set(dPa_name::ID_IT_JN_TAKARA_NAKAF, ¤t.pos, ¤t.angle); dComIfGp_particle_set(dPa_name::ID_IT_JN_TAKARA_PAKAF_SOTO, ¤t.pos, ¤t.angle); cXyz scale; scale.set(0.7f, 1.0f, 1.0f); JPABaseEmitter* pJVar1 = dComIfGp_particle_set(dPa_name::ID_IT_JN_TAKARA_UEF, ¤t.pos, ¤t.angle); if (pJVar1 != NULL) { pJVar1->setEmitterScale(scale); } JPABaseEmitter* pJVar2 = dComIfGp_particle_set(dPa_name::ID_IT_JN_TAKARA_TSUBU, ¤t.pos, ¤t.angle); if (pJVar2 != NULL) { pJVar2->setEmitterScale(scale); } mEmitter = dComIfGp_particle_set(dPa_name::ID_IT_JN_TAKARA_VOLM, ¤t.pos, ¤t.angle); if (mEmitter != NULL) { m300 = 0; mEmitter->setGlobalAlpha(0); mEmitter->setGlobalParticleHeightScale(0.7f); } setFlag(0x10); m304 = 0.4f; m308 = 0; lightInit(); } /* 00000F1C-00000FE4 .text demoProcOpen__8daSbox_cFv */ void daSbox_c::demoProcOpen() { if (chkFlag(1)) { if (mBck1.play()) { fopAcM_seStart(this, JA_SE_OBJ_TBOX_OPEN_S2, 0); dComIfGp_evmng_cutEnd(m2F8); clrFlag(1); } } else { dComIfGp_evmng_cutEnd(m2F8); } } /* 00000FE4-0000107C .text demoInitDelete__8daSbox_cFv */ void daSbox_c::demoInitDelete() { if (chkFlag(2)) { if (mEmitter != NULL) { mEmitter->becomeInvalidEmitter(); mEmitter = NULL; } if (chkFlag(0x10)) { dKy_set_allcol_ratio(1.0f); clrFlag(0x10); } } dKy_plight_cut(&m30C); dKy_efplight_cut(&m32C); } /* 0000107C-000010B0 .text demoProcDelete__8daSbox_cFv */ void daSbox_c::demoProcDelete() { dComIfGp_evmng_cutEnd(m2F8); } /* 000010B0-00001110 .text demoInitCom__8daSbox_cFv */ void daSbox_c::demoInitCom() { if (dComIfGp_evmng_getMyIntegerP(m2F8, "DISP") != NULL) { setFlag(8); } } /* 00001110-000011F8 .text demoProcCom__8daSbox_cFv */ void daSbox_c::demoProcCom() { if (chkFlag(2)) { BOOL iVar1 = mBck2.play(); BOOL iVar2 = mBtk.play(); BOOL iVar3 = mBrk.play(); if ((s32)mBck2.getFrame() == 36) { setFlag(4); } BOOL iVar4 = volmProc(); BOOL iVar5 = darkProc(); BOOL iVar6 = lightProc(); if (iVar1 && iVar2 && iVar3 && iVar4 && iVar5 && iVar6) { clrFlag(2 | 4); } } } /* 000011F8-00001240 .text getNowEventAction__8daSbox_cFv */ s32 daSbox_c::getNowEventAction() { static char* action_table[] = {"WAIT", "OPEN", "DELETE"}; return dComIfGp_evmng_getMyActIdx(m2F8, action_table, ARRAY_SIZE(action_table), FALSE, 1); } /* 00001240-00001388 .text demoProc__8daSbox_cFv */ BOOL daSbox_c::demoProc() { m2F8 = dComIfGp_evmng_getMyStaffId("tkrSlv"); if (m2F8 == -1) { return FALSE; } s32 iVar1 = getNowEventAction(); if (dComIfGp_evmng_getIsAddvance(m2F8)) { setFlag(1); demoInitCom(); switch (iVar1) { case 0: demoInitWait(); break; case 1: demoInitOpen(); break; case 2: demoInitDelete(); break; } } switch (iVar1) { case 0: demoProcWait(); break; case 1: demoProcOpen(); break; case 2: demoProcDelete(); break; default: dComIfGp_evmng_cutEnd(m2F8); break; } demoProcCom(); return TRUE; } /* 00001388-000013D0 .text actionWait__8daSbox_cFv */ BOOL daSbox_c::actionWait() { shipMtx(); if (!demoProc()) { fopAcM_delete(this); } return TRUE; } BOOL daSbox_c::draw() { fopAc_ac_c* a_this = this; J3DModelData* pJVar1 = mpModel1->getModelData(); if (!chkFlag(8)) { return TRUE; } g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &a_this->tevStr); g_env_light.setLightTevColorType(mpModel1, &a_this->tevStr); mBck1.entry(pJVar1); mDoExt_modelUpdateDL(mpModel1); if (chkFlag(4)) { pJVar1 = mpModel2->getModelData(); mBck2.entry(pJVar1); mBtk.entry(pJVar1); mBrk.entry(pJVar1); dComIfGd_setListMaskOff(); mDoExt_modelUpdateDL(mpModel2); dComIfGd_setList(); } return TRUE; } /* 000013D0-00001500 .text daSbox_Draw__FP8daSbox_c */ static BOOL daSbox_Draw(daSbox_c* i_this) { return ((daSbox_c*)i_this)->draw(); } BOOL daSbox_c::execute() { switch (m2EC) { case 0: actionWait(); break; } return TRUE; } /* 00001500-00001534 .text daSbox_Execute__FP8daSbox_c */ static BOOL daSbox_Execute(daSbox_c* i_this) { return ((daSbox_c*)i_this)->execute(); } /* 00001534-0000153C .text daSbox_IsDelete__FP8daSbox_c */ static BOOL daSbox_IsDelete(daSbox_c*) { return TRUE; } /* 0000153C-00001640 .text daSbox_Delete__FP8daSbox_c */ static BOOL daSbox_Delete(daSbox_c* i_this) { dComIfG_resDeleteDemo(&i_this->mPhase, daSbox_c::M_arcname); mDoAud_seDeleteObject(&i_this->eyePos); i_this->~daSbox_c(); return TRUE; } /* 00001640-00001660 .text daSbox_Create__FP10fopAc_ac_c */ static cPhs_State daSbox_Create(fopAc_ac_c* a_this) { return ((daSbox_c*)a_this)->create(); } static actor_method_class l_daSbox_Method = { (process_method_func)daSbox_Create, (process_method_func)daSbox_Delete, (process_method_func)daSbox_Execute, (process_method_func)daSbox_IsDelete, (process_method_func)daSbox_Draw, }; actor_process_profile_definition g_profile_SBOX = { /* Layer ID */ fpcLy_CURRENT_e, /* List ID */ 0x0007, /* List Prio */ fpcPi_CURRENT_e, /* Proc Name */ fpcNm_SBOX_e, /* Proc SubMtd */ &g_fpcLf_Method.base, /* Size */ sizeof(daSbox_c), /* Size Other */ 0, /* Parameters */ 0, /* Leaf SubMtd */ &g_fopAc_Method.base, /* Draw Prio */ fpcDwPi_SBOX_e, /* Actor SubMtd */ &l_daSbox_Method, /* Status */ fopAcStts_UNK4000_e | fopAcStts_UNK40000_e, /* Group */ fopAc_ACTOR_e, /* Cull Type */ fopAc_CULLBOX_6_e, };