Files
tww/include/d/actor/d_a_npc_tt.h
T
2026-07-13 13:37:02 -04:00

181 lines
5.2 KiB
C++

#ifndef D_A_NPC_TT_H
#define D_A_NPC_TT_H
#include "f_op/f_op_actor.h"
#include "d/d_npc.h"
struct tt_ke_s {
/* 0x00 */ cXyz field_0x00[10];
/* 0x78 */ cXyz field_0x78[10];
void ke_control(f32);
void ke_pos_set(cXyz*);
};
struct daNpc_Tt_ke_c {
tt_ke_s field_0x6C8[8];
mDoExt_3DlineMat0_c mLineMat;
};
class daNpc_Tt_c : public fopAc_ac_c {
public:
enum ActionStatus {
ACTION_ENDING = -1,
ACTION_STARTING = 0,
ACTION_ONGOING = 1
};
enum TalkStates {
TALK_FINISHED = -1,
TALK_INIT = 0,
TALK_MSG_CREATE = 1,
TALK_ACTIVE = 2
};
typedef BOOL (daNpc_Tt_c::*ActionFunc)(void*);
bool ChkOrder(u8 flag) { return mOrderFlags & flag; }
void ClrOrder() { mOrderFlags = 0; }
void SetOrder(u8 flag) { mOrderFlags |= flag; }
bool chkEvFlag(u16 evFlag) { return (mEvFlags & evFlag) == evFlag; }
bool chkFlag(u16 flag) { return (mFlags & flag) == flag; }
void clrEvFlag(u16 evFlag) { mEvFlags &= ~evFlag; }
void clrFlag(u16 flag) { mFlags &= ~flag; }
s8 getBackboneJntNum() { return m_backbone_jnt_num; }
s8 getHeadJntNum() { return m_head_jnt_num; }
s16 getBackbone_x() { return m_jnt.getBackbone_x(); }
s16 getBackbone_y() { return m_jnt.getBackbone_y(); }
s16 getHead_x() { return m_jnt.getHead_x(); }
s16 getHead_y() { return m_jnt.getHead_y(); }
void incAttnSetCount() {
if (mAttnSetCount != 0xff) {
mAttnSetCount++;
}
}
BOOL setAction(ActionFunc actionFunc, void* arg) {
if (mCurrActionFunc != actionFunc) {
if (mCurrActionFunc != NULL) {
mActionStatus = ACTION_ENDING;
(this->*mCurrActionFunc)(arg);
}
mCurrActionFunc = actionFunc;
mActionStatus = ACTION_STARTING;
(this->*mCurrActionFunc)(arg);
}
return TRUE;
}
void setAttentionBasePos(cXyz i_attnBasePos) { mAttnBasePos = i_attnBasePos; }
void setEvFlag(u16 evFlag) { mEvFlags |= evFlag;}
void setEyePos(cXyz i_eyePos) { mEyePos = i_eyePos; }
void setFlag(u16 flag) { mFlags |= flag; }
s16 XyCheckCB(int);
void setAnmStatus();
void eventOrder();
void checkOrder();
u16 next_msgStatus(u32*);
u32 getMsg();
void setCollision();
void talkInit();
void msgAnm();
void msgPushButton();
void msgContinue();
u16 talk();
void demoInitChange();
bool demoProcTact1();
void demoInitPatten();
bool demoProcPatten();
void demoInitSpeak();
bool demoProcSpeak();
void demoInitWait();
bool demoProcWait();
void demoInitCom();
void demoProcCom();
s32 getNowEventAction();
bool demoProc();
BOOL init();
void setAttention(bool);
void lookBack();
bool wait01();
bool talk01();
bool tact00();
BOOL wait_action(void*);
void set_ke_root(int, int, int);
void ke_execute();
BOOL _draw();
BOOL _execute();
BOOL _delete();
cPhs_State _create();
BOOL CreateHeap();
BOOL initTexPatternAnm(bool);
void playTexPatternAnm();
void setAnm(int);
void danceInit(int);
BOOL danceProc();
BOOL danceNext();
public:
/* 0x290 */ dNpc_HeadAnm_c mHeadAnm;
/* 0x2B4 */ s16 mEventIdx;
/* 0x2B6 */ u8 field_0x2B6[0x2B8 - 0x2B6];
/* 0x2B8 */ request_of_phase_process_class mPhs;
/* 0x2C0 */ mDoExt_McaMorf* mpMorf;
/* 0x2C4 */ u32 mShadowId;
/* 0x2C8 */ J3DAnmTexPattern* m_head_tex_pattern;
/* 0x2CC */ mDoExt_btpAnm mBtpAnm;
/* 0x2E0 */ u8 mBlinkFrame;
/* 0x2E1 */ u8 field_0x2E1[0x2E2 - 0x2E1];
/* 0x2E2 */ s16 mBlinkTimer;
/* 0x2E4 */ dBgS_ObjAcch mObjAcch;
/* 0x4A8 */ dBgS_AcchCir mAcchCir;
/* 0x4E8 */ dCcD_Stts mStts;
/* 0x524 */ dCcD_Cyl mCyl;
/* 0x654 */ s8 m_head_jnt_num;
/* 0x655 */ s8 m_backbone_jnt_num;
/* 0x656 */ u8 field_0x656[0x658 - 0x656];
/* 0x658 */ dNpc_JntCtrl_c m_jnt;
/* 0x68C */ cXyz mEyePos;
/* 0x698 */ cXyz mAttnBasePos;
/* 0x6A4 */ s16 mMaxHeadTurnVelocity;
/* 0x6A6 */ u8 field_0x6A6[0x6A8 - 0x6A6];
/* 0x6A8 */ s8 mAnmEnded;
/* 0x6A9 */ u8 mAttnSetCount;
/* 0x6AA */ u8 field_0x6AA[0x6AC - 0x6AA];
/* 0x6AC */ f32 mAnmTimer;
/* 0x6B0 */ u32 mCurrMsgNo;
/* 0x6B4 */ u16 mFlags;
/* 0x6B6 */ s16 mNoticeLinkTimer;
/* 0x6B8 */ ActionFunc mCurrActionFunc;
/* 0x6C4 */ u8 mDanceStep;
/* 0x6C5 */ u8 mDanceStepTimer;
/* 0x6C6 */ u8 field_0x6C6[0x6C8 - 0x6C6];
/* 0x6C8 */ daNpc_Tt_ke_c mLineKe;
/* 0xE64 */ s8 mTexPatternIdx;
/* 0xE65 */ s8 mCurrAnmIdx;
/* 0xE66 */ s8 mAnmLoopCount;
/* 0xE67 */ u8 mOrderFlags;
/* 0xE68 */ s8 mState;
/* 0xE69 */ s8 mReturnToState;
/* 0xE6A */ u8 mType;
/* 0xE6B */ s8 mActionStatus;
/* 0xE6C */ s8 mTalkState;
/* 0xE6D */ u8 mMsgAnmIdx;
/* 0xE6E */ u8 field_0xE6E[0xE70 - 0xE6E];
/* 0xE70 */ u32 mMtrlSndId;
/* 0xE74 */ s8 mReverb;
/* 0xE75 */ u8 mEvFlags;
/* 0xE76 */ s16 mSoundTimer;
/* 0xE78 */ s16 mTimer;
/* 0xE7A */ u8 field_0xE7A;
/* 0xE7B */ u8 field_0xE7B[0xE7C - 0xE7B];
/* 0xE7C */ u32 mMsgNo;
/* 0xE80 */ int mStaffIdx;
}; // Size: 0xE84
#endif /* D_A_NPC_TT_H */