mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-31 09:21:34 -04:00
d_a_sie_flag (#799)
* match CheckCreateHeap, start _delete * Match daSie_Flag_c::_draw * Approach daSie_Flag_c::set_mtx * fix l_flag_offset * approach daSie_Flag_c::CreateInit * Approach daSie_Flag_c::_create * Approach daSie_Flag_c::CreateHeap * Use the original var name * Reformat * approach daSie_Flag_c::_execute * Find the correct virtual function * Use cylinder struct * simplify set_mtx * start matching daSie_Flag_HIO_c class * Fix constants * Match daSie_Flag_c::_create * Match daSie_Flag_c::_execute better * 100% daSie_Flag_c::set_mtx * Match bss * use .abs() method instead of own implementation * Fix resource header * Match data * Match _execute + fix inline usages * use simple bool where possible * fix const order * mark d_a_sie_flag matching for non-demo * Fixes after review
This commit is contained in:
+1
-1
@@ -1519,7 +1519,7 @@ config.libs = [
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_shand", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(NonMatching, "d_a_ship", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(Equivalent, "d_a_shop_item"), # weak func order
|
||||
ActorRel(NonMatching, "d_a_sie_flag"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_sie_flag", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(NonMatching, "d_a_sitem"),
|
||||
ActorRel(NonMatching, "d_a_ss"),
|
||||
ActorRel(NonMatching, "d_a_sss"),
|
||||
|
||||
@@ -9,13 +9,15 @@
|
||||
class daSie_Flag_c : public fopAc_ac_c {
|
||||
public:
|
||||
void set_mtx();
|
||||
void CreateHeap();
|
||||
void CreateInit();
|
||||
BOOL CreateHeap();
|
||||
cPhs_State CreateInit();
|
||||
cPhs_State _create();
|
||||
bool _delete();
|
||||
bool _execute();
|
||||
bool _draw();
|
||||
|
||||
static const char M_arcname[];
|
||||
|
||||
public:
|
||||
/* 0x290 */ request_of_phase_process_class mPhsEshata;
|
||||
/* 0x298 */ request_of_phase_process_class mPhsCloth;
|
||||
@@ -25,14 +27,20 @@ public:
|
||||
/* 0x2B4 */ dKy_tevstr_c mTevStr;
|
||||
/* 0x364 */ dCcD_Stts mStts;
|
||||
/* 0x3A0 */ dCcD_Cyl mCyl;
|
||||
/* 0x4D0 */ dCcD_Cyl mCyl2;
|
||||
};
|
||||
|
||||
class daSie_Flag_HIO_c {
|
||||
public:
|
||||
daSie_Flag_HIO_c();
|
||||
|
||||
virtual ~daSie_Flag_HIO_c() {};
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
/* 0x00 */ //vtable
|
||||
/* 0x04 */ s8 m04;
|
||||
/* 0x08 */ f32 m08;
|
||||
/* 0x0C */ s16 m0c;
|
||||
};
|
||||
|
||||
#endif /* D_A_SIE_FLAG_H */
|
||||
|
||||
+112
-14
@@ -4,9 +4,18 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_sie_flag.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_priority.h"
|
||||
#include "d/d_a_obj.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_kankyo.h"
|
||||
#include "d/d_kankyo_wether.h"
|
||||
#include "d/d_priority.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/res/res_cloth.h"
|
||||
#include "d/res/res_eshata.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "weak_bss_936_to_1036.h" // IWYU pragma: keep
|
||||
|
||||
static dCcD_SrcCyl l_cyl_src = {
|
||||
// dCcD_SrcGObjInf
|
||||
@@ -38,50 +47,139 @@ static dCcD_SrcCyl l_cyl_src = {
|
||||
},
|
||||
};
|
||||
|
||||
static daSie_Flag_HIO_c l_HIO;
|
||||
|
||||
static cXyz l_flag_offset(0.0f, 900.0f, 0.0f);
|
||||
static cXyz l_wind_offset(0.0f, 725.0f, 0.0f);
|
||||
|
||||
/* 000000EC-00000118 .text __ct__16daSie_Flag_HIO_cFv */
|
||||
daSie_Flag_HIO_c::daSie_Flag_HIO_c() {
|
||||
/* Nonmatching */
|
||||
m04 = -1;
|
||||
m08 = 0.0f;
|
||||
m0c = 0;
|
||||
}
|
||||
|
||||
const char daSie_Flag_c::M_arcname[] = "Eshata";
|
||||
|
||||
/* 00000118-000001C4 .text set_mtx__12daSie_Flag_cFv */
|
||||
void daSie_Flag_c::set_mtx() {
|
||||
/* Nonmatching */
|
||||
mpModel->setBaseScale(scale);
|
||||
|
||||
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
|
||||
mDoMtx_stack_c::ZXYrotM(shape_angle);
|
||||
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mDoMtx_stack_c::transM(l_flag_offset);
|
||||
mpClothPacket->setMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
|
||||
/* 000001C4-000001E4 .text CheckCreateHeap__FP10fopAc_ac_c */
|
||||
static BOOL CheckCreateHeap(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL CheckCreateHeap(fopAc_ac_c* i_actor) {
|
||||
return static_cast<daSie_Flag_c*>(i_actor)->CreateHeap();
|
||||
}
|
||||
|
||||
/* 000001E4-0000030C .text CreateHeap__12daSie_Flag_cFv */
|
||||
void daSie_Flag_c::CreateHeap() {
|
||||
/* Nonmatching */
|
||||
BOOL daSie_Flag_c::CreateHeap() {
|
||||
J3DModelData *modelData = (J3DModelData*)dComIfG_getObjectRes(M_arcname, ESHATA_BDL_ESHATA);
|
||||
JUT_ASSERT(0x109, modelData != NULL);
|
||||
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
||||
if (mpModel == NULL) {
|
||||
return FALSE;
|
||||
} else {
|
||||
ResTIMG* eshata_timg = (ResTIMG*)dComIfG_getObjectRes(M_arcname, ESHATA_BTI_ESHATA);
|
||||
ResTIMG* cloth_timg = (ResTIMG*)dComIfG_getObjectRes("Cloth", CLOTH_BTI_CLOTHTOON);
|
||||
mpClothPacket = dCloth_packet_create(eshata_timg, cloth_timg, 5, 5, 700.0f, 350.0, &mTevStr, NULL);
|
||||
return mpClothPacket != NULL ? TRUE : FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* 0000030C-000003D4 .text CreateInit__12daSie_Flag_cFv */
|
||||
void daSie_Flag_c::CreateInit() {
|
||||
/* Nonmatching */
|
||||
cPhs_State daSie_Flag_c::CreateInit() {
|
||||
mStts.Init(0xFF, 0xFF, this);
|
||||
|
||||
mCyl.Set(l_cyl_src);
|
||||
mCyl.SetStts(&mStts);
|
||||
|
||||
mWindvec = *dKyw_get_wind_vec();
|
||||
|
||||
set_mtx();
|
||||
cullMtx = mpModel->getBaseTRMtx();
|
||||
fopAcM_setCullSizeBox(this, -700.0f, 0.0f, -700.0f, 700.0f, 1100.0f, 700.0f);
|
||||
dKy_tevstr_init(&mTevStr, fopAcM_GetRoomNo(this), 0xFF);
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
/* 000003D4-00000488 .text _create__12daSie_Flag_cFv */
|
||||
cPhs_State daSie_Flag_c::_create() {
|
||||
/* Nonmatching */
|
||||
fopAcM_SetupActor(this, daSie_Flag_c);
|
||||
|
||||
cPhs_State result = dComIfG_resLoad(&mPhsEshata, M_arcname);
|
||||
if (result != cPhs_COMPLEATE_e) {
|
||||
return result;
|
||||
}
|
||||
|
||||
result = dComIfG_resLoad(&mPhsCloth, "Cloth");
|
||||
if (result != cPhs_COMPLEATE_e) {
|
||||
return result;
|
||||
}
|
||||
|
||||
if (fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x1020)) {
|
||||
return CreateInit();
|
||||
} else {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000814-00000864 .text _delete__12daSie_Flag_cFv */
|
||||
bool daSie_Flag_c::_delete() {
|
||||
/* Nonmatching */
|
||||
dComIfG_resDelete(&mPhsEshata, M_arcname);
|
||||
dComIfG_resDelete(&mPhsCloth, "Cloth");
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 00000864-00000B08 .text _execute__12daSie_Flag_cFv */
|
||||
bool daSie_Flag_c::_execute() {
|
||||
/* Nonmatching */
|
||||
cXyz allwind;
|
||||
cXyz position_plus_offset;
|
||||
|
||||
set_mtx();
|
||||
mStts.Move();
|
||||
|
||||
if (mCyl.ChkTgHit() != 0) {
|
||||
daObj::HitSeStart(fopAcM_GetPosition_p(this), fopAcM_GetRoomNo(this), &mCyl, 0x0B);
|
||||
}
|
||||
|
||||
fopAcM_rollPlayerCrash(this, 40.0f, 0x07);
|
||||
|
||||
position_plus_offset = fopAcM_GetPosition(this) + l_flag_offset;
|
||||
allwind = dKyw_get_AllWind_vecpow(&position_plus_offset);
|
||||
if (allwind.abs() > mWindvec.abs()) {
|
||||
mWindvec = allwind;
|
||||
} else {
|
||||
cLib_addCalcPos2(&mWindvec, allwind, 0.1f, 0.1f);
|
||||
}
|
||||
|
||||
mCyl.SetC(current.pos);
|
||||
dComIfG_Ccsp()->Set(&mCyl);
|
||||
|
||||
mpClothPacket->setParam(0.4f, -0.75f, 0.9f, 1.0f, 1.0f, 0x400, 0, 900, -800, 7.0f, 6.0f);
|
||||
mpClothPacket->setWindPower(13.0f, 8.0f);
|
||||
mpClothPacket->setGlobalWind(&mWindvec);
|
||||
mpClothPacket->cloth_move();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 00000B08-00000B94 .text _draw__12daSie_Flag_cFv */
|
||||
bool daSie_Flag_c::_draw() {
|
||||
/* Nonmatching */
|
||||
g_env_light.settingTevStruct(TEV_TYPE_BG0, ¤t.pos, &tevStr);
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &mTevStr);
|
||||
g_env_light.setLightTevColorType(mpModel, &tevStr);
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
mpClothPacket->cloth_draw();
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 00000B94-00000BB4 .text daSie_FlagCreate__FPv */
|
||||
|
||||
Reference in New Issue
Block a user