mirror of https://github.com/zeldaret/tp.git
230 lines
6.8 KiB
C++
230 lines
6.8 KiB
C++
#ifndef D_A_B_TN_H
|
|
#define D_A_B_TN_H
|
|
|
|
#include "f_op/f_op_actor.h"
|
|
#include "d/d_bg_s_acch.h"
|
|
#include "d/d_cc_uty.h"
|
|
#include "d/d_cc_d.h"
|
|
|
|
/**
|
|
* @ingroup actors-enemies
|
|
* @class daB_TN_c
|
|
* @brief Darknut
|
|
*
|
|
* @details Temple of Time dungeon mini-boss.
|
|
*
|
|
*/
|
|
|
|
class daB_TN_c : public fopEn_enemy_c {
|
|
public:
|
|
enum daB_TN_ACTION1 {
|
|
/* 0x0 */ ACT_ROOMDEMO,
|
|
/* 0x1 */ ACT_OPENING,
|
|
/* 0x2 */ ACT_WAITH,
|
|
/* 0x3 */ ACT_CHASEH,
|
|
/* 0x4 */ ACT_ATTACKH,
|
|
/* 0x5 */ ACT_ATTACKSHIELDH,
|
|
/* 0x6 */ ACT_GUARDH,
|
|
/* 0x7 */ ACT_DAMAGEH,
|
|
/* 0x8 */ ACT_CHANGEDEMO,
|
|
/* 0x9 */ ACT_CHASEL,
|
|
/* 0xA */ ACT_ATTACKL,
|
|
/* 0xB */ ACT_ATTACKSHIELDL,
|
|
/* 0xC */ ACT_GUARDL,
|
|
/* 0xD */ ACT_DAMAGEL,
|
|
/* 0xE */ ACT_ENDING,
|
|
/* 0xF */ ACT_YOROKE,
|
|
};
|
|
|
|
enum daB_TN_ACTION2 {
|
|
/* 0x0 */ ACTION2_0_e,
|
|
/* 0x1 */ ACTION2_1_e,
|
|
/* 0x2 */ ACTION2_2_e,
|
|
/* 0x3 */ ACTION2_3_e,
|
|
/* 0x4 */ ACTION2_4_e,
|
|
/* 0x5 */ ACTION2_5_e,
|
|
/* 0x6 */ ACTION2_6_e,
|
|
/* 0x7 */ ACTION2_7_e,
|
|
/* 0x8 */ ACTION2_8_e,
|
|
/* 0x9 */ ACTION2_9_e,
|
|
/* 0xA */ ACTION2_10_e,
|
|
/* 0xB */ ACTION2_11_e,
|
|
/* 0xC */ ACTION2_12_e,
|
|
/* 0xD */ ACTION2_13_e,
|
|
/* 0xE */ ACTION2_14_e,
|
|
/* 0xF */ ACTION2_15_e,
|
|
/* 0x10 */ ACTION2_16_e,
|
|
/* 0x11 */ ACTION2_17_e,
|
|
|
|
/* 0x14 */ ACTION2_20_e = 0x14,
|
|
/* 0x40 */ ACTION2_70_e = 0x40,
|
|
/* 0x46 */ ACTION2_76_e = 0x46,
|
|
/* 0x64 */ ACTION2_100_e = 100,
|
|
/* 0x65 */ ACTION2_101_e,
|
|
/* 0x66 */ ACTION2_102_e,
|
|
/* 0x67 */ ACTION2_103_e,
|
|
/* 0x68 */ ACTION2_104_e,
|
|
/* 0x69 */ ACTION2_105_e,
|
|
/* 0x6A */ ACTION2_106_e,
|
|
/* 0x6B */ ACTION2_107_e,
|
|
};
|
|
|
|
int ctrlJoint(J3DJoint*, J3DModel*);
|
|
static int JointCallBack(J3DJoint*, int);
|
|
void calcNeckAngle();
|
|
void calcWaistAngle();
|
|
int draw();
|
|
void setBreakPart(int);
|
|
void setBreakHeadPart(int);
|
|
void setPartLandEffect(int, int);
|
|
void calcShieldMove();
|
|
void calcSwordMoveA();
|
|
void calcSwordMoveB();
|
|
void calcOtherPartMove(int);
|
|
void calcPartMove();
|
|
void setBck(int, u8, f32, f32);
|
|
int checkBck(int);
|
|
void setActionMode(int, int);
|
|
void setSwordAtBit(int);
|
|
void setSwordAtBreak(int);
|
|
void setBodyShield();
|
|
bool checkNormalAttackAble();
|
|
u32 getCutType();
|
|
void setDamage(dCcD_Sph*, int);
|
|
void setShieldEffect(dCcD_Sph*);
|
|
void damage_check();
|
|
int checkMoveArea();
|
|
bool checkMoveAngle();
|
|
void setAttackBlurEffect(int);
|
|
void setArmorBreakEffect(int);
|
|
void demo_skip(int);
|
|
static int DemoSkipCallBack(void*, int);
|
|
void executeRoomDemo();
|
|
void executeOpening();
|
|
void executeWaitH();
|
|
void setAwaitSound();
|
|
void executeChaseH();
|
|
void checkStartAttackH();
|
|
void executeAttackH();
|
|
void executeAttackShieldH();
|
|
void executeGuardH();
|
|
void executeDamageH();
|
|
void executeChangeDemo();
|
|
void executeZakoChangeDemo();
|
|
void setWalkDir();
|
|
void initChaseL(int);
|
|
bool checkAttackAble();
|
|
bool checkNextMove();
|
|
void executeChaseL();
|
|
void executeAttackL();
|
|
void executeAttackShieldL();
|
|
void executeGuardL();
|
|
void executeDamageL();
|
|
void executeYoroke();
|
|
void executeEnding();
|
|
void executeZakoEnding();
|
|
void action();
|
|
void mtx_set();
|
|
void cc_set();
|
|
int execute();
|
|
int _delete();
|
|
int CreateHeap();
|
|
int create();
|
|
|
|
private:
|
|
/* 0x05AC */ request_of_phase_process_class mPhaseReq1;
|
|
/* 0x05B4 */ request_of_phase_process_class mPhaseReq2;
|
|
/* 0x05BC */ J3DModel* mpPartModels[16];
|
|
/* 0x05FC */ mDoExt_McaMorfSO* mpModelMorf1;
|
|
/* 0x0600 */ mDoExt_McaMorfSO* mpModelMorf2;
|
|
/* 0x0604 */ mDoExt_brkAnm* mpBrkAnms[16];
|
|
/* 0x0644 */ mDoExt_brkAnm* mpBrkAnm;
|
|
/* 0x0648 */ J3DModel* swordEffectModel;
|
|
/* 0x064C */ Z2CreatureEnemy mSound;
|
|
/* 0x06F0 */ int mActionMode1;
|
|
/* 0x06F4 */ int mActionMode2;
|
|
/* 0x06F8 */ u32 mShadowKey;
|
|
/* 0x06FC */ int field_0x6fc;
|
|
/* 0x0700 */ int field_0x700;
|
|
/* 0x0704 */ cXyz mCamEye;
|
|
/* 0x0710 */ cXyz mCamCenter;
|
|
/* 0x071C */ f32 mCamFovY;
|
|
/* 0x0720 */ s16 field_0x720;
|
|
/* 0x0724 */ f32 field_0x724;
|
|
/* 0x0728 */ f32 mMaterialColor;
|
|
/* 0x072C */ Mtx mNewTRMtx;
|
|
/* 0x075C */ cXyz mPositions[16];
|
|
/* 0x081C */ cXyz mPositionsCopy[16];
|
|
/* 0x08DC */ cXyz field_0x8dc[16];
|
|
/* 0x099C */ csXyz field_0x99c[16];
|
|
/* 0x09FC */ u16 mStates[16];
|
|
/* 0x0A1C */ u16 field_0xa1c[16];
|
|
/* 0x0A3C */ s16 field_0xa3c[16];
|
|
/* 0x0A5C */ s16 field_0xa5c;
|
|
/* 0x0A60 */ int mTimer9;
|
|
/* 0x0A64 */ s16 field_0xa64;
|
|
/* 0x0A66 */ s16 field_0xa66;
|
|
/* 0x0A68 */ s16 mInvincibilityTimer;
|
|
/* 0x0A6C */ int mTimer1;
|
|
/* 0x0A70 */ int mTimer3;
|
|
/* 0x0A74 */ int mTimer6;
|
|
/* 0x0A78 */ int mNextBreakPart;
|
|
/* 0x0A7C */ int mTimer4;
|
|
/* 0x0A80 */ int mTimer5;
|
|
/* 0x0A84 */ int mTimer7;
|
|
/* 0x0A88 */ int mVibrationTimer;
|
|
/* 0x0A8C */ int mWalkDir;
|
|
/* 0x0A90 */ u8 mUpdateModelTimer;
|
|
/* 0x0A91 */ bool field_0xa91;
|
|
/* 0x0A92 */ u8 mNextActionMode2;
|
|
/* 0x0A93 */ bool mUpdateNeckAngle;
|
|
/* 0x0A94 */ bool mUpdateWaistAngle;
|
|
/* 0x0A96 */ s16 mNeckAngle;
|
|
/* 0x0A98 */ s16 mWaistAngle;
|
|
/* 0x0A9A */ bool field_0xa9a;
|
|
/* 0x0A9B */ u8 mActionMode2Copy;
|
|
/* 0x0A9C */ u8 field_0xa9c;
|
|
/* 0x0A9D */ u8 field_0xa9d;
|
|
/* 0x0A9E */ bool mDisappear;
|
|
/* 0x0A9F */ bool mCutFlag;
|
|
/* 0x0AA0 */ bool mSphCSmallFlag;
|
|
/* 0x0AA1 */ bool mChkCoHitOK;
|
|
/* 0x0AA2 */ u8 field_0xaa2;
|
|
/* 0x0AA3 */ u8 mBrkAnmFrame;
|
|
/* 0x0AA4 */ u8 mSwitchNo;
|
|
/* 0x0AA5 */ u8 mType;
|
|
/* 0x0AA6 */ u8 mType2;
|
|
/* 0x0AA7 */ u8 mTimer10;
|
|
/* 0x0AA8 */ bool field_0xaa8;
|
|
/* 0x0AA9 */ u8 mTimer12;
|
|
/* 0x0AAA */ u8 mTimer13;
|
|
/* 0x0AAB */ u8 mCutJumpStatus;
|
|
/* 0x0AAC */ bool mInactive;
|
|
/* 0x0AAD */ bool mStayNo2Flag;
|
|
/* 0x0AAE */ u8 mBlendStatus;
|
|
/* 0x0AB0 */ f32 mBlend;
|
|
/* 0x0AB4 */ char* mArcName;
|
|
/* 0x0AB8 */ dBgS_AcchCir mAcchCir;
|
|
/* 0x0AF8 */ dBgS_ObjAcch mAcch;
|
|
/* 0x0CD0 */ dBgS_AcchCir mAcchCirArr[16];
|
|
/* 0x10D0 */ dBgS_ObjAcch mAcchArr[16];
|
|
/* 0x2E50 */ dCcD_Stts mStts1;
|
|
/* 0x2E8C */ dCcD_Stts mStts2;
|
|
/* 0x2EC8 */ dCcD_Sph mSphA[3];
|
|
/* 0x3270 */ dCcD_Sph mSphB[3];
|
|
/* 0x3618 */ dCcD_Sph mSphC;
|
|
/* 0x3750 */ dCcD_Sph mSwordSphs[4];
|
|
/* 0x3C30 */ dCcD_Cps mCps;
|
|
/* 0x3D74 */ dCcD_Sph mSphD;
|
|
/* 0x3EAC */ cXyz mCpsPos;
|
|
/* 0x3EB8 */ dCcU_AtInfo mAtInfo;
|
|
/* 0x3EDC */ dCcD_Stts mSttsArr[16];
|
|
/* 0x429C */ dCcD_Sph mSphArr[16];
|
|
/* 0x561C */ u32 mParticleKeys[4];
|
|
/* 0x562C */ u8 mHioInit;
|
|
};
|
|
|
|
STATIC_ASSERT(sizeof(daB_TN_c) == 0x5630);
|
|
|
|
#endif /* D_A_B_TN_H */
|