mirror of
https://github.com/zeldaret/tp
synced 2026-05-30 08:56:46 -04:00
d_a_boomerang / d_a_grass mostly done, d_a_spinner done (#2304)
* d_a_boomerang mostly done * d_a_grass mostly done * d_a_spinner done
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
struct counter_class {
|
||||
u32 mCounter0;
|
||||
s32 mCounter1;
|
||||
s32 mTimer;
|
||||
u32 mTimer;
|
||||
};
|
||||
|
||||
extern counter_class g_Counter;
|
||||
|
||||
@@ -3555,6 +3555,40 @@ public:
|
||||
mDoMtx_multVec(getRightHandMatrix(), &m_handRightInSidePos, o_pos);
|
||||
}
|
||||
|
||||
cXyz* getLineTopPosP() {
|
||||
return mSight.getPosP();
|
||||
}
|
||||
|
||||
cXyz* getBoomerangLockPosP() {
|
||||
return &mHeldItemRootPos;
|
||||
}
|
||||
|
||||
BOOL boomerangLockTrigger() {
|
||||
return itemActionTrigger();
|
||||
}
|
||||
|
||||
BOOL checkBoomerangLockTrigger() {
|
||||
return boomerangLockTrigger();
|
||||
}
|
||||
|
||||
BOOL checkDemoSpinnerKeep() const {
|
||||
return mDemo.getDemoMode() == 14 && mDemo.getParam0() == 1;
|
||||
}
|
||||
|
||||
BOOL checkDemoSpinnerKeepSpeed() const {
|
||||
return mDemo.getDemoMode() == 14 && mDemo.getParam0() == 2;
|
||||
}
|
||||
|
||||
bool checkSpinnerRideOwn(const fopAc_ac_c* param_0) {
|
||||
return checkSpinnerRide() && mRideAcKeep.getActorConst() == param_0;
|
||||
}
|
||||
|
||||
BOOL checkSpinnerReady() const { return mProcID == PROC_SPINNER_READY; }
|
||||
|
||||
BOOL checkGameOverWindow() const { return mProcID == PROC_DEAD && field_0x3478 < 0.01f; }
|
||||
|
||||
f32 getSlideLimit() const { return field_0x3470; }
|
||||
|
||||
inline bool checkWindSpeedOnXZ() const;
|
||||
inline void startRestartRoomFromOut(int, u32, int);
|
||||
inline u16 getReadyItem();
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
#include "d/d_particle_copoly.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
class daBoomerang_sight_c {
|
||||
#define BOOMERANG_LOCK_MAX 5
|
||||
|
||||
class daBoomerang_sight_c : public dDlst_base_c {
|
||||
public:
|
||||
/* 8049E0B8 */ int createHeap();
|
||||
/* 8049E36C */ void initialize();
|
||||
@@ -13,48 +15,48 @@ public:
|
||||
/* 8049EDA8 */ void initFrame(int);
|
||||
/* 8049EDE8 */ void copyNumData(int);
|
||||
/* 8049EEC8 */ void setSight(cXyz const*, int);
|
||||
/* 8049EF60 */ void draw();
|
||||
|
||||
/* 804A278C */ virtual ~daBoomerang_sight_c();
|
||||
/* 8049EF60 */ virtual void draw();
|
||||
/* 804A278C */ virtual ~daBoomerang_sight_c() {}
|
||||
|
||||
u8 getReserve() const { return mReserve; }
|
||||
u8 getAlpha(int i_index) { return mAlpha[i_index]; }
|
||||
void offRedSight() { mRedSight = false; }
|
||||
u8 getAlpha(int i_index) { return m_alpha[i_index]; }
|
||||
void offRedSight() { m_redSight = false; }
|
||||
void onReserve() { mReserve = 1; }
|
||||
void offReserve() { mReserve = 0; }
|
||||
|
||||
private:
|
||||
/* 0x04 */ J2DScreen* field_0x4;
|
||||
/* 0x08 */ J2DPane* field_0x8;
|
||||
/* 0x0C */ J2DPane* field_0xc;
|
||||
/* 0x10 */ J2DPane* field_0x10;
|
||||
/* 0x14 */ J2DPane* field_0x14;
|
||||
/* 0x18 */ J2DAnmTevRegKey* field_0x18;
|
||||
/* 0x1C */ J2DAnmTevRegKey* field_0x1c;
|
||||
/* 0x20 */ J2DScreen* field_0x20;
|
||||
/* 0x24 */ J2DPane* field_0x24;
|
||||
/* 0x28 */ J2DPane* field_0x28;
|
||||
/* 0x2C */ J2DPane* field_0x2c;
|
||||
/* 0x30 */ J2DPane* field_0x30;
|
||||
/* 0x34 */ J2DAnmTevRegKey* field_0x34;
|
||||
/* 0x38 */ J2DAnmTevRegKey* field_0x38;
|
||||
/* 0x3C */ J2DScreen* field_0x3c;
|
||||
/* 0x40 */ J2DPane* field_0x40;
|
||||
/* 0x44 */ J2DPane* field_0x44;
|
||||
/* 0x48 */ J2DPane* field_0x48;
|
||||
/* 0x4C */ J2DPane* field_0x4c;
|
||||
/* 0x50 */ J2DAnmTevRegKey* field_0x50;
|
||||
/* 0x54 */ J2DAnmTevRegKey* field_0x54;
|
||||
/* 0x58 */ J2DAnmColor* field_0x58;
|
||||
/* 0x5C */ J2DAnmTransform* field_0x5c;
|
||||
/* 0x60 */ bool mRedSight;
|
||||
/* 0x04 */ J2DScreen* m_cursorYellowScrn;
|
||||
/* 0x08 */ J2DPane* m_cursorYellowAllPane;
|
||||
/* 0x0C */ J2DPane* m_cursorYellow0Pane;
|
||||
/* 0x10 */ J2DPane* m_cursorYellow1Pane;
|
||||
/* 0x14 */ J2DPane* m_cursorYellow2Pane;
|
||||
/* 0x18 */ J2DAnmTevRegKey* m_cursorYellow2Brk;
|
||||
/* 0x1C */ J2DAnmTevRegKey* m_cursorYellowBrk;
|
||||
/* 0x20 */ J2DScreen* m_cursorRedScrn;
|
||||
/* 0x24 */ J2DPane* m_cursorRedAllPane;
|
||||
/* 0x28 */ J2DPane* m_cursorRed0Pane;
|
||||
/* 0x2C */ J2DPane* m_cursorRed1Pane;
|
||||
/* 0x30 */ J2DPane* m_cursorRed2Pane;
|
||||
/* 0x34 */ J2DAnmTevRegKey* m_cursorRed2Brk;
|
||||
/* 0x38 */ J2DAnmTevRegKey* m_cursorRedBrk;
|
||||
/* 0x3C */ J2DScreen* m_cursorOrangeScrn;
|
||||
/* 0x40 */ J2DPane* m_cursorOrangeAllPane;
|
||||
/* 0x44 */ J2DPane* m_cursorOrange0Pane;
|
||||
/* 0x48 */ J2DPane* m_cursorOrange1Pane;
|
||||
/* 0x4C */ J2DPane* m_cursorOrange2Pane;
|
||||
/* 0x50 */ J2DAnmTevRegKey* m_cursorOrange2Brk;
|
||||
/* 0x54 */ J2DAnmTevRegKey* m_cursorOrangeBrk;
|
||||
/* 0x58 */ J2DAnmColor* m_cursorYellowBpk;
|
||||
/* 0x5C */ J2DAnmTransform* m_cursorYellowBck;
|
||||
/* 0x60 */ bool m_redSight;
|
||||
/* 0x61 */ u8 mReserve;
|
||||
/* 0x62 */ u8 mAlpha[6];
|
||||
/* 0x68 */ f32 field_0x68[6];
|
||||
/* 0x80 */ f32 field_0x80[6];
|
||||
/* 0x62 */ u8 m_alpha[6];
|
||||
/* 0x68 */ f32 m_proj_posX[6];
|
||||
/* 0x80 */ f32 m_proj_posY[6];
|
||||
/* 0x98 */ f32 field_0x98[6];
|
||||
/* 0xB0 */ f32 field_0xb0[6];
|
||||
/* 0xC8 */ cXyz field_0xc8[6];
|
||||
/* 0xC8 */ cXyz m_pos[6];
|
||||
}; // Size: 0x110
|
||||
|
||||
class daAlink_c;
|
||||
@@ -70,10 +72,16 @@ class daAlink_c;
|
||||
class daBoomerang_c : public fopAc_ac_c {
|
||||
public:
|
||||
enum daBoomerang_FLG0 {
|
||||
/* 0x001 */ FLG0_1 = 0x001,
|
||||
/* 0x004 */ FLG0_UNK = 0x004,
|
||||
/* 0x010 */ FLG0_10 = 0x010,
|
||||
/* 0x200 */ FLG0_0x200 = 0x200,
|
||||
/* 0x001 */ FLG0_1 = 0x1,
|
||||
/* 0x002 */ FLG0_2 = 0x2,
|
||||
/* 0x004 */ FLG0_4 = 0x4,
|
||||
/* 0x010 */ FLG0_10 = 0x10,
|
||||
/* 0x020 */ FLG0_20 = 0x20,
|
||||
/* 0x040 */ FLG0_40 = 0x40,
|
||||
/* 0x080 */ FLG0_80 = 0x80,
|
||||
/* 0x100 */ FLG0_100 = 0x100,
|
||||
/* 0x200 */ FLG0_200 = 0x200,
|
||||
/* 0x400 */ FLG0_400 = 0x400,
|
||||
/* 0x800 */ FLG0_LOCK_DIST_CANCEL = 0x800,
|
||||
/* 0x080 */ WIND_CATCH = 0x80,
|
||||
};
|
||||
@@ -95,85 +103,86 @@ public:
|
||||
/* 8049FE6C */ void checkBgHit(cXyz*, cXyz*);
|
||||
/* 804A006C */ JPABaseEmitter* setEffectTraceMatrix(u32*, u16);
|
||||
/* 804A012C */ void setEffect();
|
||||
/* 804A0874 */ void procWait();
|
||||
/* 804A0F0C */ void procMove();
|
||||
/* 804A0874 */ int procWait();
|
||||
/* 804A0F0C */ int procMove();
|
||||
/* 804A1814 */ int execute();
|
||||
/* 804A1BF4 */ ~daBoomerang_c();
|
||||
/* 804A1EE4 */ int createHeap();
|
||||
/* 804A2084 */ int create();
|
||||
/* 804A230C */ daBoomerang_c();
|
||||
|
||||
u32 checkStateFlg0(daBoomerang_FLG0 i_flag) { return mStateFlg0 & i_flag; }
|
||||
void onStateFlg0(daBoomerang_FLG0 flag) { mStateFlg0 |= flag; }
|
||||
u32 checkStateFlg0(daBoomerang_FLG0 i_flag) const { return m_stateFlg0 & i_flag; }
|
||||
void onStateFlg0(daBoomerang_FLG0 flag) { m_stateFlg0 |= flag; }
|
||||
void offStateFlg0(daBoomerang_FLG0 flag) { m_stateFlg0 &= ~flag; }
|
||||
void onWindCatch() { onStateFlg0(WIND_CATCH); }
|
||||
bool checkForceDelete() const { return mForceDelete; }
|
||||
void onForceDelete() { mForceDelete = true; }
|
||||
bool checkForceDelete() const { return m_forceDelete; }
|
||||
void onForceDelete() { m_forceDelete = true; }
|
||||
bool checkCharge() const { return true; }
|
||||
void setThrow() { fopAcM_SetParam(this, 1); }
|
||||
void setAimActor(fopAc_ac_c* i_actor) { (this->*mpSetAimActorFn)(i_actor); }
|
||||
void cancelLockActor(fopAc_ac_c* i_actor) { (this->*mpCancelLockActorFn)(i_actor); }
|
||||
u8 getLockReserve() const { return mSight.getReserve(); }
|
||||
bool getLockCntMax() { return mLockCnt >= 5; }
|
||||
void setAimActor(fopAc_ac_c* i_actor) { (this->*m_setAimActorFn)(i_actor); }
|
||||
void cancelLockActor(fopAc_ac_c* i_actor) { (this->*m_cancelLockActorFn)(i_actor); }
|
||||
u8 getLockReserve() const { return m_sight.getReserve(); }
|
||||
bool getLockCntMax() { return m_lockCnt >= BOOMERANG_LOCK_MAX; }
|
||||
void onLockDistanceCancel() { onStateFlg0(FLG0_LOCK_DIST_CANCEL); }
|
||||
|
||||
private:
|
||||
/* 0x568 */ J3DModel* field_0x568;
|
||||
/* 0x56C */ J3DModel* field_0x56c;
|
||||
/* 0x568 */ J3DModel* mp_boomModel;
|
||||
/* 0x56C */ J3DModel* mp_shippuModel;
|
||||
/* 0x570 */ J3DAnmTextureSRTKey* m_windBtk;
|
||||
/* 0x574 */ mDoExt_bckAnm mBck;
|
||||
/* 0x590 */ J3DModel* field_0x590;
|
||||
/* 0x574 */ mDoExt_bckAnm m_shippuBck;
|
||||
/* 0x590 */ J3DModel* mp_setboomEfModel;
|
||||
/* 0x594 */ J3DAnmTextureSRTKey* m_waitEffBtk;
|
||||
/* 0x598 */ daBoomerang_sight_c mSight;
|
||||
/* 0x6A8 */ s32 field_0x6a8;
|
||||
/* 0x6AC */ s32 field_0x6ac[5];
|
||||
/* 0x6C0 */ fopAc_ac_c* mLockActors[5]; // Actors corresponding to the five target points
|
||||
/* 0x6D4 */ u32 field_0x6d4;
|
||||
/* 0x598 */ daBoomerang_sight_c m_sight;
|
||||
/* 0x6A8 */ fpc_ProcID m_lockLineActorID;
|
||||
/* 0x6AC */ fpc_ProcID m_lockActorIDs[BOOMERANG_LOCK_MAX];
|
||||
/* 0x6C0 */ fopAc_ac_c* m_lockActors[BOOMERANG_LOCK_MAX]; // Actors corresponding to the five target points
|
||||
/* 0x6D4 */ fpc_ProcID field_0x6d4;
|
||||
/* 0x6D8 */ fopAc_ac_c* field_0x6d8;
|
||||
/* 0x6DC */ cXyz mLockActorsPositions[5];
|
||||
/* 0x718 */ u8 field_0x718[5];
|
||||
/* 0x720 */ Z2SoundObjSimple field_0x720;
|
||||
/* 0x740 */ dBgS_Acch field_0x740;
|
||||
/* 0x918 */ dPaPo_c field_0x918;
|
||||
/* 0x950 */ u8 mLockCnt;
|
||||
/* 0x6DC */ cXyz m_lockActorsPositions[BOOMERANG_LOCK_MAX];
|
||||
/* 0x718 */ u8 field_0x718[BOOMERANG_LOCK_MAX];
|
||||
/* 0x720 */ Z2SoundObjSimple m_sound;
|
||||
/* 0x740 */ dBgS_ObjAcch m_acch;
|
||||
/* 0x918 */ dPaPo_c m_papo;
|
||||
/* 0x950 */ u8 m_lockCnt;
|
||||
/* 0x951 */ u8 field_0x951;
|
||||
/* 0x952 */ u8 field_0x952;
|
||||
/* 0x953 */ u8 field_0x953;
|
||||
/* 0x953 */ s8 m_reverb;
|
||||
/* 0x954 */ u8 field_0x954;
|
||||
/* 0x955 */ u8 field_0x955;
|
||||
/* 0x956 */ bool mForceDelete;
|
||||
/* 0x956 */ bool m_forceDelete;
|
||||
/* 0x957 */ u8 field_0x957;
|
||||
/* 0x958 */ s16 field_0x958;
|
||||
/* 0x95A */ s16 field_0x95a;
|
||||
/* 0x95A */ s16 m_modelRotY;
|
||||
/* 0x95C */ s16 field_0x95c;
|
||||
/* 0x95E */ s16 field_0x95e;
|
||||
/* 0x960 */ s16 field_0x960;
|
||||
/* 0x962 */ s16 field_0x962;
|
||||
/* 0x964 */ u32 mStateFlg0;
|
||||
/* 0x964 */ u32 m_stateFlg0;
|
||||
/* 0x968 */ u32 field_0x968;
|
||||
/* 0x96C */ u32 field_0x96c;
|
||||
/* 0x970 */ u32 field_0x970;
|
||||
/* 0x974 */ u32 field_0x974;
|
||||
/* 0x978 */ u32 field_0x978;
|
||||
/* 0x97C */ u32 field_0x97c;
|
||||
/* 0x980 */ f32 field_0x980;
|
||||
/* 0x984 */ f32 field_0x984;
|
||||
/* 0x980 */ f32 mGroundY;
|
||||
/* 0x984 */ f32 m_lockLineSqdist;
|
||||
/* 0x988 */ f32 field_0x988;
|
||||
/* 0x98C */ f32 field_0x98c;
|
||||
/* 0x990 */ cXyz field_0x990;
|
||||
/* 0x98C */ f32 m_shippuFrame;
|
||||
/* 0x990 */ cXyz m_aimPos;
|
||||
/* 0x99C */ cXyz field_0x99c;
|
||||
/* 0x9A8 */ f32 field_0x9a8;
|
||||
/* 0x9AC */ cXyz field_0x9ac;
|
||||
/* 0x9A8 */ f32 m_shippuSize;
|
||||
/* 0x9AC */ cXyz m_moveTargetPos;
|
||||
/* 0x9B8 */ cXyz field_0x9b8;
|
||||
/* 0x9C4 */ cXyz field_0x9c4;
|
||||
/* 0x9D0 */ dCcD_Stts field_0x9d0;
|
||||
/* 0xA0C */ dCcD_Cps field_0xa0c;
|
||||
/* 0xB50 */ dCcD_Cyl field_0xb50;
|
||||
/* 0xC8C */ dBgS_BoomerangLinChk field_0xc8c;
|
||||
/* 0xCFC */ dBgS_ObjLinChk field_0xcfc;
|
||||
/* 0xD6C */ dBgS_ObjGndChk field_0xd6c;
|
||||
/* 0xDC0 */ int (daBoomerang_c::*mpProcFn)();
|
||||
/* 0xDCC */ void (daBoomerang_c::*mpSetAimActorFn)(fopAc_ac_c*);
|
||||
/* 0xDD8 */ void (daBoomerang_c::*mpCancelLockActorFn)(fopAc_ac_c*);
|
||||
/* 0x9C4 */ cXyz m_movePos;
|
||||
/* 0x9D0 */ dCcD_Stts m_colliderStts;
|
||||
/* 0xA0C */ dCcD_Cps m_atCps;
|
||||
/* 0xB50 */ dCcD_Cyl m_windAtCyl;
|
||||
/* 0xC8C */ dBgS_BoomerangLinChk m_boomLineChk;
|
||||
/* 0xCFC */ dBgS_ObjLinChk m_lineChk;
|
||||
/* 0xD6C */ dBgS_ObjGndChk m_gndChk;
|
||||
/* 0xDC0 */ int (daBoomerang_c::*m_procFn)();
|
||||
/* 0xDCC */ void (daBoomerang_c::*m_setAimActorFn)(fopAc_ac_c*);
|
||||
/* 0xDD8 */ void (daBoomerang_c::*m_cancelLockActorFn)(fopAc_ac_c*);
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daBoomerang_c) == 0xDE4);
|
||||
@@ -188,5 +197,4 @@ public:
|
||||
static f32 const m_lockWindScale;
|
||||
};
|
||||
|
||||
|
||||
#endif /* D_A_BOOMERANG_H */
|
||||
|
||||
@@ -35,6 +35,8 @@ public:
|
||||
/* 8051EDF0 */ void deleteData();
|
||||
/* 80520928 */ dGrass_room_c();
|
||||
|
||||
dGrass_data_c* getData() { return mp_data; }
|
||||
|
||||
/* 0x0 */ dGrass_data_c* mp_data;
|
||||
};
|
||||
|
||||
@@ -60,17 +62,19 @@ public:
|
||||
/* 805208E4 */ void setAnm(int, s16);
|
||||
|
||||
/* 8051F03C */ virtual void draw();
|
||||
/* 8051BFBC */ virtual ~dGrass_packet_c();
|
||||
/* 8051BFBC */ virtual ~dGrass_packet_c() {}
|
||||
|
||||
typedef void (dGrass_packet_c::*deleteFunc)(int);
|
||||
static deleteFunc m_deleteRoom;
|
||||
|
||||
dGrass_anm_c* getAnm() { return m_anm; }
|
||||
dGrass_anm_c* getAnm(int i_no) { return &m_anm[i_no]; }
|
||||
|
||||
dGrass_data_c* getData() { return m_data; }
|
||||
|
||||
void deleteAnm(int i_idx) { m_anm[i_idx].m_state = 0; }
|
||||
|
||||
/* 0x00010 */ u16 field_0x10;
|
||||
/* 0x00010 */ u16 m_dataNum;
|
||||
/* 0x00014 */ dGrass_data_c m_data[1500];
|
||||
/* 0x1BD64 */ dGrass_anm_c m_anm[112];
|
||||
/* 0x1D5E4 */ dGrass_room_c m_room[64];
|
||||
@@ -86,7 +90,7 @@ public:
|
||||
/* 0x1D708 */ u32 m_Mkusa_9q_DL_size;
|
||||
/* 0x1D70C */ u8* mp_Mkusa_9q_cDL;
|
||||
/* 0x1D710 */ u32 m_Mkusa_9q_cDL_size;
|
||||
/* 0x1D714 */ u16 field_0x1d714;
|
||||
/* 0x1D714 */ s16 field_0x1d714;
|
||||
}; // Size: 0x1D718
|
||||
|
||||
STATIC_ASSERT(sizeof(dGrass_packet_c) == 0x1D718);
|
||||
@@ -117,6 +121,8 @@ public:
|
||||
/* 80521C08 */ void deleteData();
|
||||
/* 80522FB4 */ dFlower_room_c();
|
||||
|
||||
dFlower_data_c* getData() { return mp_data; }
|
||||
|
||||
/* 0x0 */ dFlower_data_c* mp_data;
|
||||
};
|
||||
|
||||
@@ -148,11 +154,18 @@ public:
|
||||
static deleteFunc m_deleteRoom;
|
||||
|
||||
dFlower_anm_c* getAnm(int i_idx) { return &m_anm[i_idx]; }
|
||||
dFlower_anm_c* getAnm() { return &m_anm[0]; }
|
||||
dFlower_data_c* getData() { return m_data; }
|
||||
|
||||
void deleteAnm(int i_idx) { m_anm[i_idx].m_state = 0; }
|
||||
|
||||
/* 0x00010 */ u16 field_0x10;
|
||||
void setPlayerCutFlg(int i_flag) { m_playerCutFlg = i_flag != 0; }
|
||||
void setPlayerSwordAngY(s16 i_angY) { m_playerSwordAngY = i_angY; }
|
||||
void setPlayerSwordMoveAngY(s16 i_angY) { m_playerSwordMoveAngY = i_angY; }
|
||||
void setPlayerSwordTop(cXyz& i_pos) { m_playerSwordTop = i_pos; }
|
||||
cXyz& getPlayerSwordTop() { return m_playerSwordTop; }
|
||||
|
||||
/* 0x00010 */ u16 m_dataNum;
|
||||
/* 0x00014 */ dFlower_data_c m_data[1000];
|
||||
/* 0x11954 */ dFlower_anm_c m_anm[72];
|
||||
/* 0x12914 */ dFlower_room_c m_room[64];
|
||||
@@ -183,17 +196,18 @@ public:
|
||||
*/
|
||||
class daGrass_c : public fopAc_ac_c {
|
||||
public:
|
||||
/* 8051BEFC */ int createGrass();
|
||||
/* 8051BEFC */ bool createGrass();
|
||||
/* 8051BF68 */ void deleteGrass();
|
||||
/* 8051C040 */ void executeGrass();
|
||||
/* 8051C074 */ void drawGrass();
|
||||
/* 8051C0A8 */ void newGrassData(cXyz&, int, u8, u8, s16, u8);
|
||||
/* 8051C0D4 */ int createFlower();
|
||||
/* 8051C0D4 */ bool createFlower();
|
||||
/* 8051C140 */ void deleteFlower();
|
||||
/* 8051C218 */ void executeFlower();
|
||||
/* 8051C24C */ void drawFlower();
|
||||
/* 8051C280 */ void newFlowerData(s8, cXyz&, int, s8, s16);
|
||||
/* 8051C304 */ int create();
|
||||
|
||||
/* 8051C304 */ inline int create();
|
||||
|
||||
inline int Delete();
|
||||
inline int execute();
|
||||
@@ -217,7 +231,7 @@ namespace daGrass_prm {
|
||||
inline u8 getItemBitNo(daGrass_c* i_this) { return (fopAcM_GetParam(i_this) >> 8) & 0xFF; }
|
||||
};
|
||||
|
||||
struct offset_data {
|
||||
struct daGrass_offsetData {
|
||||
/* 0x0 */ u8 num;
|
||||
/* 0x4 */ csXyz* set_type;
|
||||
};
|
||||
|
||||
@@ -38,6 +38,7 @@ public:
|
||||
|
||||
static void initDropAngleY() { m_dropAngleY = 0x4000; }
|
||||
static void offEventKeepFlg() { m_eventKeepFlg = 0; }
|
||||
static void onEventKeepFlg() { m_eventKeepFlg = 1; }
|
||||
|
||||
static s16 m_dropAngleY;
|
||||
static s16 m_eventKeepFlg;
|
||||
@@ -935,6 +936,8 @@ public:
|
||||
void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); }
|
||||
bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); }
|
||||
|
||||
u32 checkItemSightBgHit() const { return checkResetFlg0(RFLG0_UNK_2000000); }
|
||||
|
||||
void setCanoeSlider() { mSpecialMode = 0x2D; }
|
||||
|
||||
void offCanoeSlider() {
|
||||
@@ -1002,6 +1005,8 @@ public:
|
||||
cXyz* getRightHandPosP() { return &mRightHandPos; }
|
||||
cXyz* getHeadTopPosP() { return &mHeadTopPos; }
|
||||
|
||||
const cXyz& getSwordTopPos() const { return mSwordTopPos; }
|
||||
|
||||
u32 checkWolf() const { return checkNoResetFlg1(FLG1_IS_WOLF); }
|
||||
u32 checkEquipHeavyBoots() const { return checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); }
|
||||
u32 checkMagneBootsOn() const { return checkNoResetFlg0(FLG0_MAGNE_BOOTS_ON); }
|
||||
|
||||
@@ -15,6 +15,15 @@
|
||||
*/
|
||||
class daSpinner_c : public fopAc_ac_c {
|
||||
public:
|
||||
enum daSpinner_TAG {
|
||||
TAG_NONE,
|
||||
TAG_START,
|
||||
TAG_2,
|
||||
TAG_INTO,
|
||||
TAG_INTO_INC_ROT,
|
||||
TAG_END,
|
||||
};
|
||||
|
||||
/* 804D198C */ int createHeap();
|
||||
/* 804D1A70 */ int create();
|
||||
/* 804D1FD0 */ ~daSpinner_c();
|
||||
@@ -40,28 +49,28 @@ public:
|
||||
|
||||
static u32 getWaitArg() { return 0; }
|
||||
|
||||
int getDeleteFlg() const { return mDeleteFlg; }
|
||||
BOOL getDeleteFlg() const { return mDeleteFlg; }
|
||||
|
||||
bool checkSpinnerTagEnd() const { return mSpinnerTag == 5; }
|
||||
bool checkSpinnerTagIntoIncRot() const { return mSpinnerTag == 4; }
|
||||
bool checkSpinnerTagInto() const { return mSpinnerTag == 3; }
|
||||
bool checkSpinnerTagEnd() const { return mSpinnerTag == TAG_END; }
|
||||
bool checkSpinnerTagIntoIncRot() const { return mSpinnerTag == TAG_INTO_INC_ROT; }
|
||||
bool checkSpinnerTagInto() const { return mSpinnerTag == TAG_INTO; }
|
||||
bool checkGroundHit() { return mAcch.ChkGroundHit(); }
|
||||
|
||||
u8 getButtonJump() const { return mButtonJump; }
|
||||
u8 getJumpFlg() const { return mJumpFlg; }
|
||||
|
||||
void setMove(f32 i_speed, s16 param_1) {
|
||||
void setMove(f32 i_speed, s16 i_moveTime) {
|
||||
fopAcM_SetParam(this, 1);
|
||||
speedF = i_speed;
|
||||
field_0xa7a = param_1;
|
||||
mRideMoveTime = i_moveTime;
|
||||
mCyl.OnAtSetBit();
|
||||
}
|
||||
|
||||
void clearPathMove() { mpPathMove = NULL; }
|
||||
|
||||
void setSpinnerTag(const cXyz& param_0) {
|
||||
if (!mSpinnerTag) {
|
||||
mSpinnerTag = 1;
|
||||
if (mSpinnerTag == TAG_NONE) {
|
||||
mSpinnerTag = TAG_START;
|
||||
}
|
||||
|
||||
clearPathMove();
|
||||
@@ -69,61 +78,61 @@ public:
|
||||
}
|
||||
|
||||
void offSpinnerTag() {
|
||||
if (mSpinnerTag != 0) {
|
||||
mSpinnerTag = 5;
|
||||
if (mSpinnerTag != TAG_NONE) {
|
||||
mSpinnerTag = TAG_END;
|
||||
}
|
||||
}
|
||||
|
||||
bool reflectAccept() {
|
||||
bool accept = false;
|
||||
if (!mBck.isStop() && mSpinnerTag == 0) {
|
||||
if (!mBck.isStop() && mSpinnerTag == TAG_NONE) {
|
||||
accept = true;
|
||||
}
|
||||
|
||||
return accept;
|
||||
}
|
||||
|
||||
MtxP getModelMtx() { return mpModel->getBaseTRMtx(); }
|
||||
MtxPtr getModelMtx() { return mpModel->getBaseTRMtx(); }
|
||||
|
||||
s16 getAngleY() { return shape_angle.y + field_0xa7e; }
|
||||
s16 getAngleY() { return shape_angle.y + mRotY; }
|
||||
|
||||
void forceDelete() { mDeleteFlg = 1; }
|
||||
void forceDelete() { mDeleteFlg = true; }
|
||||
|
||||
private:
|
||||
/* 0x568 */ J3DModel* mpModel;
|
||||
/* 0x56C */ mDoExt_bckAnm mBck;
|
||||
/* 0x588 */ J3DAnmTransform* field_0x588;
|
||||
/* 0x588 */ J3DAnmTransform* mpSpoutBck;
|
||||
/* 0x58C */ dBgS_AcchCir mAcchCir[3];
|
||||
/* 0x64C */ dBgS_Acch mAcch;
|
||||
/* 0x64C */ dBgS_LinkAcch mAcch;
|
||||
/* 0x824 */ dBgS_LinkLinChk mLinChk;
|
||||
/* 0x894 */ dPaPo_c field_0x894;
|
||||
/* 0x8CC */ Z2SoundObjSimple field_0x8cc;
|
||||
/* 0x894 */ dPaPo_c mPaPo;
|
||||
/* 0x8CC */ Z2SoundObjSimple mSound;
|
||||
/* 0x8EC */ dCcD_Stts mStts;
|
||||
/* 0x928 */ dCcD_Cyl mCyl;
|
||||
/* 0xA64 */ dPath* mpPathMove;
|
||||
/* 0xA68 */ dPath* field_0xa68;
|
||||
/* 0xA6C */ u8 field_0xa6c;
|
||||
/* 0xA6D */ u8 mJumpFlg;
|
||||
/* 0xA6E */ s8 field_0xa6e;
|
||||
/* 0xA6E */ s8 mReverb;
|
||||
/* 0xA6F */ u8 mSpinnerTag;
|
||||
/* 0xA70 */ u8 mButtonJump;
|
||||
/* 0xA71 */ u8 mDeleteFlg;
|
||||
/* 0xA72 */ u8 field_0xa72;
|
||||
/* 0xA73 */ s8 field_0xa73;
|
||||
/* 0xA72 */ u8 mPathNo;
|
||||
/* 0xA73 */ s8 mPathDirection;
|
||||
/* 0xA74 */ u8 field_0xa74;
|
||||
/* 0xA75 */ u8 field_0xa75;
|
||||
/* 0xA76 */ u8 field_0xa76;
|
||||
/* 0xA75 */ u8 mTrigJump;
|
||||
/* 0xA76 */ s8 field_0xa76;
|
||||
/* 0xA77 */ u8 mPathForceRemove;
|
||||
/* 0xA78 */ u8 field_0xa78;
|
||||
/* 0xA79 */ u8 field_0xa79;
|
||||
/* 0xA7A */ s16 field_0xa7a;
|
||||
/* 0xA7A */ s16 mRideMoveTime;
|
||||
/* 0xA7C */ s16 field_0xa7c;
|
||||
/* 0xA7E */ s16 field_0xa7e;
|
||||
/* 0xA7E */ s16 mRotY;
|
||||
/* 0xA80 */ s16 field_0xa80;
|
||||
/* 0xA82 */ s16 field_0xa82;
|
||||
/* 0xA84 */ f32 field_0xa84;
|
||||
/* 0xA88 */ f32 field_0xa88;
|
||||
/* 0xA8C */ u32 field_0xa8c[2];
|
||||
/* 0xA8C */ u32 mSpreadEmitterIDs[2];
|
||||
/* 0xA94 */ u32 field_0xa94;
|
||||
/* 0xA98 */ cXyz field_0xa98;
|
||||
/* 0xAA4 */ cXyz field_0xaa4;
|
||||
|
||||
@@ -12,6 +12,11 @@ public:
|
||||
/* 80D62024 */ int getNearPathPos(cXyz*, dPath*);
|
||||
/* 80D629C0 */ int execute();
|
||||
|
||||
dPath* getKeepPath() { return mpBestPath; }
|
||||
u16 getKeepPointNum() const { return mBestNo; }
|
||||
bool checkDirectionFront() const { return field_0x6e8 == 1; }
|
||||
bool checkDirectionNone() const { return field_0x6e8 == 0; }
|
||||
|
||||
/* 0x568 */ dPath* mpInitPath;
|
||||
/* 0x56C */ dPath* mpBestPath;
|
||||
/* 0x570 */ dCcD_Cyl mCyl;
|
||||
|
||||
@@ -407,6 +407,7 @@ public:
|
||||
cXyz* GetTgRVecP() { return mGObjTg.GetRVecP(); }
|
||||
bool ChkTgHookshotThrough() { return mGObjTg.ChkSPrm(0x80); }
|
||||
bool ChkTgShieldHit() { return mGObjTg.ChkRPrm(2); }
|
||||
bool ChkTgSpinnerReflect() { return mGObjTg.ChkSPrm(0x200); }
|
||||
|
||||
static const Z2SoundID m_hitSeID[24];
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ private:
|
||||
/* 0x0C */ f32 mCoHitLen;
|
||||
|
||||
public:
|
||||
virtual ~dCcMassS_HitInf() {}
|
||||
|
||||
void ClearPointer();
|
||||
void SetAreaHitObj(cCcD_Obj* obj) { mpArea = obj; }
|
||||
void SetCoHitObj(cCcD_Obj* obj) { mpCoObj = obj; }
|
||||
|
||||
@@ -49,6 +49,15 @@ public:
|
||||
u32 GetMassResultCam() { return mMass_Mng.GetResultCam(); }
|
||||
void PrepareMass() { mMass_Mng.Prepare(); }
|
||||
|
||||
u32 ChkMass(cXyz* param_0, fopAc_ac_c** param_1, dCcMassS_HitInf* param_2) {
|
||||
u32 rt = mMass_Mng.Chk(param_0, param_1, param_2);
|
||||
return rt;
|
||||
}
|
||||
|
||||
void SetMassAttr(f32 radius, f32 height, u8 param_2, u8 param_3) {
|
||||
mMass_Mng.SetAttr(radius, height, param_2, param_3);
|
||||
}
|
||||
|
||||
static bool m_mtrl_hit_tbl[64];
|
||||
|
||||
// /* 0x0000 */ cCcS mCCcS;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "d/d_event_manager.h"
|
||||
#include "d/d_particle.h"
|
||||
#include "f_op/f_op_camera_mng.h"
|
||||
#include "m_Do/m_Do_controller_pad.h"
|
||||
#include "global.h"
|
||||
|
||||
class JKRAramArchive;
|
||||
@@ -848,6 +849,8 @@ int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_arcNa
|
||||
int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_resName, JKRHeap* heap);
|
||||
int dComIfG_TimerDeleteRequest(int i_mode);
|
||||
int dComIfG_TimerStart(int i_mode, s16 i_time);
|
||||
u32 dComIfG_getTrigA(u32 i_padNo);
|
||||
|
||||
bool dComIfGp_isLightDropMapVisible();
|
||||
int dComIfG_TimerEnd(int i_mode, int param_1);
|
||||
void dComIfGs_onStageBossEnemy(int i_stageNo);
|
||||
@@ -981,6 +984,10 @@ inline int dComIfG_getObjctResName2Index(const char* i_arcName, const char* i_re
|
||||
return g_dComIfG_gameInfo.mResControl.getObjectResName2Index(i_arcName, i_resName);
|
||||
}
|
||||
|
||||
inline u32 dComIfG_getTrigB(u32 i_padNo) {
|
||||
return mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_B;
|
||||
}
|
||||
|
||||
u8 dComIfGs_getMixItemIndex(int i_no);
|
||||
void dComIfGs_setSelectItemIndex(int i_no, u8 item_index);
|
||||
void dComIfGs_setMixItemIndex(int i_no, u8 item_index);
|
||||
@@ -1029,6 +1036,7 @@ u8 dComIfGs_checkGetInsectNum();
|
||||
u8 dComIfGs_getSelectMixItemNoArrowIndex(int i_selmixItemIdx);
|
||||
BOOL dComIfGs_isStageTbox(int i_stageNo, int i_no);
|
||||
s8 dComIfGs_PolyDamageOff_Check();
|
||||
void dComIfGs_Grass_hide_Set(s8 param_0);
|
||||
|
||||
inline void dComIfGs_init() {
|
||||
g_dComIfG_gameInfo.info.init();
|
||||
|
||||
@@ -615,5 +615,6 @@ BOOL dKy_SunMoon_Light_Check();
|
||||
void dKy_bgparts_activelight_set(LIGHT_INFLUENCE* light_inf_p, int bgpart_id);
|
||||
void dKy_bgparts_activelight_cut(int bgpart_id);
|
||||
int dKy_Indoor_check();
|
||||
void dKy_GfFog_tevstr_set(dKy_tevstr_c* tevstr_p);
|
||||
|
||||
#endif /* D_KANKYO_D_KANKYO_H */
|
||||
|
||||
@@ -13,6 +13,7 @@ struct dPath {
|
||||
/* 0x4 */ u8 field_0x4;
|
||||
/* 0x5 */ bool m_closed;
|
||||
/* 0x6 */ u8 field_0x6;
|
||||
/* 0x7 */ u8 field_0x7;
|
||||
/* 0x8 */ dStage_dPnt_c* m_points;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user