mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-24 23:01:23 -04:00
a290c2d52c
* d_a_npc_ks debug code 100% * d_a_npc_rafrel debug code 100% * d_a_npc_inko minor improvements * d_a_npc_gro debug code 100% * d_a_npc_pachi_taro debug code 100% * d_a_npc_passer debug code 100% * d_a_npc_pachi_maro debug code 100% * d_a_npc_post debug code 100% * d_a_obj_bemos debug improvements * d_a_obj_scannon_ten debug code 100% * d_a_b_mgn debug code 100% * d_a_e_fb debug code 100% * d_a_e_gb debug code 100% * d_a_e_hz debug code 100% * d_a_e_cr_egg debug code 100% * d_a_e_md debug code 100% * d_a_e_wb debug code 100% * d_a_obj_mirror_6pole debug code 100% * d_a_obj_spinLift debug data fixes * d_a_obj_pdwall debug data fixes * d_a_obj_ss_drink debug code almost matching * d_a_obj_poFire debug code 100% * d_a_obj_picture debug code 100% * d_a_obj_dust debug code 100% * d_a_obj_fallobj debug code 100% * d_a_obj_itamato debug code almost matching * d_a_obj_syRock debug code 100% * d_a_obj_katatsumuri debug code 100% * d_a_obj_wood_statue debug code 100% * d_a_obj_lv6egate debug code 100% * d_a_tag_qs minor debug symbol fixes * d_a_obj_twGate debug code 100% * d_a_obj_lv6SwGate debug code 100% * d_a_obj_lv6swturn debug code 100% * d_a_obj_lv6Tenbin debug code 100% * d_a_obj_kwheel01 debug code 100% * Fix RTTI order regression (cM3dGCyl vs cBgS_*)
151 lines
3.6 KiB
C++
151 lines
3.6 KiB
C++
#ifndef D_A_OBJ_ITAMATO_H
|
|
#define D_A_OBJ_ITAMATO_H
|
|
|
|
#include "JSystem/JHostIO/JORFile.h"
|
|
#include "f_op/f_op_actor_mng.h"
|
|
#include "d/actor/d_a_arrow.h"
|
|
#include "d/d_cc_d.h"
|
|
|
|
/**
|
|
* @ingroup actors-objects
|
|
* @class daObj_ItaMato_c
|
|
* @brief Plank Target
|
|
*
|
|
* @details
|
|
*
|
|
*/
|
|
|
|
struct daObj_ItaMato_HIOParam {
|
|
/* 0x00 */ f32 attn_offset;
|
|
/* 0x04 */ f32 gravity;
|
|
/* 0x08 */ f32 scale;
|
|
/* 0x0C */ f32 real_shadow_size;
|
|
/* 0x10 */ f32 shake_pow;
|
|
};
|
|
|
|
class daObj_ItaMato_Param_c {
|
|
public:
|
|
virtual ~daObj_ItaMato_Param_c() {}
|
|
|
|
static daObj_ItaMato_HIOParam const m;
|
|
};
|
|
|
|
#if DEBUG
|
|
#define OBJ_ITAMATO_HIO_CLASS daObj_ItaMato_HIO_c
|
|
|
|
class daObj_ItaMato_HIO_c : public mDoHIO_entry_c {
|
|
public:
|
|
daObj_ItaMato_HIO_c();
|
|
void genMessage(JORMContext* ctx);
|
|
void listenPropertyEvent(const JORPropertyEvent*);
|
|
|
|
/* 0x8 */ daObj_ItaMato_HIOParam m;
|
|
};
|
|
#else
|
|
#define OBJ_ITAMATO_HIO_CLASS daObj_ItaMato_Param_c
|
|
#endif
|
|
|
|
class daObj_ItaMato_c : public fopAc_ac_c {
|
|
private:
|
|
/* 0x568 */ OBJ_ITAMATO_HIO_CLASS* mHIO;
|
|
/* 0x56C */ request_of_phase_process_class mPhase;
|
|
/* 0x574 */ J3DModel* mpModels[2];
|
|
/* 0x57C */ dBgS_ObjAcch mBgc;
|
|
/* 0x754 */ dCcD_Stts mStts;
|
|
/* 0x790 */ dBgS_AcchCir mAcchCir;
|
|
/* 0x7D0 */ cBgS_GndChk mGndChk;
|
|
/* 0x80C */ dCcD_Sph mSph;
|
|
/* 0x944 */ cM3dGLin mLin;
|
|
/* 0x960 */ dBgS_LinChk mLinChk;
|
|
/* 0x9D0 */ csXyz field_0x9d0[3];
|
|
/* 0x9E4 */ int mCutType;
|
|
/* 0x9E8 */ int field_0x9e8;
|
|
/* 0x9EC */ f32 mGroundH;
|
|
/* 0x9F0 */ f32 field_0x9f0[3];
|
|
/* 0x9FC */ s16 field_0x9fc[3];
|
|
/* 0xA02 */ s16 field_0xa02;
|
|
/* 0xA04 */ u32 mShadowKey;
|
|
/* 0xA08 */ u32 mPrtcls[3];
|
|
/* 0xA14 */ u8 mType;
|
|
/* 0xA15 */ u8 field_0xa15;
|
|
/* 0xA15 */ u8 field_0xa16;
|
|
/* 0xA17 */ u8 field_0xa17;
|
|
/* 0xA18 */ u8 field_0xa18;
|
|
/* 0xA19 */ u8 mFake;
|
|
|
|
public:
|
|
daObj_ItaMato_c() {}
|
|
virtual ~daObj_ItaMato_c();
|
|
cPhs_Step create();
|
|
int CreateHeap();
|
|
int Delete();
|
|
int Execute();
|
|
int Draw();
|
|
static int createHeapCallBack(fopAc_ac_c*);
|
|
static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
|
|
const char* getResName();
|
|
void setSwayParam(fopAc_ac_c*);
|
|
void setPrtcls();
|
|
void setEnvTevColor();
|
|
void setRoomNo();
|
|
void setMtx();
|
|
|
|
u8 getBitSW2() { return (fopAcM_GetParam(this) & 0xFF0000) >> 16; }
|
|
|
|
u8 getBitSW() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }
|
|
|
|
int getNo() {
|
|
u8 var_r31 = fopAcM_GetParam(this) & 0xFF;
|
|
|
|
int no;
|
|
if (var_r31 == 0xFF) {
|
|
no = -1;
|
|
} else {
|
|
no = var_r31;
|
|
}
|
|
|
|
return no;
|
|
}
|
|
|
|
u8 getType() { return 0; }
|
|
|
|
void setCutType(u8 i_cutType) { mCutType = i_cutType; }
|
|
|
|
int checkCrs(fopAc_ac_c* param_0, cXyz param_1, cXyz param_2, f32 param_3) {
|
|
daArrow_c* arrow_p = (daArrow_c*)param_0;
|
|
cM3dGSph sp38;
|
|
cXyz sp2C;
|
|
cXyz sp20;
|
|
|
|
JUT_ASSERT(170, NULL != arrow_p);
|
|
|
|
if (field_0xa16 != 0 || health == 0) {
|
|
return 0;
|
|
}
|
|
|
|
sp38.Set(mSph.GetShapeP()->GetC(), mSph.GetShapeP()->GetR() + (arrow_p->getArrowAtR() * 2.0f));
|
|
if ((param_1 - current.pos).abs() < param_3) {
|
|
mLin.SetStartEnd(param_1, param_2);
|
|
if (cM3d_Cross_LinSph(&mLin, &sp38)) {
|
|
return 3;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
BOOL checkBrk() {
|
|
if (field_0xa15 != 0) {
|
|
return 4;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void onFake() { mFake = true; }
|
|
};
|
|
|
|
STATIC_ASSERT(sizeof(daObj_ItaMato_c) == 0xa20);
|
|
|
|
#endif /* D_A_OBJ_ITAMATO_H */
|