mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-21 15:56:50 -04:00
match d_a_obj_hami4 (#801)
* start hami4 * daObjHami4_Create * daObjHami4_Delete * start draw * execute * daObjHami4_open_demo_wait * daObjHami4_close_stop * set_mtx * createheap * last bit of createheap * more draw * inline create * inline delete * inline draw * inline execute * remove nonmatching comments * clean some * fix linking * undo * address comments, match debug map * ja_se
This commit is contained in:
+1
-1
@@ -1677,7 +1677,7 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_obj_gtaki"),
|
||||
ActorRel(NonMatching, "d_a_obj_hami2"),
|
||||
ActorRel(NonMatching, "d_a_obj_hami3"),
|
||||
ActorRel(NonMatching, "d_a_obj_hami4"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_hami4"),
|
||||
ActorRel(Equivalent, "d_a_obj_hat"), # weak func order
|
||||
ActorRel(Matching, "d_a_obj_hbrf1"),
|
||||
ActorRel(NonMatching, "d_a_obj_hcbh"),
|
||||
|
||||
@@ -1,17 +1,26 @@
|
||||
#ifndef D_A_OBJ_HAMI4_H
|
||||
#define D_A_OBJ_HAMI4_H
|
||||
|
||||
#include "d/d_a_obj.h"
|
||||
#include "d/d_bg_w.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
|
||||
class daObjHami4_c : public fopAc_ac_c {
|
||||
public:
|
||||
|
||||
enum Prm_e {
|
||||
PRM_SWSAVE_W = 0x08,
|
||||
PRM_SWSAVE_S = 0x00,
|
||||
};
|
||||
|
||||
|
||||
inline cPhs_State _create();
|
||||
inline bool _delete();
|
||||
inline bool _draw();
|
||||
inline bool _execute();
|
||||
void prm_get_swSave() const {}
|
||||
int prm_get_swSave() const {return daObj::PrmAbstract<Prm_e>(this, PRM_SWSAVE_W, PRM_SWSAVE_S);}
|
||||
|
||||
void CreateHeap();
|
||||
BOOL CreateHeap();
|
||||
void CreateInit();
|
||||
void set_mtx();
|
||||
void daObjHami4_close_stop();
|
||||
@@ -20,7 +29,12 @@ public:
|
||||
void daObjHami4_open_stop();
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
/* 0x290 */ request_of_phase_process_class mPhs;
|
||||
/* 0x298 */ J3DModel * mpModels[4];
|
||||
/* 0x2A8 */ dBgW* mdBgW[4];
|
||||
/* 0x2B8 */ Mtx field_0x2B8[4];
|
||||
/* 0x378 */ int field_0x378;
|
||||
/* 0x37C */ f32 field_0x37C;
|
||||
}; // Size: 0x380
|
||||
|
||||
#endif /* D_A_OBJ_HAMI4_H */
|
||||
|
||||
+143
-19
@@ -4,67 +4,191 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_obj_hami4.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_priority.h"
|
||||
#include "d/res/res_hami4.h"
|
||||
|
||||
/* 00000078-00000098 .text CheckCreateHeap__FP10fopAc_ac_c */
|
||||
static BOOL CheckCreateHeap(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL CheckCreateHeap(fopAc_ac_c* actor) {
|
||||
return ((daObjHami4_c*)actor)->CreateHeap();
|
||||
}
|
||||
|
||||
/* 00000098-00000374 .text CreateHeap__12daObjHami4_cFv */
|
||||
void daObjHami4_c::CreateHeap() {
|
||||
/* Nonmatching */
|
||||
BOOL daObjHami4_c::CreateHeap() {
|
||||
J3DModelData * modelData = (J3DModelData *)dComIfG_getObjectRes("Hami4", HAMI4_BDL_HAMI4);
|
||||
JUT_ASSERT(0x5f, modelData != NULL);
|
||||
|
||||
if (fopAcM_isSwitch(this, prm_get_swSave())) {
|
||||
this->field_0x378 = 3;
|
||||
this->field_0x37C = 1500.0f;
|
||||
}
|
||||
else {
|
||||
this->field_0x378 = 0;
|
||||
this->field_0x37C = 0.0f;
|
||||
}
|
||||
for (int i = 0; i < 4; i++){
|
||||
mpModels[i] = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
||||
if (mpModels[i] == NULL){
|
||||
return false;
|
||||
}
|
||||
short var = current.angle.y + i*0x4000;
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(var );
|
||||
mDoMtx_stack_c::transM((short)(-field_0x37C * cM_ssin(0x2000)), 0.0f, (short)(-field_0x37C * cM_scos(0x2000)));
|
||||
mDoMtx_stack_c::scaleM(scale);
|
||||
MTXCopy(mDoMtx_stack_c::get(), field_0x2B8[i]);
|
||||
mpModels[i]->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mdBgW[i] = new dBgW();
|
||||
if (mdBgW[i] != NULL) {
|
||||
cBgD_t* bgp = (cBgD_t*)dComIfG_getObjectRes("Hami4", HAMI4_DZB_HAMI4);
|
||||
if(!mdBgW[i]->Set(bgp, dBgW::MOVE_BG_e, &field_0x2B8[i])){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 00000374-00000420 .text CreateInit__12daObjHami4_cFv */
|
||||
void daObjHami4_c::CreateInit() {
|
||||
/* Nonmatching */
|
||||
fopAcM_SetMtx(this, mpModels[0]->getBaseTRMtx());
|
||||
for (int i = 0; i < 4; i++){
|
||||
dComIfG_Bgsp()->Regist(mdBgW[i],this);
|
||||
}
|
||||
fopAcM_setCullSizeBox
|
||||
(this, -10000.0f,-100.0f,-10000.0f,10000.0f,100.0f,10000.0f);
|
||||
fopAcM_setCullSizeFar(this, 1.0f);
|
||||
set_mtx();
|
||||
}
|
||||
|
||||
/* 00000420-000005B8 .text set_mtx__12daObjHami4_cFv */
|
||||
void daObjHami4_c::set_mtx() {
|
||||
/* Nonmatching */
|
||||
for (int i = 0; i < 4; i++){
|
||||
short var = current.angle.y + i*0x4000;
|
||||
mpModels[i]->setBaseScale(scale);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(var );
|
||||
mDoMtx_stack_c::transM((short)(-field_0x37C * cM_ssin(0x2000)), 0.0f, (short)(-field_0x37C * cM_scos(0x2000)));
|
||||
mpModels[i]->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
MTXCopy(mDoMtx_stack_c::get(), field_0x2B8[i]);
|
||||
mdBgW[i]->Move();
|
||||
}
|
||||
}
|
||||
|
||||
/* 000005B8-00000634 .text daObjHami4_close_stop__12daObjHami4_cFv */
|
||||
void daObjHami4_c::daObjHami4_close_stop() {
|
||||
/* Nonmatching */
|
||||
int switchIndex = prm_get_swSave();
|
||||
if (fopAcM_isSwitch(this, switchIndex)) {
|
||||
fopAcM_orderOtherEvent2(this,"AMI4_OPEN",dEvtFlag_NOPARTNER_e);
|
||||
field_0x378 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000634-00000714 .text daObjHami4_open_demo_wait__12daObjHami4_cFv */
|
||||
void daObjHami4_c::daObjHami4_open_demo_wait() {
|
||||
/* Nonmatching */
|
||||
if (eventInfo.checkCommandDemoAccrpt()) {
|
||||
field_0x378 = 2;
|
||||
mDoAud_seStart(JA_SE_READ_RIDDLE_1);
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_SLIDE_AMI_OPEN, 0);
|
||||
} else {
|
||||
fopAcM_orderOtherEvent2(this,"AMI4_OPEN",dEvtFlag_NOPARTNER_e);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000714-000007AC .text daObjHami4_open_demo__12daObjHami4_cFv */
|
||||
void daObjHami4_c::daObjHami4_open_demo() {
|
||||
/* Nonmatching */
|
||||
|
||||
field_0x37C += 10;
|
||||
if (field_0x37C >= 1500.0f) {
|
||||
field_0x37C = 1500.0f;
|
||||
field_0x378 = 3;
|
||||
dComIfGp_getVibration().StartShock(4,-0x21,cXyz(0.0f, 1.0f, 0.0f));
|
||||
dComIfGp_event_reset();
|
||||
}
|
||||
}
|
||||
|
||||
/* 000007AC-000007B0 .text daObjHami4_open_stop__12daObjHami4_cFv */
|
||||
void daObjHami4_c::daObjHami4_open_stop() {
|
||||
/* Nonmatching */
|
||||
void daObjHami4_c::daObjHami4_open_stop() {}
|
||||
|
||||
cPhs_State daObjHami4_c::_create() {
|
||||
fopAcM_SetupActor(this, daObjHami4_c);
|
||||
for (int i = 0; i < 4; i++){
|
||||
mdBgW[i] = NULL;
|
||||
}
|
||||
cPhs_State status = dComIfG_resLoad(&mPhs, "Hami4");
|
||||
if (status == cPhs_COMPLEATE_e) {
|
||||
if(!fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x4900)) {
|
||||
status = cPhs_ERROR_e;
|
||||
} else {
|
||||
CreateInit();
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/* 000007B0-00000870 .text daObjHami4_Create__FPv */
|
||||
static cPhs_State daObjHami4_Create(void*) {
|
||||
/* Nonmatching */
|
||||
static cPhs_State daObjHami4_Create(void* i_this) {
|
||||
return ((daObjHami4_c*)i_this)->_create();
|
||||
}
|
||||
|
||||
|
||||
bool daObjHami4_c::_delete() {
|
||||
for (int i = 0; i < 4; i++){
|
||||
if (mdBgW[i] != NULL && mdBgW[i]->ChkUsed()) {
|
||||
dComIfG_Bgsp()->Release(mdBgW[i]);
|
||||
}
|
||||
}
|
||||
dComIfG_resDeleteDemo(&mPhs,"Hami4");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000870-00000918 .text daObjHami4_Delete__FPv */
|
||||
static BOOL daObjHami4_Delete(void*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daObjHami4_Delete(void* i_this) {
|
||||
return ((daObjHami4_c*)i_this)->_delete();
|
||||
}
|
||||
|
||||
bool daObjHami4_c::_draw() {
|
||||
g_env_light.settingTevStruct(TEV_TYPE_BG0, ¤t.pos, &tevStr);
|
||||
dComIfGd_setListBG();
|
||||
for (int i = 0; i < 4; i++){
|
||||
g_env_light.setLightTevColorType(mpModels[i], &tevStr);
|
||||
mDoExt_modelUpdateDL(mpModels[i]);
|
||||
}
|
||||
dComIfGd_setList();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000918-000009DC .text daObjHami4_Draw__FPv */
|
||||
static BOOL daObjHami4_Draw(void*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daObjHami4_Draw(void* i_this) {
|
||||
return ((daObjHami4_c*)i_this)->_draw();
|
||||
}
|
||||
|
||||
bool daObjHami4_c::_execute() {
|
||||
switch (field_0x378) {
|
||||
case 0:
|
||||
daObjHami4_close_stop();
|
||||
break;
|
||||
case 1:
|
||||
daObjHami4_open_demo_wait();
|
||||
break;
|
||||
case 2:
|
||||
daObjHami4_open_demo();
|
||||
break;
|
||||
case 3:
|
||||
daObjHami4_open_stop();
|
||||
break;
|
||||
}
|
||||
set_mtx();
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/* 000009DC-00000A58 .text daObjHami4_Execute__FPv */
|
||||
static BOOL daObjHami4_Execute(void*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daObjHami4_Execute(void* i_this) {
|
||||
return ((daObjHami4_c*)i_this)->_execute();
|
||||
}
|
||||
|
||||
/* 00000A58-00000A60 .text daObjHami4_IsDelete__FPv */
|
||||
|
||||
Reference in New Issue
Block a user