mirror of https://github.com/zeldaret/tp.git
223 lines
6.3 KiB
C++
223 lines
6.3 KiB
C++
#ifndef D_A_NPC_YKW_H
|
|
#define D_A_NPC_YKW_H
|
|
|
|
#include "d/actor/d_a_npc.h"
|
|
|
|
class daNpc_ykW_HIO_c;
|
|
class daNpc_ykW_Param_c;
|
|
|
|
#if DEBUG
|
|
#define NPC_YKW_HIO_CLASS daNpc_ykW_HIO_c
|
|
#else
|
|
#define NPC_YKW_HIO_CLASS daNpc_ykW_Param_c
|
|
#endif
|
|
|
|
/**
|
|
* @ingroup actors-npcs
|
|
* @class daNpc_ykW_c
|
|
* @brief Yeta
|
|
*
|
|
* @details
|
|
*
|
|
*/
|
|
class daNpc_ykW_c : public daNpcT_c {
|
|
public:
|
|
typedef int (daNpc_ykW_c::*cutFunc)(int);
|
|
typedef int (daNpc_ykW_c::*actionFunc)(void*);
|
|
|
|
~daNpc_ykW_c();
|
|
int create();
|
|
int CreateHeap();
|
|
int Delete();
|
|
int Execute();
|
|
int Draw();
|
|
static int createHeapCallBack(fopAc_ac_c*);
|
|
static int ctrlJointCallBack(J3DJoint*, int);
|
|
static void* srchItemHeart(void*, void*);
|
|
static void* srchYkw(void*, void*);
|
|
u32 getType(daNpc_ykW_c* da_npc_yk_w_c);
|
|
fopAc_ac_c* getOtherYkwP(int);
|
|
static void* srchYkm(void*, void*);
|
|
fopAc_ac_c* getOtherYkmP(int);
|
|
u8 getType();
|
|
int isDelete();
|
|
void reset();
|
|
void afterJntAnm(int);
|
|
void setParam();
|
|
int checkChangeEvt();
|
|
void setAfterTalkMotion();
|
|
void srchActors();
|
|
int evtTalk();
|
|
int evtCutProc();
|
|
void action();
|
|
void beforeMove();
|
|
void afterMoved();
|
|
void setAttnPos();
|
|
void setCollision();
|
|
int drawDbgInfo();
|
|
int selectAction();
|
|
BOOL chkAction(actionFunc param_0);
|
|
BOOL setAction(int (daNpc_ykW_c::*)(void*));
|
|
cXyz getGoalPos();
|
|
int orderGoIntoBossRoomEvt();
|
|
fopAc_ac_c* putUtuwaHeart(cXyz*, f32, f32, s16, cXyz*);
|
|
int cutShowDoor(int);
|
|
int cutGoIntoBossRoom(int);
|
|
int cutLv5DungeonClear(int);
|
|
int cutFindWolf(int);
|
|
int cutStartSnowboardRace(int);
|
|
int cutEndSnowboardRace(int);
|
|
int cutHug(int);
|
|
void setDialogueMotion();
|
|
int dialogue();
|
|
int wait(void*);
|
|
int sitWait(void*);
|
|
int walk(void*);
|
|
int race(void*);
|
|
int talk(void*);
|
|
int test(void*);
|
|
daNpc_ykW_c(const daNpcT_faceMotionAnmData_c * param_0,
|
|
const daNpcT_motionAnmData_c* param_1,
|
|
const daNpcT_MotionSeqMngr_c::sequenceStepData_c* param_2,
|
|
int param_3,
|
|
const daNpcT_MotionSeqMngr_c::sequenceStepData_c* param_4,
|
|
int param_5,
|
|
const daNpcT_evtData_c* param_6, char** param_7):
|
|
daNpcT_c(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7) {
|
|
// "daNpc_ykW_c -> construct"
|
|
OS_REPORT("|%06d:%x|daNpc_ykW_c -> コンストラクト\n", g_Counter.mCounter0, this);
|
|
}
|
|
u16 getEyeballMaterialNo() { return 2; }
|
|
s32 getHeadJointNo() { return 5; }
|
|
s32 getNeckJointNo() { return 4; }
|
|
s32 getBackboneJointNo() { return 1; }
|
|
int checkChangeJoint(int i_index) { return i_index == 5; }
|
|
int checkRemoveJoint(int i_index) { return i_index == 9; }
|
|
s32 getFootLJointNo() { return 13; }
|
|
s32 getFootRJointNo() { return 16; }
|
|
|
|
s32 getFlowNodeNo() {
|
|
u32 angleX = (u16)home.angle.x;
|
|
s32 temp_r30;
|
|
if (angleX == 0xffff) {
|
|
temp_r30 = -1;
|
|
} else {
|
|
temp_r30 = (u16)angleX;
|
|
}
|
|
return temp_r30;
|
|
}
|
|
|
|
u8 getBitTRB() {
|
|
return home.angle.z & 0x3f;
|
|
}
|
|
|
|
u8 getBitSW() {
|
|
return (fopAcM_GetParam(this) & 0xff0000) >> 16;
|
|
}
|
|
|
|
u8 getBitSW2() {
|
|
return (fopAcM_GetParam(this) & 0xff000000) >> 24;
|
|
}
|
|
|
|
u8 getBitSW3() {
|
|
return (home.angle.z & 0xff00) >> 8;
|
|
}
|
|
|
|
u8 getPathID() {
|
|
return (fopAcM_GetParam(this) & 0xff00) >> 8;
|
|
}
|
|
|
|
u8 getExitNo() {
|
|
return (fopAcM_GetParam(this) & 0xf0) >> 4;
|
|
}
|
|
|
|
static const char* mCutNameList[8];
|
|
static cutFunc mCutList[8];
|
|
|
|
void setDialogueTmr1(int param_1) {
|
|
field_0x1024 = param_1;
|
|
field_0x1018 = 10;
|
|
}
|
|
|
|
void setDialogueTmr2(int param_1) {
|
|
field_0x1024 = param_1;
|
|
field_0x101c = 10;
|
|
}
|
|
|
|
/* 0x0E40 */ NPC_YKW_HIO_CLASS* mpHIO;
|
|
/* 0x0E44 */ dCcD_Cyl mCyl;
|
|
/* 0x0F80 */ u8 field_0xf80;
|
|
/* 0x0F84 */ daNpcT_ActorMngr_c mActorMngrs[5];
|
|
/* 0x0FAC */ daNpcT_Path_c mPath;
|
|
/* 0x0FD4 */ dPath* mpPath;
|
|
/* 0x0FD8 */ actionFunc field_0xfd8;
|
|
/* 0x0FE4 */ actionFunc field_0xfe4;
|
|
/* 0x0FF0 */ cXyz field_0xff0;
|
|
/* 0x0FFC */ cXyz field_0xffc;
|
|
/* 0x1008 */ cXyz field_0x1008;
|
|
/* 0x1014 */ u32 mTimer;
|
|
/* 0x1018 */ int field_0x1018;
|
|
/* 0x101C */ int field_0x101c;
|
|
/* 0x1020 */ int field_0x1020;
|
|
/* 0x1024 */ int field_0x1024;
|
|
/* 0x1028 */ int field_0x1028;
|
|
/* 0x102C */ int field_0x102c;
|
|
/* 0x1030 */ int field_0x1030;
|
|
/* 0x1034 */ int field_0x1034;
|
|
/* 0x1038 */ int field_0x1038;
|
|
/* 0x103C */ int field_0x103c;
|
|
/* 0x1040 */ u8 field_0x1040[0x1044 - 0x1040];
|
|
/* 0x1044 */ daNpcT_pntData_c field_0x1044;
|
|
/* 0x104C */ int field_0x104c;
|
|
/* 0x1050 */ u8 field_0x1050[0x1054 - 0x1050];
|
|
/* 0x1054 */ f32 field_0x1054;
|
|
/* 0x1058 */ s16 field_0x1058;
|
|
/* 0x105C */ u32 field_0x105c;
|
|
/* 0x1060 */ u8 field_0x1060;
|
|
/* 0x1061 */ u8 field_0x1061;
|
|
/* 0x1062 */ u8 field_0x1062;
|
|
/* 0x1063 */ u8 field_0x1063;
|
|
/* 0x1064 */ u8 field_0x1064;
|
|
/* 0x1065 */ u8 field_0x1065;
|
|
/* 0x1066 */ u8 field_0x1066;
|
|
/* 0x1067 */ u8 field_0x1067;
|
|
/* 0x1068 */ u8 field_0x1068;
|
|
/* 0x1069 */ u8 field_0x1069;
|
|
/* 0x106A */ u8 field_0x106a;
|
|
/* 0x106B */ u8 field_0x106b;
|
|
/* 0x106C */ u8 field_0x106c;
|
|
/* 0x106D */ u8 field_0x106d[0x106e - 0x106d];
|
|
/* 0x106E */ u8 field_0x106e;
|
|
/* 0x106F */ u8 field_0x106f;
|
|
/* 0x1070 */ u8 field_0x1070;
|
|
/* 0x1071 */ u8 field_0x1071[0x1074 - 0x1071];
|
|
/* 0x1070 */ u8 field_0x1074[0x1078 - 0x1074];
|
|
};
|
|
|
|
STATIC_ASSERT(sizeof(daNpc_ykW_c) == 0x1078);
|
|
|
|
struct daNpc_ykW_HIOParam {
|
|
/* 0x00 */ daNpcT_HIOParam common;
|
|
/* 0x8C */ f32 mSkipFrame;
|
|
/* 0x90 */ f32 mFlySpeed;
|
|
/* 0x94 */ f32 mFlyAngle;
|
|
/* 0x98 */ f32 mJumpInitialSpeed;
|
|
/* 0x9C */ f32 mSlidingAccel;
|
|
/* 0xA0 */ f32 mSlidingSpeed;
|
|
/* 0xA4 */ s16 mCompetParamA;
|
|
/* 0xA6 */ s16 mCompetParamB;
|
|
/* 0xA8 */ f32 mCompetParamC;
|
|
/* 0xAC */ s16 mWalkingTime;
|
|
/* 0xAE */ s16 mDownTime;
|
|
/* 0xB0 */ s16 mStepSpeed;
|
|
};
|
|
|
|
class daNpc_ykW_Param_c {
|
|
public:
|
|
virtual ~daNpc_ykW_Param_c() {}
|
|
|
|
static const daNpc_ykW_HIOParam m;
|
|
};
|
|
|
|
#endif /* D_A_NPC_YKW_H */
|