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:
TakaRikka
2025-02-19 15:43:26 -08:00
committed by GitHub
parent 376a5be6e3
commit bbc7944e54
21 changed files with 3827 additions and 5003 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
struct counter_class {
u32 mCounter0;
s32 mCounter1;
s32 mTimer;
u32 mTimer;
};
extern counter_class g_Counter;
+34
View File
@@ -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();
+91 -83
View File
@@ -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 */
+22 -8
View File
@@ -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;
};
+5
View File
@@ -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); }
+35 -26
View File
@@ -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;
+5
View File
@@ -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;
+1
View File
@@ -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];
+2
View File
@@ -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; }
+9
View File
@@ -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;
+8
View File
@@ -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();
+1
View File
@@ -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 */
+1
View File
@@ -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;
};