Files
2025-09-15 11:14:19 -04:00

186 lines
5.1 KiB
C++

#ifndef D_A_NPC_FA1_H
#define D_A_NPC_FA1_H
#include "d/d_npc.h"
#include "f_op/f_op_actor.h"
#include "d/d_bg_s_gnd_chk.h"
#include "d/d_particle.h"
#include "m_Do/m_Do_hostIO.h"
#include "SSystem/SComponent/c_lib.h"
class daNpc_Fa1_McaMorfCallBack1_c : public mDoExt_McaMorfCallBack1_c {
public:
daNpc_Fa1_McaMorfCallBack1_c();
bool execute(u16 jnt_no, J3DTransformInfo*);
s16 getNeckAngle() { return mNeckAngle;}
void setNeckAngle(s16 angle) { mNeckAngle = angle; }
u16 getNeckJoint() { return mNeckJoint; }
void setNeckJoint(u16 joint) { mNeckJoint = joint; }
public:
/* 0x04 */ s16 mNeckAngle;
/* 0x06 */ u16 mNeckJoint;
};
class daNpc_Fa1_c : public fopNpc_npc_c {
public:
enum Type_e {
Type_NORMAL_e = 0,
Type_TIMER_e = 1,
Type_LINK_e = 2,
Type_BABA_e = 3,
Type_AREA_e = 4,
Type_LINK_DOWN_e = 5,
Type_HOVER_e = 6,
};
enum Mode_e {
Mode_NORMAL_MOVE_e = 0,
Mode_PLAYER_MOVE_e = 1,
Mode_ESCAPE_MOVE_e = 2,
Mode_BOTTLE_APPEAR_MOVE_e = 3,
Mode_BOTTLE_BABA_WAIT_e = 4,
Mode_BOTTLE_BABA_MOVE_e = 5,
Mode_BOTTLE_BABA_MOVE2_e = 6,
Mode_BIGELF_CHANGE_e = 7,
Mode_HOVER_MOVE_e = 8,
};
enum Normal_SubMode_e {
NormalSubMode_STRAIGHT_e = 0,
NormalSubMode_TURN_e = 1,
NormalSubMode_AREAMOVE_e = 2,
NormalSubMode_AREAOUTMOVE_e = 3,
};
enum Bottle_SubMode_e {
BottleSubMode_UP1_e = 0,
BottleSubMode_DOWN_e = 1,
BottleSubMode_UP2_e = 2,
};
enum BottleBaba_SubMode_e {
BottleBabaSubMode_BABADOWN_e = 0,
BottleBabaSubMode_UP2_e = 1,
};
u8 getMode() { return mMode; }
void setMode(u8 mode) { mMode = mode; }
bool isLinkMode() { return mMode == Mode_PLAYER_MOVE_e; }
void isBabaMode() {}
u8 getSubMode() { return mSubMode; }
void setSubMode(u8 submode) { mSubMode = submode; }
bool isTypeTimer() { return mType == Type_TIMER_e; }
bool isTypeLink() { return mType == Type_LINK_e; }
bool isTypeBaba() { return mType == Type_BABA_e; }
bool isTypeArea() { return mType == Type_AREA_e; }
bool isTypeLinkDown() { return mType == Type_LINK_DOWN_e; }
bool isTypeHover() { return mType == Type_HOVER_e; }
void setTypeNormal() { mType = Type_NORMAL_e; }
f32 getGroundY() { return mGroundY; }
void setGroundY(f32 y) { mGroundY = y; }
bool checkStatus(u8 bit) { return cLib_checkBit(mStatus, bit); }
void setStatus(u8 status) { cLib_setBit(mStatus, status); }
void getTimer() {}
void setTimer(u16) {}
void countTimer() {}
void setTime2(u8) {}
void countTime2() {}
void getAngSpeed() {}
void setAngSpeed(s16) {}
f32 getPlayerR() { return mPlayerR; }
void setPlayerR(f32 radius) { mPlayerR = radius; }
void getpLocalPos() {}
void setLocalPos(f32) {}
void setPointLightParam();
int createInit();
BOOL _draw();
BOOL _execute();
BOOL checkBinCatch();
void position_move(f32, f32);
void BGCheck();
void init_normal_move();
void normal_move();
void init_straight();
void init_straight2();
void straight();
void init_turn();
void turn();
void init_areaMove();
void areaMove();
void init_areaOutMove();
void areaOutMove();
void init_get_player_move();
void get_player_move();
void init_escape_move();
void escape_move();
void init_hover_move();
void hover_move();
void init_bottle_appear_move();
void bottle_appear_move();
void init_up1();
void up1();
void init_down();
void down();
void init_up2();
void up2();
void init_bottle_baba_wait();
void bottle_baba_wait();
void init_bottle_baba_move();
void bottle_baba_move();
void init_bottle_baba_move2();
void bottle_baba_move2();
void init_baba_down();
void baba_down();
void init_baba_up();
void init_bigelf_change();
void bigelf_change();
void findPlayer();
BOOL _delete();
cPhs_State _create();
int CreateHeap();
void setMtx();
public:
typedef void(daNpc_Fa1_c::*MoveFunc_t)();
typedef void(daNpc_Fa1_c::*MoveSubFunc_t)();
typedef void(daNpc_Fa1_c::*BottleMoveSubFunc_t)();
typedef void(daNpc_Fa1_c::*BottleBabaSubFunc_t)();
/* 0x6C4 */ u8 m6C4[0x6CC - 0x6C4];
/* 0x6CC */ mDoExt_McaMorf* mpMorf;
/* 0x6D0 */ daNpc_Fa1_McaMorfCallBack1_c mMcaMorfCallback1;
/* 0x6D8 */ dPa_followEcallBack mSparklePtclCallback;
/* 0x6EC */ JPABaseEmitter* mpEmitter;
/* 0x6F0 */ dBgS_ObjGndChk_All mGndChk;
/* 0x744 */ LIGHT_INFLUENCE mPointLight;
/* 0x764 */ fopAc_ac_c* m764;
/* 0x768 */ cXyz m768;
/* 0x774 */ cXyz m774;
/* 0x780 */ f32 mPlayerR;
/* 0x784 */ f32 mGroundY;
/* 0x788 */ u16 mTimer;
/* 0x78A */ s16 m78A;
/* 0x78C */ s16 m78C;
/* 0x78E */ s16 m78E;
/* 0x790 */ u8 mMode;
/* 0x791 */ u8 mMoveTimer;
/* 0x792 */ u8 mSubMode;
/* 0x793 */ u8 mStatus;
/* 0x794 */ s8 mType;
/* 0x795 */ u8 m795[0x798 - 0x795];
/* 0x798 */ s16 m798;
/* 0x79A */ s16 m79A;
/* 0x79C */ f32 m79C;
/* 0x7A0 */ f32 m7A0;
};
#endif /* D_A_NPC_FA1_H */