#ifndef D_D_ATTENTION_H #define D_D_ATTENTION_H #include "SSystem/SComponent/c_angle.h" #include "m_Do/m_Do_ext.h" class fopAc_ac_c; class mDoExt_McaMorf; class J3DAnmColor; class J3DMatColorAnm; class dAttDraw_c { public: void setAnm(int, int, int); void draw(cXyz&, Mtx); /* 0x0 */ mDoExt_McaMorf * mpMorf; /* 0x4 */ J3DAnmColor * mpAnmClr; /* 0x8 */ J3DMatColorAnm * mpAnmMatClr; }; class dAttHint_c { public: dAttHint_c() {} u32 getPId(void*); fopAc_ac_c* convPId(unsigned int); int request(fopAc_ac_c*, int); void init(); void proc(); private: /* 0x0 */ u32 mHintActorID; /* 0x4 */ int mPriority; /* 0x8 */ u32 field_0x8; }; class dAttCatch_c { public: dAttCatch_c() {} fopAc_ac_c* convPId(unsigned int); void init(); void proc(); void request(fopAc_ac_c*, u8, f32, f32, f32, s16, int); fopAc_ac_c* getCatghTarget() { return convPId(mCatghTargetID); } u8 getChangeItem() { return mChangeItem; } private: /* 0x00 */ u32 field_0x0; /* 0x04 */ int field_0x4; /* 0x08 */ f32 field_0x8; /* 0x0C */ u8 field_0xc; /* 0x0D */ u8 field_0xd; /* 0x0E */ u8 field_0xe; /* 0x0F */ u8 field_0xf; /* 0x10 */ u32 mCatghTargetID; /* 0x14 */ u8 mChangeItem; }; // Size: 0x18 class dAttParam_c { public: /* 0x00 */ u16 field_0x00; /* 0x02 */ u8 field_0x02[0x04 - 0x02]; /* 0x04 */ f32 field_0x04; /* 0x08 */ f32 field_0x08; /* 0x0C */ f32 field_0x0c; /* 0x10 */ f32 field_0x10; /* 0x14 */ f32 field_0x14; /* 0x18 */ f32 field_0x18; public: dAttParam_c() {} dAttParam_c(s32); virtual ~dAttParam_c(); /* 0x1C vtable */ }; // Size: 0x20 class dAttLook_c { public: fopAc_ac_c* convPId(unsigned int); void init(); void proc(); void request(fopAc_ac_c*, f32, f32, f32, s16, int); void requestF(fopAc_ac_c*, s16, int); private: u32 field_0x0; u32 field_0x4; f32 field_0x8; u32 mLookTargetID; }; // Size: 0x10 class dAttList_c { public: fopAc_ac_c* getActor(); void setActor(fopAc_ac_c*); u32 getPid() { return mActorID; } /* 0x0 */ f32 mWeight; /* 0x4 */ f32 mDistance; /* 0x8 */ u32 mType; /* 0xC */ u32 mActorID; }; // Size: 0x10 class dAttDraw_CallBack_c : public mDoExt_McaMorfCallBack1_c { public: virtual void execute(u16, J3DTransformInfo*); }; class daPy_lk_c; class dAttention_c { public: dAttention_c() {} dAttention_c(fopAc_ac_c*, u32); ~dAttention_c(); dAttList_c* GetActionList(s32); dAttList_c* GetLockonList(s32); dAttList_c* getActionBtnB(); dAttList_c* getActionBtnXYZ_local(int); dAttList_c* getActionBtnX(); dAttList_c* getActionBtnY(); dAttList_c* getActionBtnZ(); void chkAttMask(u32, u32); void calcWeight(int, fopAc_ac_c*, f32, s16, s16, u32*); void setLList(fopAc_ac_c*, f32, f32, u32); void setAList(fopAc_ac_c*, f32, f32, u32); void initList(u32); s32 makeList(); void SelectAttention(fopAc_ac_c*); void sortList(); void stockAttention(u32); void nextAttention(u32); s32 freeAttention(); void chaseAttention(); void EnemyDistance(fopAc_ac_c*); void runSoundProc(); void runDrawProc(); void runDebugDisp0(); void runDebugDisp(); void judgementButton(); void judgementTriggerProc(); void judgementLostCheck(); void judgementStatusSw(u32); void judgementStatusHd(u32); void Run(u32); void Draw(); fopAc_ac_c* LockonTarget(s32); void LockonReleaseDistanse(); unsigned int LockonTargetPId(s32); fopAc_ac_c* ActionTarget(s32); bool LockonTruth(); void Init(fopAc_ac_c* i_owner, u32 i_playerNo) { mpPlayer = (daPy_lk_c*)i_owner; mPlayerNo = i_playerNo; } fopAc_ac_c* Owner() { return (fopAc_ac_c*)mpPlayer; } void CatchRequest(fopAc_ac_c* param_0, u8 param_1, f32 param_2, f32 param_3, f32 param_4, s16 param_5, s32 param_6) { mCatch.request(param_0, param_1, param_2, param_3, param_4, param_5, param_6); } public: /* 0x000 */ daPy_lk_c* mpPlayer; /* 0x004 */ int mLockOnTargetBsPcID; /* 0x008 */ dAttDraw_CallBack_c mpCallBack; /* 0x00C */ int mPlayerNo; /* 0x010 */ u32 mFlagMask; /* 0x014 */ u8 field_0x014[0x018 - 0x014]; /* 0x018 */ u8 mLockOnState; /* 0x019 */ u8 field_0x019; /* 0x01A */ u8 field_0x01a; /* 0x01B */ u8 field_0x01b; /* 0x01C */ s16 field_0x01c; /* 0x01E */ u8 field_0x01E[0x020 - 0x01E]; /* 0x020 */ u32 mFlags; /* 0x024 */ JKRHeap* mpHeap; /* 0x028 */ u8 field_0x028; /* 0x02C */ cXyz field_0x02c; /* 0x038 */ dAttDraw_c mDraw[2]; /* 0x050 */ u32 field_0x050; /* 0x054 */ dAttList_c mLockOnList[8]; /* 0x0D4 */ int mLockOnNum; /* 0x0D8 */ int mLockOnOffs; /* 0x0DC */ dAttList_c mActionList[4]; /* 0x11C */ int mActionNum; /* 0x120 */ int mActionOffs; /* 0x124 */ dAttHint_c mHint; /* 0x130 */ dAttCatch_c mCatch; /* 0x148 */ dAttLook_c mLook[2]; /* 0x168 */ int mEnemyBsPcId; /* 0x16C */ f32 mEnemyDistance; /* 0x170 */ dAttParam_c mAttParam; }; // Size: 0x190 STATIC_ASSERT(sizeof(dAttention_c) == 0x190); #endif /* D_D_ATTENTION_H */