#ifndef D_A_NPC_TK_H #define D_A_NPC_TK_H #include "d/actor/d_a_npc.h" #include "d/d_path.h" struct cXyz; class fopAc_ac_c; class J3DJoint; class J3DModel; /** * @ingroup actors-npcs * @class daNPC_TK_c * @brief Hawk * * @details * */ class daNPC_TK_c : public fopAc_ac_c { public: /* 80B01498 */ void setBck(int, u8, f32, f32); /* 80B0153C */ void checkBck(int); /* 80B01598 */ void draw(); /* 80B016D4 */ void checkBeforeBg(); /* 80B01878 */ void setActionMode(int); /* 80B018F4 */ void setAddCalcSpeedXZ(cXyz&, cXyz const&, f32, f32, f32); /* 80B01C84 */ void chaseTargetPos(cXyz, f32, f32, s16); /* 80B01D84 */ void getMasterPointer(); /* 80B01DA0 */ void setMasterShoulder(cXyz*); /* 80B01E48 */ void setAwayAction(int); /* 80B01EF4 */ void setFlySE(); /* 80B02254 */ void executeFly(); /* 80B026F8 */ void initPerchDemo(int); /* 80B02B5C */ void executePerchDemo(int); /* 80B03658 */ void executePerch(); /* 80B03754 */ void executeHandOn(); /* 80B039A8 */ void checkWaterSurface(f32); /* 80B03A70 */ void executeAttack(); /* 80B048BC */ void executeAway(); /* 80B04BF8 */ void setCarryActorMtx(); /* 80B04F64 */ void getTakePosY(); /* 80B04FA8 */ void getTakeOffPosY(); /* 80B04FEC */ void executeBack(); /* 80B05BD0 */ void getHanjoHandPos(); /* 80B05C7C */ void executeStayHanjo(); /* 80B05EC8 */ void executeAttackLink(); /* 80B0686C */ void executeBackHanjo(); /* 80B07114 */ void checkAttackDemo(); /* 80B072CC */ void executeAttackDemo(); /* 80B07610 */ void executeBackHanjoDemo(); /* 80B08168 */ void executeWolfEvent(); /* 80B08208 */ void calcWolfDemoCam(); /* 80B082A4 */ void calcWolfDemoCam2(); /* 80B0839C */ void executeWolfPerch(); /* 80B09A3C */ void executeResistanceDemo(); /* 80B0A444 */ void setHawkSideCamera(cXyz); /* 80B0A500 */ void setHawkCamera(fopAc_ac_c*); /* 80B0A568 */ void endHawkCamera(); /* 80B0A614 */ void calcDemoCamera(); /* 80B0B004 */ void checkActionSet(); /* 80B0B284 */ void action(); /* 80B0B5CC */ void mtx_set(); /* 80B0B6DC */ void cc_set(); /* 80B0B7CC */ void execute(); /* 80B0B918 */ void _delete(); /* 80B0B9AC */ void ctrlJoint(J3DJoint*, J3DModel*); /* 80B0BB7C */ void JointCallBack(J3DJoint*, int); /* 80B0BBC8 */ void CreateHeap(); /* 80B0BD24 */ void create(); void setBump() { mFlags |= 4; } void setEventWolf() { mFlags |= 0x80; } void setEvent() { mFlags |= 0x8; } void setAway() { mFlags |= 2; } void setAttack() { mFlags |= 1; } void setHawkPath(u8 i_pathNo) { if (i_pathNo != 0xFF) { field_0x6c8 = dPath_GetRoomPath(i_pathNo, fopAcM_GetRoomNo(this)); } } BOOL isAttackLink() { return field_0x71a != 0; } void setAttackLink() { mFlags |= 0x10; } void setBackHanjo() { mFlags |= 0x20; } void setHanjoHand() { mFlags |= 0x40; } void setQuickHanjoHand() { mFlags |= 0x200; } BOOL isHanjoHand() { return field_0x6ad != 0; } private: /* 0x568 */ u8 field_0x568[0x6ad - 0x568]; /* 0x6AD */ u8 field_0x6ad; /* 0x568 */ u8 field_0x6ae[0x6BE - 0x6ae]; /* 0x6BE */ u16 mFlags; /* 0x6C0 */ u8 field_0x6c0[0x6C8 - 0x6C0]; /* 0x6C8 */ dPath* field_0x6c8; /* 0x6CC */ u8 field_0x6cc[0x71a - 0x6CC]; /* 0x71A */ u8 field_0x71a; /* 0x6CC */ u8 field_0x71b[0xB44 - 0x71b]; }; STATIC_ASSERT(sizeof(daNPC_TK_c) == 0xB44); class daNPC_TK_HIO_c { public: daNPC_TK_HIO_c(); ~daNPC_TK_HIO_c(); }; #endif /* D_A_NPC_TK_H */