summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_obj_AjavW.cpp
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2023-11-10 20:11:44 -0800
committerJasper St. Pierre <jstpierre@mecheye.net>2023-11-10 20:11:55 -0800
commit72c275355def263a634424a40770951286ffb92c (patch)
treef54d0afdc686c78dbd56d44cb674d9c995b9bb1e /src/d/actor/d_a_obj_AjavW.cpp
parent15f4354f6a33cc6278b2857dd080df05aecbc9dc (diff)
d_a_obj_AjavW
Diffstat (limited to 'src/d/actor/d_a_obj_AjavW.cpp')
-rw-r--r--src/d/actor/d_a_obj_AjavW.cpp158
1 files changed, 126 insertions, 32 deletions
diff --git a/src/d/actor/d_a_obj_AjavW.cpp b/src/d/actor/d_a_obj_AjavW.cpp
index 28362a4c..b0390fa4 100644
--- a/src/d/actor/d_a_obj_AjavW.cpp
+++ b/src/d/actor/d_a_obj_AjavW.cpp
@@ -3,71 +3,165 @@
// Translation Unit: d_a_obj_AjavW.cpp
//
-#include "d_a_obj_AjavW.h"
-#include "dolphin/types.h"
+#include "f_op/f_op_actor_mng.h"
+#include "JSystem/JKernel/JKRHeap.h"
+#include "JSystem/JUtility/JUTAssert.h"
+#include "d/d_bg_w.h"
+#include "d/d_com_inf_game.h"
+#include "d/d_procname.h"
+#include "m_Do/m_Do_ext.h"
+#include "m_Do/m_Do_mtx.h"
+
+class daObjAjavW_c : public fopAc_ac_c {
+public:
+ s32 _create();
+ bool _execute();
+ bool _draw();
+ bool _delete();
+ bool create_heap();
+ static BOOL solidHeapCB(fopAc_ac_c *i_this);
+
+public:
+ /* 0x290 */ request_of_phase_process_class mPhs;
+ /* 0x298 */ J3DModel * mpModel;
+ /* 0x29C */ mDoExt_btkAnm mBtkAnm;
+ /* 0x2B0 */ dBgW * mpBgW;
+};
+
+namespace {
+ static const char l_arcname[] = "AjavW";
+};
/* 00000078-0000009C .text solidHeapCB__12daObjAjavW_cFP10fopAc_ac_c */
-void daObjAjavW_c::solidHeapCB(fopAc_ac_c*) {
- /* Nonmatching */
+BOOL daObjAjavW_c::solidHeapCB(fopAc_ac_c* i_this) {
+ return ((daObjAjavW_c*)i_this)->create_heap();
}
/* 0000009C-00000208 .text create_heap__12daObjAjavW_cFv */
-void daObjAjavW_c::create_heap() {
- /* Nonmatching */
+bool daObjAjavW_c::create_heap() {
+ bool ret = true;
+
+ void* pModelData = dComIfG_getObjectRes(l_arcname, 0x05);
+ J3DAnmTextureSRTKey * pBtk = (J3DAnmTextureSRTKey *)dComIfG_getObjectRes(l_arcname, 0x08);
+
+ if (!pModelData || !pBtk) {
+ JUT_ASSERT(0xa7, 0);
+ ret = false;
+ } else {
+ mpModel = mDoExt_J3DModel__create((J3DModelData*)pModelData, 0x80000, 0x11000222);
+ s32 btkRet = mBtkAnm.init((J3DModelData*)pModelData, pBtk, 1, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0);
+ mpBgW = dBgW_NewSet((cBgD_t*)dComIfG_getObjectRes(l_arcname, 0x0B), cBgW::MOVE_BG_e, &mpModel->getBaseTRMtx());
+
+ if (!mpModel || !btkRet || !mpBgW)
+ ret = false;
+ }
+
+ return ret;
}
/* 00000208-00000350 .text _create__12daObjAjavW_cFv */
-void daObjAjavW_c::_create() {
- /* Nonmatching */
-}
+s32 daObjAjavW_c::_create() {
+ fopAcM_SetupActor(this, daObjAjavW_c);
-/* 00000350-000003AC .text __dt__13mDoExt_btkAnmFv */
-mDoExt_btkAnm::~mDoExt_btkAnm() {
- /* Nonmatching */
-}
+ s32 ret = dComIfG_resLoad(&mPhs, l_arcname);
-/* 000003AC-000003F4 .text __dt__14mDoExt_baseAnmFv */
-mDoExt_baseAnm::~mDoExt_baseAnm() {
- /* Nonmatching */
+ if (ret == cPhs_COMPLEATE_e) {
+ if (fopAcM_entrySolidHeap(this, (heapCallbackFunc)solidHeapCB, 0x8c0) == 1) {
+ if (dComIfG_Bgsp()->Regist(mpBgW, this)) {
+ ret = cPhs_ERROR_e;
+ } else {
+ fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
+ mpModel->setBaseScale(mScale);
+ mDoMtx_stack_c::transS(getPosition());
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
+ }
+ } else {
+ ret = cPhs_ERROR_e;
+ }
+ }
+
+ return ret;
}
/* 000003F4-00000488 .text _delete__12daObjAjavW_cFv */
-void daObjAjavW_c::_delete() {
- /* Nonmatching */
+bool daObjAjavW_c::_delete() {
+ dComIfG_resDelete(&mPhs, l_arcname);
+
+ if (heap != NULL && mpBgW != NULL) {
+ if (mpBgW->ChkUsed()) {
+ dComIfG_Bgsp()->Release(mpBgW);
+ }
+
+ mpBgW = NULL;
+ }
+
+ return true;
}
/* 00000488-000004F4 .text _execute__12daObjAjavW_cFv */
-void daObjAjavW_c::_execute() {
- /* Nonmatching */
+bool daObjAjavW_c::_execute() {
+ mBtkAnm.play();
+ if (mpBgW != NULL && mpBgW->ChkUsed())
+ mpBgW->Move();
+ return true;
}
/* 000004F4-0000056C .text _draw__12daObjAjavW_cFv */
-void daObjAjavW_c::_draw() {
- /* Nonmatching */
+bool daObjAjavW_c::_draw() {
+ g_env_light.settingTevStruct(TEV_TYPE_BG1, getPositionP(), &mTevStr);
+ g_env_light.setLightTevColorType(mpModel, &mTevStr);
+ mBtkAnm.entry(mpModel->getModelData());
+ mDoExt_modelUpdateDL(mpModel);
+ return true;
}
/* 0000056C-0000058C .text daObjAjavW_Create__FP12daObjAjavW_c */
-void daObjAjavW_Create(daObjAjavW_c*) {
- /* Nonmatching */
+s32 daObjAjavW_Create(daObjAjavW_c* i_this) {
+ return i_this->_create();
}
/* 0000058C-000005B0 .text daObjAjavW_Delete__FP12daObjAjavW_c */
-void daObjAjavW_Delete(daObjAjavW_c*) {
- /* Nonmatching */
+BOOL daObjAjavW_Delete(daObjAjavW_c* i_this) {
+ return i_this->_delete();
}
/* 000005B0-000005D4 .text daObjAjavW_Execute__FP12daObjAjavW_c */
-void daObjAjavW_Execute(daObjAjavW_c*) {
- /* Nonmatching */
+BOOL daObjAjavW_Execute(daObjAjavW_c* i_this) {
+ return i_this->_execute();
}
/* 000005D4-000005F8 .text daObjAjavW_Draw__FP12daObjAjavW_c */
-void daObjAjavW_Draw(daObjAjavW_c*) {
- /* Nonmatching */
+BOOL daObjAjavW_Draw(daObjAjavW_c* i_this) {
+ return i_this->_draw();
}
/* 000005F8-00000600 .text daObjAjavW_IsDelete__FP12daObjAjavW_c */
-void daObjAjavW_IsDelete(daObjAjavW_c*) {
- /* Nonmatching */
+BOOL daObjAjavW_IsDelete(daObjAjavW_c* i_this) {
+ return TRUE;
}
+static actor_method_class l_daObjAjavW_Method = {
+ (process_method_func)daObjAjavW_Create,
+ (process_method_func)daObjAjavW_Delete,
+ (process_method_func)daObjAjavW_Execute,
+ (process_method_func)daObjAjavW_IsDelete,
+ (process_method_func)daObjAjavW_Draw,
+};
+
+actor_process_profile_definition g_profile_Obj_AjavW = {
+ fpcLy_CURRENT_e,
+ 3,
+ fpcPi_CURRENT_e,
+ PROC_Obj_AjavW,
+ &g_fpcLf_Method.mBase,
+ sizeof(daObjAjavW_c),
+ 0,
+ 0,
+ &g_fopAc_Method.base,
+ 0x0056,
+ &l_daObjAjavW_Method,
+ fopAcStts_UNK40000_e,
+ fopAc_ACTOR_e,
+ fopAc_CULLBOX_CUSTOM_e,
+};