📄 game_game.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 + -