Files
tww/include/d/actor/d_a_npc_bm1.h
T
2026-07-27 12:14:38 -04:00

348 lines
10 KiB
C++

#ifndef D_A_NPC_BM1_H
#define D_A_NPC_BM1_H
#include "JSystem/JParticle/JPAEmitter.h"
#include "d/d_npc.h"
#include "f_op/f_op_actor.h"
class daNpc_Bm1_c : public fopNpc_npc_c {
public:
typedef s8 SpecificType;
enum {
SPECIFIC_TYPE_Quill_0_e,
SPECIFIC_TYPE_Quill_1_e,
SPECIFIC_TYPE_Quill_2_e,
SPECIFIC_TYPE_Quill_3_e,
SPECIFIC_TYPE_Quill_4_e,
SPECIFIC_TYPE_Akoot_e,
SPECIFIC_TYPE_Skett_e,
SPECIFIC_TYPE_Basht_e,
SPECIFIC_TYPE_Bisht_e,
SPECIFIC_TYPE_Hoskit_e,
SPECIFIC_TYPE_Ilari_0xA_e,
SPECIFIC_TYPE_Ilari_0xB_e,
SPECIFIC_TYPE_Ilari_0xC_e,
SPECIFIC_TYPE_Pashli_e,
SPECIFIC_TYPE_Namali_e,
SPECIFIC_TYPE_Kogoli_e,
SPECIFIC_TYPE_Invalid_e = 0xFF
};
typedef s8 Type;
enum {
TYPE_Uninitialized_e,
TYPE_Quill_e,
TYPE_Akoot_e,
TYPE_Skett_e,
TYPE_Basht_e,
TYPE_Bisht_e,
TYPE_Hoskit_e,
TYPE_Ilari_e,
TYPE_Pashli_e,
TYPE_Namali_e,
TYPE_Kogoli_e,
TYPE_Invalid_e = 0xFF,
};
struct anm_prm_c {
/* 0x00 */ s8 anmNum;
/* 0x01 */ s8 btpNum;
/* 0x04 */ f32 morf;
/* 0x08 */ f32 speed;
/* 0x0C */ int loopMode;
/* 0x10 */ BOOL hasArms;
};
typedef BOOL (daNpc_Bm1_c::*ActionFunc)(void*);
bool IamKakkuto() { return mSpecificType == SPECIFIC_TYPE_Akoot_e; }
bool IamSukketo() { return mSpecificType == SPECIFIC_TYPE_Skett_e; }
void clr_manzai() { mbManzai = false; }
bool getOdoroki() { return m880; }
s8 getStt() { return mStatus; }
u16 get_oldMsgStat() { return mOldMsgStat; }
void setFocus() { m882 = true; }
void setTelescopeDemo() { m881 = true; }
void set_manzai() { mbManzai = true; }
void nodeWngControl(J3DNode*, J3DModel*);
void nodeArmControl(J3DNode*, J3DModel*);
void nodeBm1Control(J3DNode*, J3DModel*);
bool chk_appCnd();
bool init_PST_0();
bool init_PST_1();
bool init_PST_2();
bool init_PST_3();
bool init_PST_4();
bool init_BMB_0();
bool init_BMB_1();
bool init_BMB_2();
bool init_BMC_0();
bool init_BMC_1();
bool init_BMC_2();
bool init_BMC_3();
bool init_BMD_0();
bool init_BMD_1();
bool init_SKT_0();
bool init_KKT_0();
bool createInit();
void setMtx(bool);
char* anmNum_toResID(int);
char* headAnmNum_toResID(int);
char* wingAnmNum_toResID(int);
char* btpNum_toResID(int);
bool setBtp(bool, int);
bool iniTexPttrnAnm(bool);
void plyTexPttrnAnm();
void setAnm_tex(s8);
BOOL setAnm_anm(anm_prm_c*);
void setAnm_NUM(int, int);
bool setAnm();
void setPlaySpd(float);
void chg_anmTag();
void control_anmTag();
void chg_anmAtr(u8);
void control_anmAtr();
void setAnm_ATR(int);
void anmAtr(u16);
void eventOrder();
void checkOrder();
u8 chk_manzai();
bool chk_talk();
bool chk_partsNotMove();
void lookBack();
u16 next_msgStatus(u32*);
s8 getBitMask();
u32 getMsg_PST_1();
u32 getMsg_PST_3();
u32 getMsg_SKT_0();
u32 getMsg_KKT_0();
u32 getMsg_BMB_0();
u32 getMsg_BMB_1();
u32 getMsg_BMB_2();
u32 getMsg_BMC_0();
u32 getMsg_BMC_2();
u32 getMsg_BMC_3();
u32 getMsg_BMD_0();
u32 getMsg_BMD_1();
u32 getMsg();
bool chkAttention();
void setAttention(bool);
fopAc_ac_c* searchByID(fpc_ProcID);
bool partner_srch_sub(fpcLyIt_JudgeFunc);
void partner_srch();
u32 bm_movPass(bool);
void bm_setFlyAnm();
void bm_clcFlySpd();
void bm_clcMovSpd();
bool bm_flyMove();
void bm_nMove();
void setPrtcl_Flyaway();
void delPrtcl_Flyaway();
void setPrtcl_Land0();
void delPrtcl_Land0();
void setPrtcl_Hane0();
void flwPrtcl_Hane0();
void delPrtcl_Hane0();
void setPrtcl_Hane1();
void flwPrtcl_Hane1();
void delPrtcl_Hane1();
bool decideType(int, int);
void eInit_setLocFlag(int*);
void eInit_setShapeAngleY(int*, short);
void eInit_setEvTimer(int*);
cXyz eInit_calcRelativPos(cXyz*, int*);
void eInit_ATTENTION_(int*, int*, int*, cXyz*, int*, int*, int*);
void eInit_SET_PLYER_GOL_(int*, cXyz*, int*);
float eInit_prmFloat(float*, float);
void eInit_FLY_(int*, float*, float*, float*, float*);
void eInit_DEL_ACTOR_();
void eInit_WLK_(int*, float*, float*, cXyz*, int*, int*, int*);
void eInit_INI_EVN_1_();
void eInit_SET_NXT_PTH_INF_();
void eInit_SET_ANM_(int*);
void eInit_MOV_PTH_POINT_(int*, int*, int*, int*);
void event_actionInit(int);
bool eMove_ATTENTION_();
bool eMove_KMA_FLY_();
bool eMove_FLY_();
bool eMove_WLK_();
bool event_action();
void cut_init_360_TRN(int);
bool cut_move_360_TRN();
void privateCut(int);
void endEvent();
BOOL isEventEntry();
void event_proc(int);
BOOL set_action(ActionFunc, void*);
BOOL chk_action(ActionFunc); // Unused
void setStt(s8);
BOOL d_wait();
BOOL lookup();
BOOL orooro();
BOOL wait_1();
BOOL talk_1();
BOOL talk_2();
BOOL manzai();
BOOL wait_4();
BOOL flyawy();
BOOL wait_5();
BOOL wait_6(); //Unused
BOOL h_wait();
BOOL wait_7();
BOOL wait_3();
BOOL wait_8();
BOOL wait_2();
BOOL walk_1();
BOOL CHKwai();
BOOL demo_action1(void*);
BOOL wait_action1(void*);
BOOL wait_action2(void*);
BOOL wait_action3(void*);
BOOL wait_action4(void*);
BOOL wait_action5(void*);
BOOL wait_action6(void*);
BOOL wait_action7(void*);
BOOL wait_action8(void*);
BOOL wait_action9(void*);
BOOL wait_actionA(void*);
bool demo();
void shadowDraw();
BOOL _draw();
BOOL _execute();
BOOL _delete();
cPhs_State _create();
J3DModelData* create_Anm();
J3DModelData* create_hed_Anm();
J3DModelData* create_wng_Anm();
J3DModelData* create_arm_Anm();
bool create_itm_Mdl();
BOOL CreateHeap();
private:
/* 0x6C4 */ request_of_phase_process_class mPhs;
/* 0x6CC */ char mArcName[4];
/* 0x6D0 */ s8 m_hed_jnt_num;
/* 0x6D1 */ s8 m_bbone_jnt_num;
/* 0x6D2 */ s8 m_nec_jnt_num;
/* 0x6D3 */ s8 m_arm_L_jnt_num;
/* 0x6D4 */ s8 m_arm_R_jnt_num;
/* 0x6D8 */ J3DModel* mpBinderModel;
/* 0x6DC */ J3DModel* mpBagModel;
/* 0x6E0 */ J3DModel* mpKnifeModel;
/* 0x6E4 */ J3DModel* mpStickModel;
/* 0x6E8 */ u32 mShadowID;
/* 0x6EC */ mDoExt_McaMorf* mpHeadMorf;
/* 0x6F0 */ J3DAnmTexPattern* m_hed_tex_pttrn;
/* 0x6F4 */ mDoExt_btpAnm mHeadBtpAnm;
/* 0x708 */ u8 mBlinkFrame;
/* 0x70A */ s16 mBlinkTimer;
/* 0x70C */ s16 pad70C;
/* 0x710 */ mDoExt_McaMorf* mpWingMorf;
/* 0x714 */ s8 m_wngL1_jnt_num;
/* 0x715 */ s8 m_wngR1_jnt_num;
/* 0x716 */ s8 m_wngL3_jnt_num;
/* 0x717 */ s8 m_wngR3_jnt_num;
/* 0x718 */ u8 pad718[0x71C - 0x718]; //Possibly an unused mDoExt_McaMorf* ?
/* 0x71C */ mDoExt_McaMorf* mpArmMorf;
/* 0x720 */ s8 m_armL1_jnt_num;
/* 0x721 */ s8 m_armR1_jnt_num;
/* 0x722 */ s8 m_armL2_jnt_num;
/* 0x723 */ s8 m_armR2_jnt_num;
/* 0x724 */ s8 m_hnd_R_jnt_num;
/* 0x728 */ ActionFunc mCurrActionFunc;
/* 0x734 */ Mtx mLeftArmMtx;
/* 0x764 */ Mtx mRightArmMtx;
/* 0x794 */ dNpc_PathRun_c mPathRun;
/* 0x79C */ dNpc_EventCut_c mEventCut;
/* 0x808 */ fpc_ProcID mPartnerProcID;
/* 0x80C */ cXyz mInitialPos;
/* 0x818 */ csXyz m818;
/* 0x820 */ cXyz mEyePos;
/* 0x82C */ cXyz m82C;
/* 0x838 */ cXyz mTargetPos;
/* 0x844 */ f32 mFrame;
/* 0x848 */ f32 mTargetFlySpeed;
/* 0x84C */ f32 mFlySpeedY;
/* 0x850 */ f32 mTargetFlyStep;
/* 0x854 */ f32 mFlyAccelY;
/* 0x858 */ f32 m858;
/* 0x85C */ s16 m85C;
/* 0x85E */ s16 m85E;
/* 0x860 */ s16 m860;
/* 0x862 */ s16 mEventIdTable[4];
/* 0x86A */ s16 mEventIdx;
/* 0x86C */ s16 m86C;
/* 0x86E */ s16 m86E;
/* 0x870 */ s16 m870;
/* 0x872 */ s16 m872;
/* 0x874 */ s16 mHeadLookAtMaxVel;
/* 0x876 */ s16 m876;
/* 0x878 */ u16 mOldMsgStat;
/* 0x87A */ s8 mbMorfAnimStopped;
/* 0x87B */ s8 m87B;
/* 0x87C */ s8 m87C;
/* 0x87D */ u8 m87D;
/* 0x87E */ u8 m87E;
/* 0x87F */ bool m87F;
/* 0x880 */ bool m880;
/* 0x881 */ bool m881;
/* 0x882 */ bool m882;
/* 0x883 */ bool mbManzai;
/* 0x884 */ bool mbInitPostman0;
/* 0x885 */ bool mbHasArms;
/* 0x886 */ bool mbSetShapeAngle;
/* 0x887 */ u8 m887;
/* 0x888 */ u8 m888;
/* 0x889 */ bool m889;
/* 0x88A */ bool m88A;
/* 0x88B */ u8 m88B;
/* 0x88C */ bool mbRanExecute;
/* 0x88D */ u8 m88D;
/* 0x88E */ u8 m88E;
/* 0x88F */ u8 m88F;
/* 0x890 */ s32 mbSetEyePos;
/* 0x894 */ bool mbAttention;
/* 0x895 */ bool m895;
/* 0x896 */ bool m896;
/* 0x897 */ bool mbInDemo;
/* 0x898 */ cXyz mWingLPos;
/* 0x8A4 */ cXyz mWingRPos;
/* 0x8B0 */ cXyz mArmLPos;
/* 0x8BC */ cXyz mArmRPos;
/* 0x8C8 */ u8 m8C8;
/* 0x8C9 */ u8 m8C9[0x8CC - 0x8C9];
/* 0x8CC */ u8 m8CC;
/* 0x8CD */ u8 m8CD[0x8D4 - 0x8CD];
/* 0x8D4 */ JPABaseEmitter* mpFlyawayEmitterL;
/* 0x8D8 */ JPABaseEmitter* mpFlyawayEmitterR;
/* 0x8DC */ JPABaseEmitter* mpLandEmitterL;
/* 0x8E0 */ JPABaseEmitter* mpLandEmitterR;
/* 0x8E4 */ JPABaseEmitter* mpFeatherEmitterL;
/* 0x8E8 */ JPABaseEmitter* mpFeatherEmitterR;
/* 0x8EC */ JPABaseEmitter* mpFeather1EmitterL;
/* 0x8F0 */ JPABaseEmitter* mpFeather1EmitterR;
#if VERSION == VERSION_DEMO
/* 0x8F4 */ u8 mDemoUnused[4]; //Possibly an unused emitter
#endif
/* 0x8F4 */ s8 m8F4;
/* 0x8F5 */ s8 mActionIndex;
/* 0x8F6 */ s8 mActNo;
/* 0x8F7 */ u8 m8F7;
/* 0x8F8 */ u8 m8F8;
/* 0x8F9 */ s8 mBtpNum;
/* 0x8FA */ s8 mAnmNum;
/* 0x8FB */ u8 m8FB[0x8FD - 0x8FB];
/* 0x8FD */ s8 m8FD;
/* 0x8FE */ s8 mStatus;
/* 0x8FF */ s8 m8FF;
/* 0x900 */ s8 mLookBackState;
/* 0x901 */ s8 mType;
/* 0x902 */ SpecificType mSpecificType;
/* 0x903 */ s8 mSpawnCondition;
/* 0x904 */ s8 m904;
/* 0x904 */ s8 m905;
};
#endif /* D_A_NPC_BM1_H */