obj_mato / obj_nagaisu (#2714)

This commit is contained in:
TakaRikka
2025-09-30 12:18:21 +03:00
committed by GitHub
parent 40e61bf913
commit 0520ce1757
5 changed files with 725 additions and 823 deletions
+1 -1
View File
@@ -2096,7 +2096,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_magLiftRot"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_maki"),
ActorRel(Equivalent, "d_a_obj_master_sword"), # weak function and vtable order (dBgS_AcchCir/dBgS_ObjAcch)
ActorRel(NonMatching, "d_a_obj_mato"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mato"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mhole"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mie"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mirror_6pole"),
+34 -14
View File
@@ -2,11 +2,31 @@
#define D_A_OBJ_MATO_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_cc_d.h"
#include "d/d_path.h"
class daObjMATO_c;
struct MatoData_s {
/* 0x000 */ J3DModel* model;
/* 0x004 */ dCcD_Stts ccStts;
/* 0x040 */ dCcD_Cyl ccCyl;
/* 0x17C */ cXyz pos;
/* 0x188 */ cXyz scale;
/* 0x194 */ csXyz rot;
/* 0x19C */ void (daObjMATO_c::*action)(int);
/* 0x1A8 */ void (daObjMATO_c::*prev_action)(int);
/* 0x1B4 */ int mode;
/* 0x1B8 */ s16 rot_speed;
/* 0x1BA */ u8 type;
/* 0x1BB */ u8 is_hit;
/* 0x1BC */ u8 timer;
};
/**
* @ingroup actors-objects
* @class daObjMATO_c
* @brief Target (???)
* @brief Flight by Fowl Rupee Target
*
* @details
*
@@ -20,23 +40,23 @@ public:
/* 80C91F74 */ void wait(int);
/* 80C92044 */ void disappear(int);
/* 80C921A8 */ void getRupee(int);
/* 80C922AC */ void execute();
/* 80C92380 */ void _delete();
/* 80C922AC */ int execute();
/* 80C92380 */ int _delete();
/* 80C9243C */ void setBaseMtx();
/* 80C92650 */ void mato_init();
/* 80C927AC */ void create();
/* 80C92650 */ int mato_init();
/* 80C927AC */ int create();
private:
/* 0x568 */ u8 field_0x568[0x39f8 - 0x568];
inline int CreateHeap();
inline int draw();
/* 0x0568 */ request_of_phase_process_class mPhase;
/* 0x0570 */ dPath* mpPath;
/* 0x0574 */ MatoData_s mData[30];
/* 0x39F4 */ u16 field_0x39f4;
/* 0x39F6 */ u8 field_0x39f6;
/* 0x39F7 */ u8 mIsAddSimpleModel;
};
STATIC_ASSERT(sizeof(daObjMATO_c) == 0x39f8);
struct MatoData_s {
public:
/* 80C92924 */ ~MatoData_s();
/* 80C92A50 */ MatoData_s();
};
#endif /* D_A_OBJ_MATO_H */
+46 -27
View File
@@ -5,6 +5,40 @@
#include "d/d_cc_d.h"
#include "d/d_model.h"
class daObjNagaisu_c;
// child seat / couch?
class daObjIsuChild_c {
public:
/* 80C9FA90 */ daObjIsuChild_c();
/* 80C9FCDC */ virtual ~daObjIsuChild_c();
/* 80C9FD4C */ int createHeap();
/* 80C9FE28 */ void create(daObjNagaisu_c*, dCcD_Stts*);
/* 80C9FF54 */ int execute();
/* 80CA0034 */ int draw(dMdl_c*);
/* 80CA00B8 */ int Delete();
/* 80CA0118 */ bool chkHit();
/* 80CA0180 */ void callEmt();
void setDeadFlg(bool i_flg) { mIsDead = i_flg; }
bool getDeadFlg() { return mIsDead; }
void setPos(const cXyz& i_pos) {
mPos.x = i_pos.x;
mPos.y = i_pos.y;
mPos.z = i_pos.z;
}
static const dCcD_SrcCyl s_CcDCyl;
/* 0x004 */ dMdl_obj_c mMdlObj;
/* 0x038 */ Vec mPos;
/* 0x044 */ dCcD_Cyl mCcCyl[2];
/* 0x2BC */ Mtx mBgMtx;
/* 0x2EC */ dBgW* mpBgW;
/* 0x2F0 */ bool mIsDead;
};
/**
* @ingroup actors-objects
* @class daObjNagaisu_c
@@ -13,40 +47,25 @@
* @details
*
*/
class daObjNagaisu_c : public fopAc_ac_c {
class daObjNagaisu_c : public fopAc_ac_c, public request_of_phase_process_class {
public:
/* 80C9F3D8 */ daObjNagaisu_c();
/* 80C9F4B8 */ ~daObjNagaisu_c();
/* 80C9F5A8 */ void createHeap();
/* 80C9F668 */ void create();
/* 80C9F7A8 */ void Delete();
/* 80C9F81C */ void draw();
/* 80C9F8C4 */ void execute();
/* 80C9F4B8 */ virtual ~daObjNagaisu_c();
/* 80C9F5A8 */ int createHeap();
/* 80C9F668 */ int create();
/* 80C9F7A8 */ int Delete();
/* 80C9F81C */ int draw();
/* 80C9F8C4 */ int execute();
/* 80C9F914 */ void init();
/* 80C9F944 */ void setIsu();
static u8 const REMOVE_ISU_IDX[28];
private:
/* 0x568 */ u8 field_0x568[0xb6e4 - 0x568];
static const int REMOVE_ISU_IDX[];
/* 0x574 */ J3DModel* mpModel;
/* 0x578 */ dCcD_Stts mCcStts;
/* 0x5B4 */ daObjIsuChild_c mChild[60];
};
STATIC_ASSERT(sizeof(daObjNagaisu_c) == 0xb6e4);
// child seat / couch?
class daObjIsuChild_c {
public:
/* 80C9FA90 */ daObjIsuChild_c();
/* 80C9FCDC */ ~daObjIsuChild_c();
/* 80C9FD4C */ void createHeap();
/* 80C9FE28 */ void create(daObjNagaisu_c*, dCcD_Stts*);
/* 80C9FF54 */ void execute();
/* 80CA0034 */ void draw(dMdl_c*);
/* 80CA00B8 */ void Delete();
/* 80CA0118 */ void chkHit();
/* 80CA0180 */ void callEmt();
static u8 const s_CcDCyl[68];
};
#endif /* D_A_OBJ_NAGAISU_H */
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff