mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-25 15:25:07 -04:00
232 lines
6.3 KiB
C++
232 lines
6.3 KiB
C++
#ifndef D_A_RD_H
|
|
#define D_A_RD_H
|
|
|
|
#include "d/d_npc.h"
|
|
#include "d/d_jnt_hit.h"
|
|
#include "m_Do/m_Do_hostIO.h"
|
|
#include "SSystem/SComponent/c_phase.h"
|
|
#include "c/c_damagereaction.h"
|
|
|
|
class daRd_HIO_c : public mDoHIO_entry_c {
|
|
public:
|
|
daRd_HIO_c();
|
|
virtual ~daRd_HIO_c() {}
|
|
|
|
void genMessage(JORMContext* ctx);
|
|
|
|
public:
|
|
/* 0x04 */ dNpc_HIO_c mNpc;
|
|
/* 0x2C */ u8 m2C;
|
|
/* 0x2D */ u8 m2D[0x30 - 0x2D];
|
|
/* 0x30 */ f32 m30;
|
|
/* 0x34 */ f32 m34;
|
|
/* 0x38 */ f32 mCryRadius;
|
|
/* 0x3C */ f32 mAttackRadius;
|
|
/* 0x40 */ s16 m40;
|
|
/* 0x42 */ s16 mCrySpreadAngle;
|
|
/* 0x44 */ s16 mAttackSpreadAngle;
|
|
/* 0x46 */ s16 m46;
|
|
/* 0x48 */ s16 m48;
|
|
/* 0x4A */ s16 m4A;
|
|
/* 0x4C */ s16 m4C;
|
|
/* 0x4E */ s16 m4E;
|
|
/* 0x50 */ s16 m50;
|
|
/* 0x52 */ s16 m52;
|
|
/* 0x54 */ s16 m54;
|
|
/* 0x56 */ u8 m56[0x58 - 0x56];
|
|
/* 0x58 */ f32 m58;
|
|
/* 0x5C */ f32 m5C;
|
|
/* 0x60 */ f32 m60;
|
|
/* 0x64 */ f32 m64;
|
|
/* 0x68 */ f32 m68;
|
|
/* 0x6C */ f32 mReturnWalkSpeed;
|
|
/* 0x70 */ f32 m70;
|
|
/* 0x74 */ f32 m74;
|
|
/* 0x78 */ s16 m78;
|
|
/* 0x7A */ s16 mParalysisDuration;
|
|
/* 0x7C */ JntHit_HIO_c m7C;
|
|
};
|
|
|
|
class daRd_c : public fopEn_enemy_c {
|
|
public:
|
|
enum Proc_e {
|
|
PROC_INIT = 0,
|
|
PROC_EXEC = 1,
|
|
};
|
|
|
|
enum Mode {
|
|
MODE_WAIT = 0x0,
|
|
MODE_DAMAGE = 0x1,
|
|
MODE_PARALYSIS = 0x2,
|
|
MODE_DEATH = 0x3,
|
|
MODE_MOVE = 0x4,
|
|
MODE_CRY = 0x5,
|
|
MODE_CRY_WAIT = 0x6,
|
|
MODE_ATTACK = 0x7,
|
|
MODE_RETURN = 0x8,
|
|
MODE_SILENT_PRAY = 0x9,
|
|
MODE_SW_WAIT = 0xA,
|
|
MODE_KANOKE = 0xB,
|
|
MODE_NULL,
|
|
};
|
|
|
|
enum BckIdx {
|
|
BckIdx_TACHIP = 0x0,
|
|
BckIdx_SUWARIP = 0x1,
|
|
BckIdx_WALK2ATACK = 0x2,
|
|
BckIdx_ATACK = 0x3,
|
|
BckIdx_ATACK2WALK = 0x4,
|
|
BckIdx_WALK = 0x5,
|
|
BckIdx_DAMAGE = 0x6,
|
|
BckIdx_DEAD = 0x7,
|
|
BckIdx_TATSU = 0x8,
|
|
BckIdx_SUWARU = 0x9,
|
|
BckIdx_KANOKEP = 0xA,
|
|
BckIdx_BEAM_HIT = 0xB,
|
|
BckIdx_BEAM = 0xC,
|
|
BckIdx_BEAM_END = 0xD,
|
|
};
|
|
|
|
enum AnmPrm {
|
|
AnmPrm_TACHIP0 = 0x0,
|
|
AnmPrm_TACHIP1 = 0x1,
|
|
AnmPrm_SUWARIP = 0x2,
|
|
AnmPrm_WALK2ATACK = 0x3,
|
|
AnmPrm_ATACK = 0x4,
|
|
AnmPrm_ATACK2WALK = 0x5,
|
|
AnmPrm_WALK = 0x6,
|
|
AnmPrm_DAMAGE = 0x7,
|
|
AnmPrm_DEAD = 0x8,
|
|
AnmPrm_TATSU = 0x9,
|
|
AnmPrm_SUWARU = 0xA,
|
|
AnmPrm_KANOKEP = 0xB,
|
|
AnmPrm_BEAM_HIT = 0xC,
|
|
AnmPrm_BEAM = 0xD,
|
|
AnmPrm_BEAM_END = 0xE,
|
|
AnmPrm_NULL,
|
|
};
|
|
|
|
typedef void (daRd_c::*ModeFunc)();
|
|
|
|
static const u32 m_heapsize;
|
|
static const char m_arc_name[];
|
|
static const dCcD_SrcCyl m_cyl_src;
|
|
|
|
daRd_c() {}
|
|
bool isAnm(s8 idx) { return mAnmPrmIdx == idx; }
|
|
void onIkari() { mbIkari = true; }
|
|
void offIkari() { mbIkari = false; }
|
|
bool isIkari() { return mbIkari; }
|
|
void modeProcInit(int newMode) { modeProc(PROC_INIT, newMode); }
|
|
|
|
fopAc_ac_c* _searchNearDeadRd(fopAc_ac_c*);
|
|
void _nodeControl(J3DNode*, J3DModel*);
|
|
void _nodeHeadControl(J3DNode*, J3DModel*);
|
|
BOOL _createHeap();
|
|
bool createArrowHeap();
|
|
bool checkPlayerInAttack();
|
|
bool checkPlayerInCry();
|
|
void lookBack();
|
|
bool checkTgHit();
|
|
void setCollision();
|
|
void setIceCollision();
|
|
void setAttention();
|
|
void setMtx();
|
|
void modeWaitInit();
|
|
void modeWait();
|
|
void modeDeathInit();
|
|
void modeDeath();
|
|
void modeDamageInit();
|
|
void modeDamage();
|
|
void modeParalysisInit();
|
|
void modeParalysis();
|
|
void modeMoveInit();
|
|
void modeMove();
|
|
void modeCryInit();
|
|
void modeCry();
|
|
void modeCryWaitInit();
|
|
void modeCryWait();
|
|
void modeAttackInit();
|
|
void modeAttack();
|
|
void modeReturnInit();
|
|
void modeReturn();
|
|
void modeSilentPrayInit();
|
|
void modeSilentPray();
|
|
void modeSwWaitInit();
|
|
void modeSwWait();
|
|
void modeKanokeInit();
|
|
void modeKanoke();
|
|
void modeProc(Proc_e, int);
|
|
void setBrkAnm(s8);
|
|
void setBtkAnm(s8);
|
|
void setAnm(s8, bool);
|
|
bool _execute();
|
|
void debugDraw();
|
|
bool _draw();
|
|
bool isLinkControl();
|
|
void createInit();
|
|
void getArg();
|
|
cPhs_State _create();
|
|
bool _delete();
|
|
|
|
/* 0x2AC */ int mMode;
|
|
/* 0x2B0 */ u8 m2B0[0x2B4 - 0x2B0];
|
|
/* 0x2B4 */ int mWhichIdleAnm;
|
|
/* 0x2B8 */ int mAreaRadius;
|
|
/* 0x2BC */ int mChecksSwitch;
|
|
/* 0x2C0 */ int mSwNo;
|
|
/* 0x2C4 */ u8 m2C4;
|
|
/* 0x2C5 */ u8 mHitType; // TODO enum
|
|
/* 0x2C6 */ u8 m2C6[0x2C8 - 0x2C6];
|
|
/* 0x2C8 */ request_of_phase_process_class mPhs;
|
|
/* 0x2D0 */ mDoExt_McaMorf* mpMorf;
|
|
/* 0x2D4 */ mDoExt_btkAnm mBtkAnm;
|
|
/* 0x2E8 */ mDoExt_brkAnm mBrkAnm;
|
|
/* 0x300 */ cXyz mSpawnPos;
|
|
/* 0x30C */ s16 mSpawnAngle;
|
|
/* 0x30E */ u8 m30E[0x310 - 0x30E];
|
|
/* 0x310 */ int mTimer1;
|
|
/* 0x314 */ int mTimer2;
|
|
/* 0x318 */ int mBreakFreeCounter;
|
|
/* 0x31C */ dBgS_ObjAcch mAcch;
|
|
/* 0x4E0 */ dBgS_AcchCir mAcchCir;
|
|
/* 0x520 */ dCcD_Stts mStts;
|
|
/* 0x55C */ dCcD_Cyl mCyl;
|
|
/* 0x68C */ u8 m68C[0x690 - 0x68C];
|
|
/* 0x690 */ u32 mShadowId;
|
|
/* 0x694 */ mDoExt_invisibleModel mInvisModel;
|
|
/* 0x69C */ dNpc_JntCtrl_c mJntCtrl;
|
|
/* 0x6D0 */ fpc_ProcID mCorpseID;
|
|
/* 0x6D4 */ int m6D4;
|
|
/* 0x6D8 */ s8 mBckIdx;
|
|
/* 0x6D9 */ s8 mAnmPrmIdx;
|
|
/* 0x6DA */ s8 mOldAnmPrmIdx;
|
|
/* 0x6DB */ s8 m6DB;
|
|
/* 0x6DC */ s8 m6DC;
|
|
/* 0x6DD */ u8 m6DD[0x6E0 - 0x6DD];
|
|
/* 0x6E0 */ enemyice mEnemyIce;
|
|
/* 0xA98 */ enemyfire mEnemyFire;
|
|
/* 0xCC0 */ JntHit_c* mpJntHit;
|
|
/* 0xCC4 */ cXyz mTargetPos;
|
|
/* 0xCD0 */ cXyz mRdEyePos;
|
|
/* 0xCDC */ s16 mMaxHeadTurnVel;
|
|
/* 0xCDE */ u8 mCDE[0xCE0 - 0xCDE];
|
|
/* 0xCE0 */ int mCE0;
|
|
/* 0xCE4 */ int mCE4;
|
|
/* 0xCE8 */ Mtx mCE8;
|
|
/* 0xD18 */ s16 mHeadAngle;
|
|
/* 0xD1A */ s16 mD1A;
|
|
/* 0xD1C */ s16 mD1C;
|
|
/* 0xD1E */ s16 mD1E;
|
|
/* 0xD20 */ u8 mD20[0xD2E - 0xD20];
|
|
/* 0xD2E */ s16 mD2E;
|
|
/* 0xD30 */ u8 mD30[0xD34 - 0xD30];
|
|
/* 0xD34 */ bool mbIkari;
|
|
/* 0xD35 */ u8 mD35[0xD38 - 0xD35];
|
|
/* 0xD38 */ f32 mD38;
|
|
/* 0xD3C */ int mD3C;
|
|
/* 0xD40 */ int mD40;
|
|
};
|
|
|
|
#endif /* D_A_RD_H */
|