⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgraph.h

📁 一个个人开发的rpg游戏<亚特兰蒂斯传奇>的源码
💻 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 + -