📄 grole.h
字号:
//////////////////////////////////////////////////////////////////////
// GRole.h: interface for the CGRole class.
// RPGDemo框架程序 角色类
// written by 萧萧落木(Roc.j.Wood)
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GROLE_H__84448672_C1FC_446F_AA80_8BB608118659__INCLUDED_)
#define AFX_GROLE_H__84448672_C1FC_446F_AA80_8BB608118659__INCLUDED_
#include "RPGGame.h"
class CGScene;
enum ROLESTATUS{ //角色状态
ROLESTAT_NONE = 0,
ROLESTAT_STAND,
ROLESTAT_WALKING,
ROLESTAT_WALKING_TARGET,
};
enum ROLEFLAG{ //角色类型标识
ROLEFLAG_UNKNOWN=0, //未知类型
ROLEFLAG_LEADER, //主控主角
ROLEFLAG_FWLEADER, //跟随主角
ROLEFLAG_NPC, //普通对话NPC
ROLEFLAG_SELLER, //可买卖的NPC,
ROLEFLAG_ENEMY, //敌人
ROLEFLAG_BOSS, //BOSS
ROLEFLAG_SUPERBOSS //超级BOSS
};
class CGRole //角色控制类
{
public:
CGRole(CGScene *pScene);
virtual ~CGRole();
////////////////////////// CGRole接口部分 /////////////////////////////
public:
HRESULT LoadRole(LPCTSTR szFileName); //装载角色设定文件
HRESULT RenderRole(); //渲染角色
void AIThinking(); //分时AI思考
void FinalClearup(); //结束清扫
BOOL CheckMouseHit(LONG lX,LONG lY) const; //检测鼠标点选
//***浪人修改*/
HRESULT RenderCombatRole(LONG lX,LONG lY,POINT MousePos,BOOL Anim=FALSE); //绘制角色战斗图像
////////////////////////// 角色状态控制 ///////////////////////////////
void SetMapPos(int mx, int my); //设置角色的地图坐标
void SetDirection(int newdir); //设置角色方向
void GetMapPos(int &mx, int &my) const { mx=XMPos;my=YMPos; }
SHORT GetLevel() const { return Level; } //检测角色的层次信息
SHORT GetDirection() const { return Direction; }
ROLESTATUS GetStatus() const { return Status; } //获取和设置角色状态
void SetStatus(ROLESTATUS newstatus) { Status=newstatus; }
ROLEFLAG GetFlag() const { return Flag; } //获取和设置角色类型标示
void SetFlag(ROLEFLAG newFlag) { Flag=newFlag; }
const LPCTSTR GetRoleName() const { return szName; }
const LPCTSTR GetScriptFileName() const { return ScriptFile; }
LONG GetHP() const { return HP; }
LONG GetMP() const { return MP; }
void AddHP(LONG x) { HP+=x;if(HP>HP_MAX) HP=HP_MAX; }
void DecHP(LONG x) {HP-=x;if(HP<0) HP = 0;}
void AddMP(LONG x) { MP+=x;if(MP>MP_MAX) MP=MP_MAX; }
LONG GetHP_MAX() const { return HP_MAX; }
LONG GetMP_MAX() const { return MP_MAX; }
LONG GetEAP() const { return EAP; }
LONG GetEDP() const { return EDP; }
void AddEAP(LONG x) { EAP=x+AP; }
void AddEDP(LONG x) { EDP=x+DP; }
///////////////////////////////////////////////////////////////////////
protected:
HRESULT LoadGraph(LPCTSTR szFileName); //装载图像
SHORT DecideMoveDirection(int x1, int y1, int x2, int y2) const; //决定运动方向
void RoleWalkOneStep(); //角色行走一步
void CheckInput(); //主角输入控制
private:
CGScene *m_pScene; //角色对应的场景
char szName[16]; //角色姓名
char ScriptFile[32]; //脚本文件
ROLEFLAG Flag; //角色类型标示
ROLESTATUS Status; //角色状态
LONG HP; //体力
LONG HP_MAX;
LONG MP; //魔法
LONG MP_MAX;
LONG AP; //攻击力
LONG DP; //防御力
LONG DEX; //灵敏
LONG EAP; //有效攻击力
LONG EDP; //有效防御力
int XMPos; //相对于地图的坐标X(以关键点为参考)
int YMPos; //相对于地图的坐标Y(以关键点为参考)
SHORT Level; //角色层次信息
CGAFDDrawSurface m_gGraph; //精灵图像图层表面
LONG CellWidth; //精灵图片中分割的每块宽度
LONG CellHeight; //精灵图片中分割的每块高度
SHORT XKPos; //精灵图片中每块关键点坐标X
SHORT YKPos; //精灵图片中每块关键点坐标Y
RECT InsideRECT; //用于检测碰撞的内部矩形框
SHORT Direction; //角度0-7 向下为0 顺时针递增
SHORT CurrentFrame; //统一帧计数
SHORT TempFrame; //临时
SHORT FrameCount; //总帧数
LONG MoveDelay;
LONG MoveSwapFrameSpeed;
LONG MoveSpeed;
SHORT MoveGrpahLines[8];
SHORT FightFrames; //战斗帧数
SHORT FightGrpahLine; //战斗分解帧在图像中的行数
DWORD ticktimer; //计时器
};
typedef CGRole *LPCGRole;
#endif // !defined(AFX_GROLE_H__84448672_C1FC_446F_AA80_8BB608118659__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -