mirror of
https://github.com/zeldaret/tp
synced 2026-06-27 18:53:08 -04:00
d_a_obj_twGate Matching (#2555)
* d_a_obj_twGate Matching * d_a_obj_volcbom OK
This commit is contained in:
@@ -67,11 +67,13 @@ public:
|
||||
|
||||
STATIC_ASSERT(sizeof(e_bu_class) == 0xaa4);
|
||||
|
||||
class daE_BU_HIO_c {
|
||||
class daE_BU_HIO_c : public JORReflexible {
|
||||
public:
|
||||
/* 806911AC */ daE_BU_HIO_c();
|
||||
/* 806941D4 */ virtual ~daE_BU_HIO_c() {}
|
||||
|
||||
void genMessage(JORMContext* ctx);
|
||||
|
||||
/* 0x04 */ s8 id;
|
||||
/* 0x08 */ f32 base_size;
|
||||
/* 0x0C */ f32 fly_speed;
|
||||
|
||||
@@ -118,6 +118,8 @@ public:
|
||||
/* 8082902C */ daE_ZH_HIO_c();
|
||||
/* 8082F160 */ virtual ~daE_ZH_HIO_c() {}
|
||||
|
||||
void genMessage(JORMContext* ctx);
|
||||
|
||||
// ボールマスター (Ball Master)
|
||||
/* 0x04 */ s8 field_0x4;
|
||||
/* 0x08 */ f32 model_size; // モデルサイズ (Model Size)
|
||||
|
||||
@@ -136,6 +136,7 @@ public:
|
||||
FLG0_UNK_4 = 4,
|
||||
FLG0_UNK_2 = 2,
|
||||
FLG0_UNK_1 = 1,
|
||||
FLG0_TAG_PORTAL = FLG0_TAG_WAIT | FLG0_PORTAL_OBJ_CALL,
|
||||
};
|
||||
|
||||
enum daMidna_FLG1 {
|
||||
@@ -298,6 +299,11 @@ public:
|
||||
onEndResetStateFlg0(ERFLG0_UNK_2);
|
||||
}
|
||||
|
||||
void onTagWaitPosPortalObj(const cXyz& i_pos) {
|
||||
mTagWaitPos = i_pos;
|
||||
onStateFlg0(FLG0_TAG_PORTAL);
|
||||
}
|
||||
|
||||
void onTagWaitPos(const cXyz* param_0) {
|
||||
mTagWaitPos = *param_0;
|
||||
onStateFlg0(FLG0_TAG_WAIT);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define D_A_OBJ_TWGATE_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_bg_s_movebg_actor.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-objects
|
||||
@@ -11,24 +12,36 @@
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
class daTwGate_c : public fopAc_ac_c {
|
||||
class daTwGate_c : public dBgS_MoveBgActor {
|
||||
public:
|
||||
/* 80D1FB84 */ void setBaseMtx();
|
||||
/* 80D1FC0C */ void CreateHeap();
|
||||
/* 80D1FD44 */ void create();
|
||||
/* 80D1FFA4 */ void Execute(f32 (**)[3][4]);
|
||||
/* 80D200B4 */ void Draw();
|
||||
/* 80D20180 */ void Delete();
|
||||
/* 80D1FC0C */ int CreateHeap();
|
||||
/* 80D1FD44 */ int create();
|
||||
/* 80D1FFA4 */ int Execute(Mtx**);
|
||||
/* 80D200B4 */ int Draw();
|
||||
/* 80D20180 */ int Delete();
|
||||
|
||||
int getGateType() { return fopAcM_GetParamBit(this, 4, 8); }
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x5fc - 0x568];
|
||||
/* 0x5A0 */ request_of_phase_process_class mPhase;
|
||||
/* 0x5A8 */ J3DModel* mModel;
|
||||
/* 0x5AC */ mDoExt_btkAnm mBtk;
|
||||
/* 0x5C4 */ mDoExt_brkAnm mBrk;
|
||||
/* 0x5DC */ u8 mGateType;
|
||||
/* 0x5E0 */ cM3dGLin mLine;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daTwGate_c) == 0x5fc);
|
||||
|
||||
class daTwGate_HIO_c {
|
||||
class daTwGate_HIO_c : public fOpAcm_HIO_entry_c {
|
||||
public:
|
||||
/* 80D1FAAC */ daTwGate_HIO_c();
|
||||
/* 80D2024C */ ~daTwGate_HIO_c();
|
||||
/* 80D2024C */ ~daTwGate_HIO_c() {}
|
||||
|
||||
void genMessage(JORMContext* ctx);
|
||||
|
||||
/* 0x4 */ f32 mRange;
|
||||
};
|
||||
|
||||
#endif /* D_A_OBJ_TWGATE_H */
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#ifndef D_A_OBJ_VOLCBOM_H
|
||||
#define D_A_OBJ_VOLCBOM_H
|
||||
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_bg_s_movebg_actor.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_msg_flow.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
/**
|
||||
@@ -11,14 +15,33 @@
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
class daObjVolcBom_c : public fopAc_ac_c {
|
||||
class daObjVolcBom_c : public dBgS_MoveBgActor {
|
||||
public:
|
||||
typedef void (daObjVolcBom_c::*modeFunc)();
|
||||
typedef void (daObjVolcBom_c::*actionFunc)();
|
||||
|
||||
enum Mode {
|
||||
MODE_WAIT_APPEAR,
|
||||
MODE_FALL,
|
||||
MODE_WAIT_END_FALL_DEMO,
|
||||
MODE_WAIT,
|
||||
};
|
||||
|
||||
enum Action {
|
||||
ACTION_WAIT,
|
||||
ACTION_ORDER_EVENT,
|
||||
ACTION_TALK_EVENT,
|
||||
ACTION_WARP_EVENT,
|
||||
ACTION_ORDER_A_TALK_EVENT,
|
||||
ACTION_DEAD,
|
||||
};
|
||||
|
||||
/* 80D241E0 */ void initBaseMtx();
|
||||
/* 80D24238 */ void setBaseMtx();
|
||||
/* 80D242A8 */ void Create();
|
||||
/* 80D244E0 */ void CreateHeap();
|
||||
/* 80D248F4 */ void create1st();
|
||||
/* 80D249D0 */ void Execute(f32 (**)[3][4]);
|
||||
/* 80D242A8 */ int Create();
|
||||
/* 80D244E0 */ int CreateHeap();
|
||||
/* 80D248F4 */ int create1st();
|
||||
/* 80D249D0 */ int Execute(Mtx**);
|
||||
/* 80D24A2C */ void mode_proc_call();
|
||||
/* 80D24B18 */ void init_modeWaitAppear();
|
||||
/* 80D24B6C */ void modeWaitAppear();
|
||||
@@ -33,7 +56,7 @@ public:
|
||||
/* 80D25224 */ void appear();
|
||||
/* 80D25230 */ void disappear();
|
||||
/* 80D2523C */ void setSmoke();
|
||||
/* 80D252C8 */ void checkTalkDistance();
|
||||
/* 80D252C8 */ bool checkTalkDistance();
|
||||
/* 80D25364 */ void calcMidnaWaitPos();
|
||||
/* 80D253FC */ void setSrcEffect();
|
||||
/* 80D25528 */ void setBindEffect();
|
||||
@@ -51,20 +74,82 @@ public:
|
||||
/* 80D25EE4 */ void actionDead();
|
||||
/* 80D25EE8 */ void demoProc();
|
||||
/* 80D26468 */ void calcObjPos();
|
||||
/* 80D264E8 */ void Draw();
|
||||
/* 80D266FC */ void Delete();
|
||||
/* 80D264E8 */ int Draw();
|
||||
/* 80D266FC */ int Delete();
|
||||
|
||||
void startFall() { field_0x95f = 1; }
|
||||
void startSearch() { field_0x960 = 1; }
|
||||
void setAction(u8 action) { mAction = action; }
|
||||
u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
|
||||
u8 getArg0() { return fopAcM_GetParamBit(this, 16, 8); }
|
||||
u16 getMsgID() { return mMsgID; }
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x95F - 0x568];
|
||||
/* 0x5A0 */ request_of_phase_process_class mPhase;
|
||||
/* 0x5A8 */ J3DModel* mModel1;
|
||||
/* 0x5AC */ mDoExt_btkAnm* mBtk1;
|
||||
/* 0x5B0 */ mDoExt_brkAnm* mBrk1;
|
||||
/* 0x5B4 */ mDoExt_bckAnm* mBck1;
|
||||
/* 0x5B8 */ J3DModel* mModel2;
|
||||
/* 0x5BC */ mDoExt_btkAnm* mBtk2;
|
||||
/* 0x5C0 */ mDoExt_brkAnm* mBrk2;
|
||||
/* 0x5C4 */ JPABaseEmitter* mSmokeEmitter;
|
||||
/* 0x5C8 */ u8 mSmokeTimer;
|
||||
/* 0x5C9 */ bool field_0x5c9;
|
||||
/* 0x5CA */ u8 mAction;
|
||||
/* 0x5CB */ bool field_0x5cb;
|
||||
/* 0x5CC */ dBgS_ObjAcch mAcch;
|
||||
/* 0x7A4 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x7E4 */ dCcD_Stts mStts;
|
||||
/* 0x820 */ dCcD_Cyl mCyl;
|
||||
/* 0x95C */ u8 mDemoTimer;
|
||||
/* 0x95D */ u8 mWaitAppearState;
|
||||
/* 0x95E */ bool field_0x95e;
|
||||
/* 0x95F */ u8 field_0x95f;
|
||||
/* 0x960 */ u8 field_0x960;
|
||||
/* 0x961 */ u8 field_0x961[0xA1C - 0x961];
|
||||
/* 0x960 */ bool field_0x960;
|
||||
/* 0x961 */ u8 mMode;
|
||||
/* 0x962 */ bool misAppearing;
|
||||
/* 0x963 */ bool mIsMsgIDInit;
|
||||
/* 0x964 */ u16 mMsgID;
|
||||
/* 0x968 */ cXyz mLightPosWorld;
|
||||
/* 0x974 */ u32 mShadowID;
|
||||
/* 0x978 */ f32 field_0x978;
|
||||
/* 0x97C */ f32 mBaseScale;
|
||||
/* 0x980 */ cXyz mWarpSEPos;
|
||||
/* 0x98C */ cXyz mWaitSEPos;
|
||||
/* 0x998 */ cXyz mMidnaWaitPos;
|
||||
/* 0x9A4 */ dMsgFlow_c mMsgFlow;
|
||||
/* 0x9F0 */ s16 mEventId;
|
||||
/* 0x9F4 */ int mStaffId;
|
||||
/* 0x9F8 */ JPABaseEmitter* mStartEmitters[3];
|
||||
/* 0xA04 */ JPABaseEmitter* mDisappearEmitters[1];
|
||||
/* 0xA08 */ JPABaseEmitter* mBindEmitters[4];
|
||||
/* 0xA18 */ u16 mEffectJntNo;
|
||||
/* 0xA1A */ bool field_0xa1a;
|
||||
/* 0xA1B */ u8 mNaviTimer;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjVolcBom_c) == 0xa1c);
|
||||
|
||||
#ifdef DEBUG
|
||||
class daObjVolcBom_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daObjVolcBom_HIO_c();
|
||||
void genMessage(JORMContext* ctx);
|
||||
|
||||
/* 0x04 */ u8 field_0x04;
|
||||
/* 0x08 */ f32 field_0x08;
|
||||
/* 0x0C */ u8 field_0x0c[0x14 - 0x0c];
|
||||
/* 0x14 */ u8 field_0x14;
|
||||
/* 0x15 */ u8 field_0x15;
|
||||
/* 0x18 */ f32 field_0x18;
|
||||
/* 0x1C */ f32 field_0x1c;
|
||||
/* 0x20 */ f32 field_0x20;
|
||||
/* 0x24 */ f32 field_0x24;
|
||||
/* 0x28 */ u8 field_0x28[0x34 - 0x28];
|
||||
/* 0x34 */ u8 field_0x34;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* D_A_OBJ_VOLCBOM_H */
|
||||
|
||||
@@ -437,7 +437,7 @@ public:
|
||||
FLG3_COPY_ROD_ATN_KEEP = 0x10000000,
|
||||
FLG3_BOOMERANG_ATN_KEEP = 0x8000000,
|
||||
FLG3_UNK_4000000 = 0x4000000,
|
||||
FLG3_UNK_2000000 = 0x2000000,
|
||||
FLG3_WARP_OBJ_DEMO = 0x2000000,
|
||||
FLG3_UNK_1000000 = 0x1000000,
|
||||
FLG3_UNK_800000 = 0x800000,
|
||||
FLG3_UNK_400000 = 0x400000,
|
||||
@@ -963,6 +963,7 @@ public:
|
||||
}
|
||||
}
|
||||
void onMidnaTalkPolySpeed() { onNoResetFlg3(FLG3_MIDNA_TALK_POLY_SPEED); }
|
||||
void onWarpObjDemo() { onNoResetFlg3(FLG3_WARP_OBJ_DEMO); }
|
||||
|
||||
void offCargoCarry() {
|
||||
if (checkCargoCarry()) {
|
||||
|
||||
@@ -3517,6 +3517,10 @@ inline BOOL dComIfGp_evmng_startCheck(char const* i_event) {
|
||||
return g_dComIfG_gameInfo.play.getEvtManager().startCheckOld(i_event);
|
||||
}
|
||||
|
||||
inline BOOL dComIfGp_evmng_startCheck(s16 i_eventId) {
|
||||
return g_dComIfG_gameInfo.play.getEvtManager().startCheck(i_eventId);
|
||||
}
|
||||
|
||||
inline BOOL dComIfGp_evmng_endCheck(const char* event) {
|
||||
return g_dComIfG_gameInfo.play.getEvtManager().endCheckOld(event);
|
||||
}
|
||||
|
||||
@@ -88,6 +88,18 @@ struct fopAcM_search_prm {
|
||||
|
||||
struct fOpAcm_HIO_entry_c : public mDoHIO_entry_c {
|
||||
virtual ~fOpAcm_HIO_entry_c() {}
|
||||
|
||||
#ifdef DEBUG
|
||||
void removeHIO(const fopAc_ac_c* i_this) { removeHIO(*i_this); }
|
||||
void removeHIO(const fopAc_ac_c& i_this) { removeHIO(static_cast<const leafdraw_class&>(i_this)); }
|
||||
void removeHIO(const leafdraw_class& i_this) { removeHIO(i_this.base); }
|
||||
void removeHIO(const base_process_class& i_this) { removeHIO(i_this.state); }
|
||||
void removeHIO(const state_class& state) {
|
||||
if (state.create_phase == cPhs_NEXT_e) {
|
||||
mDoHIO_entry_c::removeHIO();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
class l_HIO {
|
||||
|
||||
@@ -14,14 +14,18 @@ typedef struct process_method_class process_method_class;
|
||||
typedef struct process_profile_definition process_profile_definition;
|
||||
typedef struct profile_method_class profile_method_class;
|
||||
|
||||
typedef struct state_class {
|
||||
/* 0x00 */ s8 init_state; // maybe inaccurate name
|
||||
/* 0x01 */ u8 create_phase;
|
||||
} state_class;
|
||||
|
||||
typedef struct base_process_class {
|
||||
/* 0x00 */ int type;
|
||||
/* 0x04 */ fpc_ProcID id;
|
||||
/* 0x08 */ s16 name;
|
||||
/* 0x0A */ s8 unk_0xA;
|
||||
/* 0x0B */ u8 pause_flag;
|
||||
/* 0x0C */ s8 init_state; // maybe inaccurate name
|
||||
/* 0x0D */ u8 create_phase;
|
||||
/* 0x0C */ state_class state;
|
||||
/* 0x0E */ s16 profname;
|
||||
/* 0x10 */ process_profile_definition* profile;
|
||||
/* 0x14 */ struct create_request* create_req;
|
||||
|
||||
@@ -54,7 +54,7 @@ inline BOOL fpcM_IsJustType(int i_typeA, int i_typeB) {
|
||||
}
|
||||
|
||||
inline bool fpcM_IsFirstCreating(void* i_process) {
|
||||
return ((base_process_class*)i_process)->init_state == 0;
|
||||
return ((base_process_class*)i_process)->state.init_state == 0;
|
||||
}
|
||||
|
||||
inline process_profile_definition* fpcM_GetProfile(void* i_process) {
|
||||
|
||||
Reference in New Issue
Block a user