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

📄 game_game.h

📁 我做的毕业设计
💻 H
字号:
#include "Game_User.h"
#pragma once
class CCamera;
class CSkyBox;
class CGInput;
class CTerrain;
class CFont;
class CSkinMesh;
class CBillBord;
class CSound;
class CCursor;
class CMesh;
class CPanel;
class Mesh;//蝴蝶类
class CParticleSystem;//粒子类
class CShadowVolume;//影子类
class CNPC;
class C2DUIManger;
class C3DUIManger;
class CSmallMap;
class CD3DSprite;

struct Npc_Attribute
{
	D3DXVECTOR3	m_vPos;	//位置
	float m_speed1;		//移动速度
	float m_speed2; 	//旋转速度
	float m_MAXHP;		//最大血量值
	float m_CURHP;		//当前血量值  
	float m_MAXMP;		//最大魔法值  
	float m_CURMP;		//当前魔法值 
	float m_fScale;		//缩放
	float n;		//人物旋转的倍数(PI)
};
class CGame
{
private:
	struct VERTEX_BOUNDINGBOX
	{
		FLOAT x,y,z;
		DWORD color;
	};
    #define	D3DFVF_CUSTOM_BOUNDINGBOX D3DFVF_XYZ|D3DFVF_DIFFUSE

	struct SHADOWVERTEX
		{
			FLOAT x,y,z,rhw;
			D3DCOLOR    color;			
		};
	#define D3DFVF_CUSTOM_SHADOWVERTEX D3DFVF_XYZRHW|D3DFVF_DIFFUSE
private:
	LPDIRECT3D9             m_pD3D;					//D3D
	LPDIRECT3DDEVICE9       m_pd3dDevice;			//D3D设备
	LPDIRECT3DVERTEXBUFFER9 m_pBigSquareVB;	        //顶点缓冲区
	D3DSURFACE_DESC         m_d3dsdBackBuffer;      
	LPDIRECT3DSURFACE9      m_pBackBuffer;
	CTerrain*				m_pTerrain;				//地图
	CSkyBox*				m_pSkyBox;				//天空盒
	CCamera*				m_pCamera;				//摄像机
	CGInput*				m_pInput;				//鼠标键盘
	CFont*					m_pFont;				//2D字体	
	CSkinMesh*				m_pRole;				//主角
	CSkinMesh*				m_pEnemy;				//怪物1
	CSkinMesh*				m_pEnemy1;				//怪物2
	CSkinMesh*				m_pEnemy2;				//怪物3
	CSkinMesh*				m_pEnemy3;				//怪物4
	CSkinMesh*				m_pNpc;					//NPC
	CSkinMesh*				m_pMagicZhen;			//魔法阵
	CMesh*					m_pTempler;				//宫殿
	CMesh*					m_pGlyph;				//雕像
	CMesh*					m_pTree1;				//树1
	CMesh*					m_pTree2;				//树2
	CMesh*					m_pTree3;				//树3
	CMesh*					m_pGrass;				//草
	CMesh*					m_pFire;				//火堆
	CMesh*					m_pCrystal;				//水晶
	CMesh*					m_pBone;				//死骨
	Mesh*                   m_pButterflyMesh1;      //蝴蝶1
	CParticleSystem*        m_pParticle;            //粒子
	CParticleSystem*		m_pMagicPoPo;			//主角技能
	CShadowVolume*          m_pShadowVolume;        //影子
	CSound*					m_pMP3;				    //音乐
	CCursor*				m_pCursor;				//鼠标
	CPanel*					m_pPanelRole;			//主角面板
	CPanel*					m_pPanelEnemy;			//npc面板
	CPanel*					m_pRoleHP;				//主角血条
	CPanel*					m_pRoleMP;				//主角魔法条
	CPanel*					m_pEnemyHP;				//npc血条
	CPanel*					m_pEnemyMP;				//npc魔法条
	CSmallMap*				m_pSmallMap;			//小地图的移动
	CPanel*					m_pMiNiMapBar;			//小地图框
	CPanel*					m_pJiNenglan;			//技能栏
	CPanel*					m_pGameLoadBG;			//LOGO画面
	CPanel*					m_pNpcBag;	
	C2DUIManger*			m_p2DUI;				//2DUI
	//C3DUIManger*			m_p3DUI;				//3DUI
	HWND					m_hWnd;					//窗口句柄
	int						m_nScreenHeight;		//屏幕高
	int						m_nScreenWidth;         //屏幕宽
	int						m_pNpcNum;				//NPC数量
	float					m_tFrameTime;			//经过时间
	float					m_CamToHero;		    //摄像机与人物距离
	float					m_CamToTer;				//摄象机到鼠标点击地点的距离
	bool					m_isAVI;				//判断是否显示AVI
	bool					m_isMouseDown;			//鼠标是否按下
	bool					m_IsWalk;				//判断人物行走
	bool					m_IsRun;				//判断人物跑动
	bool					m_isMoving;				//判断人物行动状态
	bool					m_IsAABB;				//判断是否显示AABB盒
	bool					m_isMP3;                //判断是否播放MP3
	bool                    m_bRenderVolume;        //判断是否显示阴影体
	D3DXVECTOR3				m_vPickRayOrig;			//光线原点
	D3DXVECTOR3				m_vPickRayDir;			//光线方向
	D3DXVECTOR3				m_RoleHeight;			//保存人物高度信息
	D3DXVECTOR3				m_IntersectPoint;		//存放世界坐标中的交点
	D3DXVECTOR3				m_temp;					//存储当前出队列的D3DXVECTOR3值
	queue<D3DXVECTOR3>		m_q1;					//用到拾取地型
	vector<CSkinMesh*>		m_v1;					//保存怪
	vector<CSkinMesh*>::iterator  m_v1iter;			//遍历

	vector<CNPC*>			m_presNpc;				//NPC的一个容器指针
	struct Npc_Attribute*	m_pattNPC;				//NPC属性结构指针
	int						m_i;
	bool					m_MagicAttack;
	D3DXVECTOR3				m_MagicPos;
public:	
	bool					m_iGameState;           //游戏状态
	bool					m_bBag;
public:
	CGame();
	virtual~CGame();

	bool FrameStart(float m_tFrameTime);
	bool InitD3D(HWND hWnd, UINT nHeight, UINT nWidth);
	bool InitGame(HWND hWnd, HINSTANCE hInst);
	bool SetLight();	
	bool Render();
	bool RenderText(float m_timeNow);
	bool ProcessCollision();
	bool PickSkinMesh(CSkinMesh *p_SkinMesh);
	bool PickTerrainMesh(CTerrain *p_CMesh);
	bool PickNodeMesh(CMesh *p_CMesh);
	bool Attack();
	bool Init(HWND hWnd, HINSTANCE hInst, UINT nHeight, UINT nWidth);
	bool GameLoop();
	bool IntersectTriangle( const D3DXVECTOR3& orig,const D3DXVECTOR3& dir, const D3DXVECTOR3& v0,
		const D3DXVECTOR3& v1, const D3DXVECTOR3& v2,FLOAT* t, FLOAT* u, FLOAT* v );
	
	LPDIRECT3DDEVICE9 GetD3DDevice(){return m_pd3dDevice;}
	D3DXVECTOR3 GetMouseWorldPos(const D3DXVECTOR3& vPickRayOrig, const D3DXVECTOR3& vPickRayDir, float t);
	HRESULT DrawShadow(IDirect3DDevice9* g_pd3dDevice);
	
	void SetMaterial();	
	LRESULT RenderLoad(float fState);
	void RenderAABB(LPDIRECT3DDEVICE9 pDevice,D3DXVECTOR3 *pVmin,D3DXVECTOR3 *pVmax);
	void InitRect(LPDIRECT3DDEVICE9 m_pd3dDevice);
	
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -