📄 role.h
字号:
CPath objPath;
CCommand cmdProc;
CMySize sizeBase;
int nFlyOffset;
int nFlyOffsetGoal;
BOOL bAdjustDir;
BOOL bAdjustRun;
int nNextStep;
DWORD dwSpeed;
}CRoleInfo;
#include <list>
using namespace std;
typedef list<UINT> LIST_DIR;
class CRole :public CMapObj
{
private:
void StaticAction(int nAction, int nDir=-1);
BOOL Step (void);
BOOL Walk (void);
BOOL WalkForward (void);
BOOL Run (void);
BOOL RunForward (void);
BOOL Jump (void);
BOOL Emotion (void);
BOOL Attack (void);
BOOL RushAtk (void);
BOOL LockAtk (void);
BOOL TeamFollow (void);
BOOL Follow (void);
BOOL Action (void);
BOOL Die (void);
BOOL DieNormal (void);
BOOL DieDelay (void);
BOOL DieFlying (void);
BOOL DieFloat (void);
BOOL PickUp (void);
BOOL Pose (void);
BOOL InTone (void);
BOOL Bump (void);
BOOL Mine (void);
BOOL LockBooth (void);
BOOL TakeOff (void);
BOOL Landing (void);
BOOL Float (void);
BOOL Kongfu (void);
protected:
int GetOffsetY();
BOOL StandBy (void);
private:
int GetStepDir (void);
BOOL IsMapReached (void);
int GetJumpHeight ();
int GetJumpShadowHeight();
DWORD GetJumpFrameInterval();
int GetWalkHeight ();
public:
CRole(void){Init();}
virtual ~CRole(void){Destroy();}
void Init (void);
BOOL Create (UINT uLook=1, int nViewType = _ROLE_VIEW_ROLE);
BOOL Create (UINT uLook, int nViewType, OBJID id, CMyPos pos);
void Destroy (void);
virtual void GetWorldPos (int& iPosX, int& iPosY) {iPosX=m_Info.posWorld.x, iPosY=m_Info.posWorld.y;}
virtual void GetScrPos (int& iPosX, int& iPosY) {iPosX=m_Info.posScr.x, iPosY=m_Info.posScr.y;}
virtual void GetPos (int& iPosX, int& iPosY) {iPosX=m_Info.posMap.x, iPosY=m_Info.posMap.y;}
virtual void GetSize (int& iWidth, int& iHeight) {iWidth=iHeight=m_Info.iSize;}
virtual void Show (void);
virtual void Process (void* pInfo);
virtual BOOL ProcessAction (void);
virtual BOOL IsMouseFocus(int evtMouse=_MOUSE_NONE);
virtual BOOL IsVisible(void);
virtual int GetAtkRange (void) { return 1; }
void SetActionData (void);
void ResetActionData (void);
DWORD GetFrameInterval(int nActType);
DWORD GetDistance (CRole* pRole);
BOOL IsMapAttainable (int iMapX, int iMapY);
BOOL IsWalking (void);
BOOL IsRunning (void);
BOOL IsMoving (void);
BOOL IsStandBy (void);
BOOL IsIdle (void); // 空闲状态, 表示当前人物任务处在最低优先级别
BOOL IsBumpBackEnable (void);
DWORD GetActionDelayInfoKey (CRole* pTarget);
DWORD GetWeaponInfoKey (CRole* pTarget);
void AddStepDir (UINT uDir) {m_lstStepDir.push_back(uDir%8);}
void ResetStepDir();
BOOL SetPos (int iPosX, int iPosY);
void SetNextPos (int iPosX, int iPosY) {m_Info.posNext.x = iPosX;m_Info.posNext.y = iPosY;}
void SetScrPos (int iPosX, int iPosY) {m_Info.posScr.x = iPosX;m_Info.posScr.y = iPosY;}
void SetRushPos (int iPosX, int iPosY) {m_Info.posRush.x = iPosX, m_Info.posRush.y = iPosY;}
void ClrRushPos (void) {m_Info.posRush.x = m_Info.posRush.y = 0;}
void ShowName (void);
void Say (const char* pszWords);
DWORD GetSpeed() const {return m_Info.dwSpeed;}
void SetSpeed(DWORD dwSpeed) {m_Info.dwSpeed = dwSpeed;}
// 3d feature
void SetRGBA (float alpha, float red, float green, float blue);
void SetArmor (OBJID idType);
void SetArmet (OBJID idType);
void SetRWeapon (OBJID idType);
void SetLWeapon (OBJID idType);
void SetMount (OBJID idType);
void SetMantle (OBJID idType);
BOOL HaveBow ();
OBJID GetArmor (){return m_Info.idArmorType;}
OBJID GetArmet (){return m_Info.idArmetType;}
OBJID GetRWeapon (){return m_Info.idRWeaponType;}
OBJID GetLWeapon (){return m_Info.idLWeaponType;}
OBJID GetMount (){return m_Info.idMountType;}
OBJID GetMantle (){return m_Info.idMantleType;}
// static...
public:
enum {SHADOW_NONE, SHADOW_SIMPLE, SHADOW_REAL};
static int s_nShadowType;
public:
int GetActionType (void) {return m_Info.iActType;}
BOOL IsAttacking (void);
void GetActionStartPos (int& nWorldX, int& nWorldY) {nWorldX=m_Info.posActionBegin.x, nWorldY=m_Info.posActionBegin.y;}
void GetActionEndPos (int& nWorldX, int& nWorldY) {nWorldX=m_Info.posActionEnd.x, nWorldY=m_Info.posActionEnd.y;}
void GetPrePos (int& nPosX, int& nPosY);
void GetNextPos (int& nPosX, int& nPosY){nPosX = m_Info.posNext.x;nPosY = m_Info.posNext.y;};
int GetDir (CMyPos posTarget) const;
int GetDir (CRole* pTarget) const;
//------------- status -------------
public:
void SetStatus (__int64 dwStatus);
void ClrStatus (__int64 dwStatus);
__int64 GetStatus (void) {return m_dwStatus;}
BOOL TestStatus (__int64 dwStatus);
protected:
__int64 m_dwStatus;
//------------- ani effects -------------
public:
BOOL AddAniEffectEx (const char* pszEffectTitle,
int nTimes=1,
DWORD dwInterval=50,
int nShowWay=_SHOWWAY_NORMAL,
DWORD dwLoopInterval=0,
int nOffsetX = 0,
int nOffsetY = 0,
int nExigence = 0,
DWORD dwDelay = 0);
BOOL AddAniEffect (const char* pszEffect);
void ClrAniEffect (const char* pszEffect=NULL);
void ShowAniEffect (int nPosX, int nPosY);
void ProcessAniEffect();
BOOL TestAniEffect(const char* pszEffect);
private:
DEQUE_EFFECT m_dequeAniEffect;
//------------- command -------------
public:
virtual DWORD SetCommand (CCommand* pCommand);
virtual BOOL ProcessCommand (void);
void InitCommand (void);
CCommand* GetCommand (void) {return &(m_Info.cmdProc);}
int GetCommandType(void);
BOOL GetCommandFlag(void){return m_Info.cmdProc.bData;}
int GetLastCommand(void) {return m_Info.cmdProc.iType;}
int GetCommandStatus(void) {return m_Info.cmdProc.iStatus;}
//------------- info -------------
public:
BOOL IsNpc(void) {return GetID() <= _IDMAX_NPC;}
BOOL IsPlayer(void) {return (GetID() >= PLAYER_ID_FIRST && GetID() <= PLAYER_ID_LAST);}
// BOOL IsMonster(void) {return (GetID() >= MONSTERID_FIRST && GetID() <= MONSTERID_LAST);}
//ACTION创建的MONSTER也算是MONSTER --2005 6- 13 --XUELIANG
BOOL IsMonster(void) {return (GetID() >= MONSTERID_FIRST && GetID() <= PETID_LAST);}
BOOL IsGuard(void);
BOOL IsPet(void) {return (GetID() >= CALLPETID_FIRST && GetID() <= CALLPETID_LAST);}
BOOL IsMyPet(void);
void SetID (OBJID id) {m_Info.id =id;}
OBJID GetID (void) const {return m_Info.id;}
void SetLook (USHORT usLook);
USHORT GetLook (void) const {return m_Info.usLook;}
void SetHair (USHORT usHair);
USHORT GetHair (void) const {return m_Info.usHair;}
void SetFace (USHORT usFace);
USHORT GetFace (void) const {return m_Info.usFace;}
void SetPose (USHORT usPose) {m_Info.usPose=usPose;}
USHORT GetPose (void) const {return m_Info.usPose;}
void SetDir (int nDir);
int GetDir (void) const {return m_Info.iDirection;}
const char* GetName (void) const {return m_Info.szName;}
void SetName (const char* pszName);
DWORD GetMonsterTypeId(void) {return m_Info.idMonsterType;}
void SetMonsterTypeId(DWORD idType) {m_Info.idMonsterType = idType;}
int GetAddSize (void) const {return m_Info.iAddSize;}
void SetAddSize (int nSize) {m_Info.iAddSize=nSize;}
int GetZoomPercent (void) const {return m_Info.iZoomPercent;}
void SetZoomPercent (int nPercent) {m_Info.iZoomPercent=nPercent;}
void AddFStr(char* pszStr, int nMaxHeight=64, DWORD dwColor=0x00ffffff, int nStepHeight = 3, int nDelayTime=0);
void AddZoomNum (int nNum, DWORD dwColor, DWORD dwDelay, int nRandOffset = 0);
//int GetType();
void SetActionCmd (int nAction, int nDir=-1, DWORD dwType=0, BOOL bData = false);
void SetIntoneCmd (int nAction, int nDir=-1, DWORD dwType=0, BOOL bData = false);
void Transform(int nLook);
void SetWorldPos(CMyPos posWorld){m_Info.posWorld = posWorld;}
int GetFrameIndex(){return m_Info.iActFrameIndex;}
void ShootArrow(OBJID idTarget, int nHpLose);
int GetSex(){return m_Info.nSex;}
void SetSex(int nSex){m_Info.nSex = nSex;}
int GetRace(){return m_Info.nRace;}
void SetRace(int nRace){m_Info.nRace = nRace;}
void AllotRes();
int GetViewType(){return m_nViewType;}
static int GetIDType(OBJID id);
int GetRoleType(){return m_nRoleType;}
void SetRoleType(int nRoleType){m_nRoleType = nRoleType;}
void SetRoleAttribute(DWORD dwAttribute){m_dwRoleAttribute = dwAttribute;}
DWORD GetRoleAttribute(){return m_dwRoleAttribute;}
void SetFlyOffset(int nOffset);
int GetFlyOffset();
void SetFlyOffsetGoal(int nOffset);
int GetFlyOffsetGoal();
void FlashLastAttackTime(){m_tmLastAtk = ::TimeGet();}
BOOL IsHypersensitive();
void AddStep(CMyPos posCell);
protected:
CRoleInfo m_Info;
int m_nType;
int m_nViewType;
int m_nRoleType;
DWORD m_dwRoleAttribute;
DWORD m_tmDisappear;
DWORD m_tmLastAtk;
LIST_DIR m_lstStepDir;
int m_nWhichLeg;
CMyPos m_posCellOffset;
public:
void SetSpriteEffect( UCHAR ucSprite );
IRoleView* m_pIRoleView;
CSayHello m_objSayHello;
CFloatingStr m_objFStr;
CGame3DEffectEx m_objEffect;
CZoomNum m_objZoomNum;
public:
typedef struct
{
int nAction;
DWORD dwFrameInterval;
char szEffect[128];
char cDir;
std::deque<char> setStep;
}KongfuAction;
std::deque<KongfuAction> m_setKongfu;
BOOL LoadKongfu(const char* pszFileName);
public:
DWORD m_dwDisappear;
DWORD m_dwDisappearLast;
void Disappear(DWORD dwLast);
public:
static float s_fBaseScale;
std::vector<CCommand*> m_setCmd;
std::vector<int> m_setLife;
std::deque<BeAttackCmdInfo*> m_setBeAttackCmdInfo;
OBJID m_idLocker;
protected:
DWORD m_dwSpeedRate;
protected:
DWORD m_dwCommandIndex;
public:
void SetSpeedRate(int nSpeedRate){m_dwSpeedRate = nSpeedRate;}
void AddBeAttackCommandInfo(OBJID idSender, int nSenderCommandIndex, int nAction, int nFrameIndex, int nLife, DWORD dwColor);
void PerformBeAttackCmd(BeAttackCmdInfo* pInfo);
DWORD GetSpeedRate(){return m_dwSpeedRate;}
//---------------for mapobj----------------
public:
virtual int GetObjType() {return m_nType;}
virtual BOOL IsFocus() {return false;}
virtual void GetWorldPos(CMyPos& posWorld){posWorld = m_Info.posWorld;}
virtual void GetPos(CMyPos& posCell) {posCell = m_Info.posMap;}
virtual void SetPos(CMyPos posCell) {SetPos(posCell.x, posCell.y);}
virtual void GetBase(CMySize& infoSize) {infoSize.iWidth = 1; infoSize.iHeight = 1;}
virtual void SetBase(CMySize& infoSize) {m_Info.sizeBase = infoSize;}
//---------------for mapobj----------------
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -