📄 cgraph.h
字号:
//数据与图形的接口类
//作者:吴振华(kylinx)(中国科大01级11系)
//E-mail:game-diy@163.com
//Created 2003/6/23 by Kylinx
//第一次修改于2003/6/28 by Kylinx
//内容:新增加类CRenderRole,以适应游戏的流水线渲染
//第二次修改于2003/7/1 by Kylinx
//内容:新增加两个类:CMapSurface,CRenderMap,全部改写旧类CRenderRole
//第三次修改于2003/7/14 by Kylinx
//内容:增加类CRenderRoleHeadPic
#ifndef LOA_GRAPH_H_
#define LOA_GRAPH_H_
#include<windows.h>
#include"CDataBase.h"
#include"dxlib\\ddutil.h"
#include"dxlib\\dsutil.h"
#include"CRender.h"
#include"klds.h"
class CFont;
class CRole;
class CLog;
class CMap;
struct STTileAni;
struct STRoleGraph
{
int ID; //唯一ID
CSurface*pSurfMove; //人物走动的表面
//4个方向,3帧
CSurface*pSurfHead; //头像表面
STRoleGraph()
{
pSurfMove=NULL;
pSurfHead=NULL;
}
~STRoleGraph();
};
struct STRenderRole
{
CRole *pRole;
STRoleGraph *pGraph;
STRenderRole()
{
pRole=NULL;
pGraph=NULL;
}
~STRenderRole();
};
class CRoleGraph
{
CLog *m_pLog;
BOOL m_bOwnLog;
IDataBase<STRoleGraph> *m_pdbGraph;
public:
CRoleGraph(CLog*pLog);
virtual ~CRoleGraph();
IDataBase<STRoleGraph>*GetRoleGraphDataBase(){return m_pdbGraph;}
BOOL GetRoleGraph(const CRole*pRole,STRoleGraph**pRoleGraph); //得到角色的图形信息
BOOL InitRoleData(CDisplay*pDisplay,const char*szFile); //初始化角色信息
void Release(); //释放
};
class CMapSurface
{
public:
CSurface *m_aSurface[11]; //11个表面
CSurface *m_pSurfShadow;
private:
CDisplay *m_pDisplay;
DWORD m_adwSurfaceWidth[11]; //表面宽
DWORD m_adwSurfaceHeight[11]; //表面高
DWORD m_adwSurfaceColorKey[11]; //关键色
DWORD m_dwTileAniCount; //AniTile的数量
STTileAni *m_aTileAni; //AniTile
CLog *m_pLog;
BOOL m_bSurfCreated; //表面是否已经创建
void SetSurfaceValue(); //初始化表面数据
BOOL InitSurface(const char*szAniFile); //初始化表面
public:
void ShowAniTileToAniSurface(); //显示ani到表面10
inline CSurface*GetShadowSurface(){return m_pSurfShadow;}
public:
BOOL Init(CDisplay*pDisplay,CLog*pLog);
CMapSurface();
virtual ~CMapSurface();
};
class CRenderMap:public CRenderTask
{
CDisplay *m_pDisplay;
CMapSurface *m_pMapSurf;
CSurface *m_pSurfGround; //地表表面
CMap *m_pMap;
BOOL m_bShowMap;
BOOL m_bSurfCreated;
public:
DWORD m_xStart;
DWORD m_yStart; //起始坐标
private:
void ShowGround();
void ShowObj();
public:
CRenderMap();
virtual ~CRenderMap();
void ShowMap(BOOL bShow);
BOOL InitRender(CDisplay*pDisplay,CMapSurface*pMapSurf,CMap*pMap);
protected:
virtual void LOA_RENDER_API Render(); //渲染
virtual BOOL LOA_RENDER_API IsRenderComplete(); //是否渲染结束
virtual void LOA_RENDER_API Release(); //释放派生类的资源
};
class CRenderRole:public CRenderTask //显示角色的任务
{
CDisplay *m_pDisplay;
CMap *m_pMap;
CMapSurface *m_pMapSurf;
CRenderMap *m_pRenderMap;
CLagQueue<STRenderRole*>*m_pRoleQueue; //遮挡的序列
public:
CRenderRole();
virtual ~CRenderRole();
BOOL InitRender(CDisplay*pDisplay,CMap*pMap,CMapSurface*pMapSurf,CRenderMap*pRenderMap,CLagQueue<STRenderRole*>*pRoleQueue);
protected:
virtual void LOA_RENDER_API Render(); //渲染
virtual BOOL LOA_RENDER_API IsRenderComplete(); //是否渲染结束
virtual void LOA_RENDER_API Release(); //释放派生类的资源
};
class CRenderRoleHeadPic:public CRenderTask
{
CDisplay *m_pDisplay;
STRenderRole *m_pRole;
int m_x;
int m_y;
BOOL m_bEnd;
public:
CRenderRoleHeadPic();
virtual ~CRenderRoleHeadPic();
void EndRender();
BOOL InitRender(int x,int y,CDisplay*pDisplay,STRenderRole*pRole);
protected:
virtual void LOA_RENDER_API Render(); //渲染
virtual BOOL LOA_RENDER_API IsRenderComplete(); //是否渲染结束
virtual void LOA_RENDER_API Release(); //释放派生类的资源
};
class CRenderRoleState:public CRenderTask
{
CDisplay *m_pDisplay;
STRenderRole *m_pRole;
CFont *m_pFont;
public:
BOOL InitRender(CDisplay*pDisplay,STRenderRole*pRole);
protected:
virtual void LOA_RENDER_API Render(); //渲染
virtual BOOL LOA_RENDER_API IsRenderComplete(); //是否渲染结束
virtual void LOA_RENDER_API Release(); //释放派生类的资源
};
class CRenderBattle:public CRenderTask
{
CDisplay *m_pDisplay;
public:
CRenderBattle();
virtual ~CRenderBattle();
protected:
virtual void LOA_RENDER_API Render(); //渲染
virtual BOOL LOA_RENDER_API IsRenderComplete(); //是否渲染结束
virtual void LOA_RENDER_API Release(); //释放派生类的资源
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -