#include "dxstdafx.h"
#include "gamemanager.h"
#include "Ray.h"
//全局变量
CSoundManager* m_pSoundManager=NULL ;
CSound* g_sounds[15];
float WATERLEVER=100.0f;
CMeshNode* meshmoney=NULL;
CMeshNode* meshbox=NULL;
CGroup* staticRoot=NULL;
CGroup* roleRoot=NULL;
POINT pointmouse;
CTransform *g_Select=NULL;
CGameManager::CGameManager():m_pHero(NULL),m_IsShowText(FALSE),m_Counter(0),m_CoolDown1(0),m_CoolDown2(0)
{
m_GUIMgr=NULL;
m_pGraph = NULL;
m_pMediaControl = NULL;
m_pMediaPosition = NULL;
m_Map=2;
m_Trans=NULL;
}
CGameManager::~CGameManager(void)
{
SAFE_RELEASE(m_pMediaPosition);
SAFE_RELEASE(m_pMediaControl);
SAFE_RELEASE(m_pGraph);
CoUninitialize();
SAFE_DELETE(m_SceneMgr);
SAFE_DELETE(m_GUIMgr);
SAFE_RELEASE(m_pFont);
SAFE_RELEASE(m_pD3Ddevice);
}
void CGameManager::GameLogic(float elapsed)
{
// 处理键盘输入
++m_FrameStamp;
if (m_FrameStamp==1)
{
m_pMediaPosition->put_CurrentPosition(0);
_beginthread(PlayBackgroundMusic, 0, m_pMediaControl);
}
else
{
if (!IsPlaying())
{
m_pMediaPosition->put_CurrentPosition(0);
_beginthread(PlayBackgroundMusic, 0,m_pMediaControl);
}
}
_GetInput();
if (m_pSelectNPC==NULL)
{
g_Select->SetTransform(D3DXVECTOR3(10000.0f,10000.0f,10000.0f),D3DXVECTOR3(0.0f,0.0f,0.0f),D3DXVECTOR3(0.1f,0.1f,0.1f));
}
else
{
D3DXVECTOR3 tempos=m_pSelectNPC->GetPos();
tempos.y+=4.0f;
g_Select->SetTransform(tempos,D3DXVECTOR3(0.0f,0.0f,0.0f),D3DXVECTOR3(0.1f,0.1f,0.1f));
if (m_pSelectNPC->GetHP()<=0)
{
m_pSelectNPC=NULL;
}
}
m_SceneMgr->LogicFrame(m_pD3Ddevice,m_FrameStamp,elapsed,m_pHero->GetPos());
m_GUIMgr->Update(elapsed);
if(m_MouseClickPoint.x > -1)
{
_DoPicking();
}
if (m_pHero->GetHP()<=0)
{
m_pHero->SetDeath(elapsed);
m_Map=2;//切换到城市地图
m_pHero->SetHp(50);
DestroyGame();
}
if (m_CoolDown1)
{
if (m_GUIMgr!=NULL)
{
m_GUIMgr->m_MaskAttack2->setAlpha(m_CoolDown1/200.0f*255);
}
--m_CoolDown1;
}
if (m_CoolDown2)
{
if (m_GUIMgr!=NULL)
{
m_GUIMgr->m_MaskAttack3->setAlpha(m_CoolDown2/200.0f*255);
}
--m_CoolDown2;
}
if (m_SceneMgr==NULL)return;
if ( D3DXVec3Length(&(m_pHero->GetPos()-m_SceneMgr->GetTrans()->transpos))<3.0f)
{
m_Map=m_SceneMgr->GetTrans()->transMapIndex;
DestroyGame();
}
}
//创建场景
void CGameManager::CreateScene()
{
m_SceneMgr=new CSceneManager();
if (m_pHero==NULL)
{
m_pHero=new CHero(m_pD3Ddevice,_T( "英雄"));
}
else
{
m_pHero->Restart();
}
if (m_GUIMgr==NULL)
{
m_GUIMgr=new CGUIManager(m_pD3Ddevice);
m_GUIMgr->InitGUI();
}
m_GUIMgr->SetHero(m_pHero);
//背景图片的初始化
LPDIRECT3DTEXTURE9 loadingBack;
D3DXCreateTextureFromFileEx(m_pD3Ddevice,_T(".\\resource\\back1.bmp"),800.0f,600.0f,1,0,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,D3DX_FILTER_BOX,D3DX_DEFAULT,0xffffffff,NULL,NULL,&loadingBack);
RECT rect={0.0f,0.0f,800.0f,600.0f};
m_Loading=new CStatus(m_GUIMgr,loadingBack,rect,FALSE);
m_Loading->SetPosition(D3DXVECTOR2(0.0f,0.0f));
m_Loading->SetScale(1.0f,1.0f);
//进度条的初始化
LPDIRECT3DTEXTURE9 loadingbar;
D3DXCreateTextureFromFileEx(m_pD3Ddevice,_T(".\\resource\\Loadingbar.png"),563.0f,27.0f,1,0,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,D3DX_FILTER_BOX,D3DX_DEFAULT,0xffffffff,NULL,NULL,&loadingbar);
RECT rect2={0.0f,0.0f,563.0f,27.0f};
m_LoadingBar=new CGUIBar(m_GUIMgr,loadingbar,rect2,0.0f);
m_LoadingBar->SetPosition(D3DXVECTOR2(130.0f,530.0f));
m_LoadingBar->SetScale(1.0f,1.0f);
m_Loading->AddBar(m_LoadingBar);
m_Loading->SetHiden(FALSE);
staticRoot = new CGroup();
roleRoot = new CGroup();
Loading(50);
/***************************************************************************/
if (m_Map==1)
{
CreateScene1();
}
else if (m_Map==2)
{
CreateSecene2();
}
/*********************************************************************--------------------------------------------******/
m_SceneMgr->AddStaticSceneNode(staticRoot);
m_SceneMgr->AddRoleNode(roleRoot);
Loading(563);
SAFE_DELETE(m_Loading);
/***************************************************************************/
//声音的初始化
m_pSoundManager=new CSoundManager();
m_pSoundManager->Initialize(DXUTGetHWND(),DSSCL_PRIORITY);
m_pSoundManager->SetPrimaryBufferFormat( 2, 22050, 16 );
CSound* WaterSound=NULL;
CSound* StepSound=NULL;
CSound* niuSound=NULL;
CSound* UnReady=NULL;
CSound* full=NULL;
CSound* cannot=NULL;
CSound* maishenme=NULL;
CSound* hello=NULL;
CSound* money=NULL;
CSound* chiyao=NULL;
CSound* attacked=NULL;
CSound* gongji=NULL;
CSound* fangzhuangbei=NULL;
LoadSoundFile(_T(".\\music\\River_LakeStillA.wav"), &WaterSound);
LoadSoundFile(_T(".\\music\\脚步.wav"), &StepSound);
LoadSoundFile(_T(".\\music\\niu.wav"), &niuSound);
LoadSoundFile(_T(".\\music\\技能没有准备好.wav"), &UnReady);
LoadSoundFile(_T(".\\music\\包裹满了.wav"), &full);
LoadSoundFile(_T(".\\music\\不行.wav"), &cannot);
LoadSoundFile(_T(".\\music\\你要买什么.wav"), &maishenme);
LoadSoundFile(_T(".\\music\\欢迎你.wav"), &hello);
LoadSoundFile(_T(".\\music\\钱的声音.wav"), &money);
LoadSoundFile(_T(".\\music\\吃药的声音.wav"), &chiyao);
LoadSoundFile(_T(".\\music\\女受到攻击的声音.wav"), &attacked);
LoadSoundFile(_T(".\\music\\攻击.wav"), &gongji);
LoadSoundFile(_T(".\\music\\PickUpBag.wav"), &fangzhuangbei);
g_sounds[0]=WaterSound;
g_sounds[1]=StepSound;
g_sounds[2]=niuSound;
g_sounds[3]=UnReady;
g_sounds[4]=full;
g_sounds[5]=cannot;
g_sounds[6]=maishenme;
g_sounds[7]=hello;
g_sounds[8]=money;
g_sounds[9]=chiyao;
g_sounds[10]=attacked;
g_sounds[11]=gongji;
g_sounds[12]=fangzhuangbei;
/***************************************************************************/
//游戏数据清0
m_FrameStamp=0;
m_CoolDown1=0;
m_CoolDown2=0;
m_IsShowText=FALSE;
m_pSelectNPC=NULL;
isInitGame=TRUE;
}
//游戏渲染
void CGameManager::GameRender()
{
m_SceneMgr->RenderFrame(m_pD3Ddevice);
m_GUIMgr->RenderAllGUI();
RECT Rect;
Rect.left = 590;
Rect.top = 0;
Rect.right = 0;
Rect.bottom = 0;
CHAR temp[255];
sprintf(temp,"FPS:%f\n英雄坐标:%f\n%f\n%f",DXUTGetFPS(),m_pHero->GetPos().x,m_pHero->GetPos().y,m_pHero->GetPos().z);
WCHAR *fps=CUtilities::CreateWideStringFromCharString(temp);
m_pFont->DrawText(NULL, fps, -1, &Rect, DT_CALCRECT, 0);
m_pFont->DrawText(NULL, fps, -1, &Rect, DT_LEFT, 0xFFFFFFFF);
SAFE_DELETE(fps);
if (m_IsShowText)
{
RECT Rect;
Rect.left = 350;
Rect.top = 200;
Rect.right = 0;
Rect.bottom = 0;
m_pFont->DrawText(NULL, m_pText, -1, &Rect, DT_CALCRECT, 0);
m_pFont->DrawText(NULL, m_pText, -1, &Rect, DT_LEFT, 0xFFFFFFFF);
m_Counter++;
}
if (m_Counter>50)
{
m_IsShowText=FALSE;
}
}
// 消息处理函数
LRESULT CGameManager::HandleMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
m_GUIMgr->HandleMessages(hWnd,uMsg,wParam,lParam);
m_SceneMgr->HandleMessages(hWnd,uMsg,wParam,lParam);
pointmouse.x= LOWORD(lParam);
pointmouse.y= HIWORD(lParam);
if(uMsg == WM_LBUTTONDOWN&&!(m_GUIMgr->ShopIsOpen()))
{
m_MouseClickPoint.x = LOWORD(lParam);
m_MouseClickPoint.y = HIWORD(lParam);
}
if (uMsg==WM_KEYUP&&wParam>='1'&&wParam<='9')
{
if (NULL==m_pSelectNPC)
{
m_GUIMgr->SetText("没有攻击目标");
return S_OK;
}
else
{
switch(wParam)
{
case '1':
if (m_pSelectNPC->GetHP()<=0)
{
m_GUIMgr->SetText("没有攻击目标");
return S_OK;
}
else if (m_pSelectNPC->GetStyle()==1)
{
m_GUIMgr->SetText("不能攻击");
return S_OK;
}
if (ArroundNPC(m_pSelectNPC))
{
TurnToNPC(m_pSelectNPC);
switch(rand()%3)
{
case
没有合适的资源?快使用搜索试试~ 我知道了~
我写的一个direct3d demo
共112个文件
h:46个
cpp:45个
user:6个
4星 · 超过85%的资源 需积分: 9 36 下载量 124 浏览量
2008-06-20
15:30:38
上传
评论
收藏 4.09MB RAR 举报
温馨提示
个人写的一个demo源代码 没有用引擎 是基于最基本的地direct3d的图形接口,有兴趣的就看看吧 顺便赚点积分 hoho~~~
资源推荐
资源详情
资源评论
收起资源包目录
我写的一个direct3d demo (112个子文件)
evilIsland.aps 76KB
gamemanager.cpp 43KB
SkinnedMesh.cpp 25KB
SkinMeshEX.cpp 24KB
GUIManager.cpp 22KB
SkinMesh.cpp 22KB
ParticleSystem.cpp 18KB
Terrain.cpp 12KB
Hero.cpp 11KB
evilisland.cpp 10KB
myGame.cpp 6KB
GUIFrameWindow.cpp 6KB
Npc.cpp 6KB
SceneManager.cpp 6KB
Base.cpp 5KB
SkyBox.cpp 5KB
Camera.cpp 4KB
Water.cpp 4KB
Grass.cpp 4KB
Frustum.cpp 4KB
BoundingBox.cpp 3KB
GameMenu.cpp 3KB
MeshNode.cpp 3KB
ItemManager.cpp 3KB
CullVisitor.cpp 3KB
BillBoard.cpp 2KB
GUIContainer.cpp 2KB
GUIWindow.cpp 2KB
Utilities.cpp 2KB
ParticleAffector.cpp 2KB
GUIIcon.cpp 2KB
Status.cpp 2KB
Group.cpp 2KB
Ray.cpp 2KB
CollisionVisitor.cpp 2KB
Helplogo.cpp 2KB
Transform.cpp 2KB
RenderNode.cpp 2KB
Role.cpp 1KB
Node.cpp 1KB
GUIBar.cpp 922B
DropObjection.cpp 715B
Spell.cpp 650B
GUIWnd.cpp 558B
NodeVisitor.cpp 136B
Renderable.cpp 131B
tinyxml.h 63KB
tinystr.h 9KB
SkinnedMesh.h 5KB
SkinMesh.h 5KB
Hero.h 5KB
ParticleSystem.h 4KB
Role.h 4KB
SceneManager.h 4KB
GUIWindow.h 4KB
GUIManager.h 4KB
BoundingBox.h 3KB
GameManager.h 3KB
Terrain.h 3KB
Npc.h 3KB
Node.h 2KB
Camera.h 2KB
GUIIcon.h 2KB
BillBoard.h 2KB
GUIFrameWindow.h 2KB
structures.h 2KB
GUIContainer.h 2KB
GUIWnd.h 2KB
Frustum.h 2KB
ParticleAffector.h 1KB
Water.h 1KB
Grass.h 1KB
CullVisitor.h 1KB
Transform.h 1KB
NodeVisitor.h 1KB
Status.h 1KB
Base.h 1KB
MeshNode.h 1KB
CollisionVisitor.h 1KB
Spell.h 1KB
RenderNode.h 857B
Group.h 811B
DropObjection.h 790B
SkyBox.h 750B
GUIBar.h 717B
Ray.h 689B
GameMenu.h 639B
ItemManager.h 589B
Utilities.h 587B
resource.h 498B
Helplogo.h 398B
Renderable.h 320B
evilIsland.jpg 3KB
evilIsland.manifest 683B
evilIsland.exe.manifest 578B
evilIsland_2005.ncb 9.85MB
evilIsland.pdb 3.67MB
evilIsland.rc 3KB
evilIsland_2005.sln 2KB
evilIsland_2003.sln 1KB
共 112 条
- 1
- 2
资源评论
- bloomxjb2012-04-03源代码编译需要配置开发环境。
- 缥缈的云2012-03-27源文件夹不全,缺commn文件夹中的内容:dxstdafx.cpp dxstdafx.h DXUT.cpp DXUT.h DXUTenum.cpp DXUTenum.h DXUTMesh.cpp DXUTMesh.h DXUTmisc.cpp DXUTmisc.h DXUTRes.cpp DXUTRes.h DXUTsound.h DXUTsound.cpp
zmtzren
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功