/** * Object - Well Cover * */ #include "d/dolzel_rel.h" #include "d/actor/d_a_obj_well_cover.h" #include "d/d_procname.h" #include "d/actor/d_a_player.h" /* 80D36298-80D362D4 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__13daObjWCover_cFv */ void daObjWCover_c::initBaseMtx() { mpModel->setBaseScale(scale); setBaseMtx(); } /* 80D362D4-80D36348 0000B4 0074+00 2/2 0/0 0/0 .text setBaseMtx__13daObjWCover_cFv */ void daObjWCover_c::setBaseMtx() { mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); mDoMtx_stack_c::YrotM(shape_angle.y); mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); MTXCopy(mDoMtx_stack_c::get(), mBgMtx); } /* 80D36348-80D36394 000128 004C+00 1/0 0/0 0/0 .text Create__13daObjWCover_cFv */ int daObjWCover_c::Create() { initBaseMtx(); fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); fopAcM_setCullSizeBox2(this, mpModel->getModelData()); return 1; } /* 80D36A6C-80D36A70 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ static char* l_arcName = "H_Idohuta"; /* 80D36394-80D36404 000174 0070+00 1/0 0/0 0/0 .text CreateHeap__13daObjWCover_cFv */ int daObjWCover_c::CreateHeap() { J3DModelData* modelData = static_cast(dComIfG_getObjectRes(l_arcName, 4)); JUT_ASSERT(194, modelData != 0) mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); return mpModel != NULL ? 1 : 0; } /* 80D36404-80D364E0 0001E4 00DC+00 1/1 0/0 0/0 .text create__13daObjWCover_cFv */ int daObjWCover_c::create() { fopAcM_SetupActor(this, daObjWCover_c); if (fopAcM_isSwitch(this, getSwNo())) { return cPhs_ERROR_e; } int rv = dComIfG_resLoad(&mPhaseReq, l_arcName); if (rv == cPhs_COMPLEATE_e) { rv = MoveBGCreate(l_arcName, 7, NULL, 0xd90, NULL); if (rv == cPhs_ERROR_e) { return rv; } } return rv; } /* 80D364E0-80D3652C 0002C0 004C+00 1/0 0/0 0/0 .text Execute__13daObjWCover_cFPPA3_A4_f */ int daObjWCover_c::Execute(Mtx** i_mtx) { action(); *i_mtx = &mBgMtx; setBaseMtx(); return 1; } typedef void (daObjWCover_c::*modeFunc)(); /* 80D3652C-80D365B8 00030C 008C+00 1/1 0/0 0/0 .text action__13daObjWCover_cFv */ void daObjWCover_c::action() { static modeFunc l_func[] = { &daObjWCover_c::modeWait, &daObjWCover_c::modeBreak, }; (this->*l_func[field_0x5b0])(); } /* 80D365B8-80D36790 000398 01D8+00 1/0 0/0 0/0 .text modeWait__13daObjWCover_cFv */ void daObjWCover_c::modeWait() { cXyz acStack_48(150.0f, 0.0f, 0.0f); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(shape_angle.y); mDoMtx_stack_c::multVec(&acStack_48, &acStack_48); daPy_py_c* player = daPy_getPlayerActorClass(); f32 dVar6 = player->current.pos.absXZ(acStack_48); f32 fVar1 = acStack_48.y - player->current.pos.y; if (dVar6 < 80.0f && fVar1 > 0.0f && fVar1 < 200.0f) { init_modeBreak(); } } /* 80D36A34-80D36A3C 000028 0006+02 0/1 0/0 0/0 .rodata particle_id$3806 */ static u16 const particle_id[3] = { 0x82AB, 0x82AC, 0x82AD, }; /* 80D36790-80D3689C 000570 010C+00 1/1 0/0 0/0 .text init_modeBreak__13daObjWCover_cFv */ void daObjWCover_c::init_modeBreak() { fopAcM_onSwitch(this, getSwNo()); cXyz acStack_28(150.0f, 0.0f, 0.0f); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(shape_angle.y); mDoMtx_stack_c::multVec(&acStack_28, &acStack_28); for (int i = 0; i < 3; i++) { dComIfGp_particle_set(particle_id[i], &acStack_28, NULL, NULL); } fopAcM_delete(this); field_0x5b0 = 1; } /* 80D3689C-80D368A0 00067C 0004+00 1/0 0/0 0/0 .text modeBreak__13daObjWCover_cFv */ void daObjWCover_c::modeBreak() { /* empty function */ } /* 80D368A0-80D36944 000680 00A4+00 1/0 0/0 0/0 .text Draw__13daObjWCover_cFv */ int daObjWCover_c::Draw() { g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); dComIfGd_setListBG(); mDoExt_modelUpdateDL(mpModel); dComIfGd_setList(); return 1; } /* 80D36944-80D36978 000724 0034+00 1/0 0/0 0/0 .text Delete__13daObjWCover_cFv */ int daObjWCover_c::Delete() { dComIfG_resDelete(&mPhaseReq, l_arcName); return 1; } /* 80D36978-80D369A4 000758 002C+00 1/0 0/0 0/0 .text daObjWCover_Draw__FP13daObjWCover_c */ static int daObjWCover_Draw(daObjWCover_c* i_this) { return i_this->Draw(); } /* 80D369A4-80D369C4 000784 0020+00 1/0 0/0 0/0 .text daObjWCover_Execute__FP13daObjWCover_c */ static int daObjWCover_Execute(daObjWCover_c* i_this) { return i_this->MoveBGExecute(); } /* 80D369C4-80D369E4 0007A4 0020+00 1/0 0/0 0/0 .text daObjWCover_Delete__FP13daObjWCover_c */ static int daObjWCover_Delete(daObjWCover_c* i_this) { return i_this->MoveBGDelete(); } /* 80D369E4-80D36A04 0007C4 0020+00 1/0 0/0 0/0 .text daObjWCover_Create__FP10fopAc_ac_c */ static int daObjWCover_Create(fopAc_ac_c* i_this) { return static_cast(i_this)->create(); } /* 80D36AA0-80D36AC0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjWCover_Method */ static actor_method_class l_daObjWCover_Method = { (process_method_func)daObjWCover_Create, (process_method_func)daObjWCover_Delete, (process_method_func)daObjWCover_Execute, (process_method_func)NULL, (process_method_func)daObjWCover_Draw, }; extern actor_process_profile_definition g_profile_Obj_WellCover = { fpcLy_CURRENT_e, // mLayerID 3, // mListID fpcPi_CURRENT_e, // mListPrio PROC_Obj_WellCover, // mProcName &g_fpcLf_Method.base, // sub_method sizeof(daObjWCover_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method 0x25E, // mPriority &l_daObjWCover_Method, // sub_method 0x40100, // mStatus fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType };