mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-03 18:36:06 -04:00
d_a_obj_pbco 100% (#616)
* Update d_a_obj_pbco.cpp * Update d_a_obj_pbco.h * Update d_a_obj_pbco.cpp * Update src/d/actor/d_a_obj_pbco.cpp Co-authored-by: Jasper St. Pierre <jstpierre@mecheye.net> --------- Co-authored-by: Jasper St. Pierre <jstpierre@mecheye.net>
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
#ifndef D_A_OBJ_PBCO_H
|
||||
#define D_A_OBJ_PBCO_H
|
||||
|
||||
#include "SSystem/SComponent/c_phase.h"
|
||||
#include "d/d_bg_w.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
|
||||
class daObj_Pbco_c : public fopAc_ac_c {
|
||||
@@ -9,21 +11,22 @@ public:
|
||||
inline BOOL _delete();
|
||||
inline BOOL _draw();
|
||||
inline BOOL _execute();
|
||||
|
||||
static const char M_arcname[];
|
||||
BOOL CreateHeap();
|
||||
s32 CreateInit();
|
||||
void set_mtx();
|
||||
void CreateHeap();
|
||||
void CreateInit();
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
|
||||
/* 0x290 */ request_of_phase_process_class mPhs;
|
||||
/* 0x298 */ J3DModel* mpModel;
|
||||
/* 0x29C */ dBgW* mpBgW;
|
||||
/* 0x2A0 */ Mtx mMtx;
|
||||
}; // Size: 0x2A0
|
||||
class daObj_Pbco_HIO_c {
|
||||
public:
|
||||
daObj_Pbco_HIO_c();
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
virtual ~daObj_Pbco_HIO_c() {}
|
||||
/* 0x04 */ s8 field_0x04;
|
||||
}; // Size: 0x04
|
||||
|
||||
#endif /* D_A_OBJ_PBCO_H */
|
||||
|
||||
+103
-20
@@ -4,55 +4,138 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_obj_pbco.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_item.h"
|
||||
#include "d/d_procname.h"
|
||||
|
||||
static daObj_Pbco_HIO_c l_HIO;
|
||||
const char daObj_Pbco_c::M_arcname[] = "Pbco";
|
||||
|
||||
/* 000000EC-00000104 .text __ct__16daObj_Pbco_HIO_cFv */
|
||||
daObj_Pbco_HIO_c::daObj_Pbco_HIO_c() {
|
||||
/* Nonmatching */
|
||||
field_0x04 = -1;
|
||||
}
|
||||
|
||||
/* 00000104-0000018C .text set_mtx__12daObj_Pbco_cFv */
|
||||
void daObj_Pbco_c::set_mtx() {
|
||||
/* Nonmatching */
|
||||
mpModel->setBaseScale(scale);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::ZXYrotM(shape_angle);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
|
||||
/* 0000018C-000001AC .text CheckCreateHeap__FP10fopAc_ac_c */
|
||||
static BOOL CheckCreateHeap(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static int CheckCreateHeap(fopAc_ac_c* i_this) {
|
||||
daObj_Pbco_c* a_this = static_cast<daObj_Pbco_c*>(i_this);
|
||||
return a_this->CreateHeap();
|
||||
}
|
||||
|
||||
/* 000001AC-00000348 .text CreateHeap__12daObj_Pbco_cFv */
|
||||
void daObj_Pbco_c::CreateHeap() {
|
||||
/* Nonmatching */
|
||||
BOOL daObj_Pbco_c::CreateHeap() {
|
||||
J3DModelData* modelData;
|
||||
if (dComIfGs_isEventBit(0x0a02) && !checkItemGet(dItem_PEARL_NAYRU_e, TRUE)) {
|
||||
modelData = (J3DModelData*)(dComIfG_getObjectRes(M_arcname, 0x04));
|
||||
} else {
|
||||
modelData = (J3DModelData*)(dComIfG_getObjectRes(M_arcname, 0x05));
|
||||
}
|
||||
JUT_ASSERT(0xa9, modelData != 0);
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
||||
if (dComIfGs_isEventBit(0x0a02) && !checkItemGet(dItem_PEARL_NAYRU_e, TRUE)) {
|
||||
mpBgW = NULL;
|
||||
} else {
|
||||
mpBgW = dBgW_NewSet((cBgD_t*)dComIfG_getObjectRes(M_arcname, 0x08), cBgW::MOVE_BG_e,
|
||||
&mpModel->getBaseTRMtx());
|
||||
if (mpBgW == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return mpModel != NULL;
|
||||
}
|
||||
|
||||
/* 00000348-000003A4 .text CreateInit__12daObj_Pbco_cFv */
|
||||
void daObj_Pbco_c::CreateInit() {
|
||||
/* Nonmatching */
|
||||
s32 daObj_Pbco_c::CreateInit() {
|
||||
set_mtx();
|
||||
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
||||
if (mpBgW) {
|
||||
dComIfG_Bgsp()->Regist(mpBgW, this);
|
||||
}
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
s32 daObj_Pbco_c::_create() {
|
||||
fopAcM_SetupActor(this, daObj_Pbco_c);
|
||||
int phase_state = dComIfG_resLoad(&mPhs, M_arcname);
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
if (fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x10000)) {
|
||||
phase_state = CreateInit();
|
||||
} else {
|
||||
phase_state = cPhs_ERROR_e;
|
||||
}
|
||||
}
|
||||
return phase_state;
|
||||
}
|
||||
/* 000003A4-00000434 .text daObj_PbcoCreate__FPv */
|
||||
static s32 daObj_PbcoCreate(void*) {
|
||||
/* Nonmatching */
|
||||
static int daObj_PbcoCreate(void* i_this) {
|
||||
return static_cast<daObj_Pbco_c*>(i_this)->_create();
|
||||
}
|
||||
|
||||
BOOL daObj_Pbco_c::_delete() {
|
||||
if (mpBgW != NULL) {
|
||||
dComIfG_Bgsp()->Release(mpBgW);
|
||||
}
|
||||
dComIfG_resDelete(&mPhs, M_arcname);
|
||||
return TRUE;
|
||||
}
|
||||
/* 00000434-0000048C .text daObj_PbcoDelete__FPv */
|
||||
static BOOL daObj_PbcoDelete(void*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daObj_PbcoDelete(void* i_this) {
|
||||
static_cast<daObj_Pbco_c*>(i_this)->_delete();
|
||||
return TRUE;
|
||||
}
|
||||
BOOL daObj_Pbco_c::_execute() {
|
||||
if (mpBgW != NULL)
|
||||
mpBgW->Move();
|
||||
set_mtx();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* 0000048C-000004D0 .text daObj_PbcoExecute__FPv */
|
||||
static BOOL daObj_PbcoExecute(void*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daObj_PbcoExecute(void* i_this) {
|
||||
return static_cast<daObj_Pbco_c*>(i_this)->_execute();
|
||||
}
|
||||
|
||||
BOOL daObj_Pbco_c::_draw() {
|
||||
g_env_light.settingTevStruct(TEV_TYPE_BG0, ¤t.pos, &tevStr);
|
||||
g_env_light.setLightTevColorType(mpModel, &tevStr);
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
return TRUE;
|
||||
}
|
||||
/* 000004D0-0000053C .text daObj_PbcoDraw__FPv */
|
||||
static BOOL daObj_PbcoDraw(void*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daObj_PbcoDraw(void* i_this) {
|
||||
daObj_Pbco_c* a_this = (daObj_Pbco_c*)i_this;
|
||||
return a_this->_draw();
|
||||
}
|
||||
|
||||
/* 0000053C-00000544 .text daObj_PbcoIsDelete__FPv */
|
||||
static BOOL daObj_PbcoIsDelete(void*) {
|
||||
/* Nonmatching */
|
||||
return TRUE;
|
||||
}
|
||||
static actor_method_class daObj_PbcoMethodTable = {
|
||||
(process_method_func)daObj_PbcoCreate, (process_method_func)daObj_PbcoDelete,
|
||||
(process_method_func)daObj_PbcoExecute, (process_method_func)daObj_PbcoIsDelete,
|
||||
(process_method_func)daObj_PbcoDraw,
|
||||
};
|
||||
|
||||
actor_process_profile_definition g_profile_Obj_Pbco = {
|
||||
/* LayerID */ fpcLy_CURRENT_e,
|
||||
/* ListID */ 2,
|
||||
/* ListPrio */ fpcPi_CURRENT_e,
|
||||
/* ProcName */ PROC_Obj_Pbco,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
||||
/* Size */ sizeof(daObj_Pbco_c),
|
||||
/* SizeOther */ 0,
|
||||
/* Parameters */ 0,
|
||||
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
||||
/* Priority */ 0x0021,
|
||||
/* Actor SubMtd */ &daObj_PbcoMethodTable,
|
||||
/* Status */ fopAcStts_UNK40000_e | fopAcStts_NOCULLEXEC_e,
|
||||
/* Group */ fopAc_ACTOR_e,
|
||||
/* CullType */ fopAc_CULLBOX_CUSTOM_e,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user