Open.cpp
资源名称:3DRPG.rar [点击查看]
上传用户:cjwanglu
上传日期:2013-07-10
资源大小:4744k
文件大小:11k
源码类别:
游戏
开发平台:
Visual C++
- #include "stdafx.h"
- #include "Open.h"
- COpen::COpen(HINSTANCE hinst,HWND hwnd)
- {
- hWnd=hwnd;
- hInst=hinst;
- m_pD3D=Direct3DCreate9(D3D_SDK_VERSION);
- if(m_pD3D==NULL)
- {
- E_FAIL;
- }
- D3DDISPLAYMODE d3ddm;
- m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&d3ddm);
- if(d3ddm.Format!=D3DFMT_UNKNOWN)
- {
- d3ddm.Width=800;
- d3ddm.Height=600;
- }
- m_nScreenWidth=d3ddm.Width;
- m_nScreenHeight=d3ddm.Height;
- D3DPRESENT_PARAMETERS d3dpp;
- ZeroMemory(&d3dpp,sizeof(d3dpp));
- d3dpp.Windowed=true;
- window=d3dpp.Windowed;
- d3dpp.BackBufferCount=1;
- d3dpp.BackBufferFormat=d3ddm.Format;
- d3dpp.BackBufferHeight=d3ddm.Height;
- d3dpp.BackBufferWidth=d3ddm.Width;
- d3dpp.hDeviceWindow=hWnd;
- d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
- d3dpp.FullScreen_RefreshRateInHz=D3DPRESENT_RATE_DEFAULT;
- d3dpp.PresentationInterval=D3DPRESENT_INTERVAL_ONE;
- m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&m_pD3DDevice);
- m_pD3DDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW);
- DirectInput8Create(hInst,DIRECTINPUT_VERSION,IID_IDirectInput8,(LPVOID*)&m_pInput,NULL);
- m_pInput->CreateDevice(GUID_SysMouse,&m_pMouseInput,NULL);
- m_pMouseInput->SetDataFormat(&c_dfDIMouse);
- m_pMouseInput->SetCooperativeLevel(hWnd,DISCL_NONEXCLUSIVE|DISCL_FOREGROUND);
- m_pMouseInput->Acquire();
- memset(&m_MouseState,0,sizeof(m_MouseState));
- memset(&m_MouseStateOld,0,sizeof(m_MouseStateOld));
- NIcon=2;
- IconVer=NIcon*4;
- TxOfIcon=NIcon*2;
- NumOfPos=new POS[NIcon];
- RECT rect1={165,100,214,42,};
- RECT rect2={435,100,214,42,};
- NumOfPos[0]=Calculate(rect1);
- NumOfPos[1]=Calculate(rect2);
- m_ArrayOfTx=new LPDIRECT3DTEXTURE9[TxOfIcon];
- mygod=new bool[NIcon];
- motherfuck=new bool[NIcon];
- ButtonPress=new bool[NIcon];//false表示没被按下,true表示已按下
- present=new bool[NIcon];
- m_pTx=new LPDIRECT3DTEXTURE9[NIcon];
- for(int i=0;i<NIcon;i++)
- {
- ButtonPress[i]=false;
- mygod[i]=false;
- motherfuck[i]=false;
- present[i]=false;
- }
- SetTexture();
- SetVertexBuffer();
- UpdateVertex();
- bOpen=true;
- //LPSTR pstr="NIMA.WAV";
- //m_pSound=new CSound(hWnd,pstr);
- //m_pSound->Play();
- m_pMusic=new CSound(hWnd);
- m_pMusic->Play(0,"./res/Midi_1.mid");
- m_pSound=new CSound(hWnd);
- }
- COpen::~COpen()
- {
- m_pMouseInput->Unacquire();
- m_pMouseInput->Release();
- m_pInput->Release();
- m_pTexture->Release();
- m_pBuffer->Release();
- m_pIconBuffer->Release();
- for(int i=0;i<TxOfIcon;i++)
- {
- m_ArrayOfTx[i]->Release();
- }
- DeleteObject(m_ArrayOfTx);
- m_pD3DDevice->Release();
- m_pD3D->Release();
- // delete m_pSound;
- delete m_pMusic;
- //delete m_pSound;
- }
- void COpen::OpenLoop()
- {
- MSG msg;
- BOOL bmessage;
- PeekMessage(&msg,NULL,0U,0U,PM_NOREMOVE);
- while((msg.message!=WM_QUIT)&(bOpen==true))//|(bOpen==true))
- {
- bmessage=PeekMessage(&msg,NULL,0U,0U,PM_REMOVE);
- if(bmessage)
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- else
- {
- RenderOpen();
- }
- }
- }
- void COpen::RenderOpen()
- {
- m_pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0F,0);
- m_pD3DDevice->BeginScene();
- //SetCamera3D();
- //Render3D();
- // GetMouse();
- SetCamera2D();
- Render2D();
- m_pD3DDevice->EndScene();
- m_pD3DDevice->Present(NULL,NULL,NULL,NULL);
- }
- void COpen::SetVertexBuffer()
- {
- m_pD3DDevice->CreateVertexBuffer(4*sizeof(VERTEX),0,OPEN_D3DFVF_VERTEXBUFFER,D3DPOOL_DEFAULT,&m_pBuffer,NULL);
- m_pD3DDevice->CreateVertexBuffer(IconVer*sizeof(VERTEX),0,OPEN_D3DFVF_VERTEXBUFFER,D3DPOOL_DEFAULT,&m_pIconBuffer,NULL);
- }
- void COpen::UpdateVertex()
- {
- VERTEX * pVertex;
- m_pBuffer->Lock(0,4*sizeof(VERTEX),(void **)&pVertex,0);
- pVertex[0].x=0.0f;//-m_nWidth/2;
- pVertex[0].y=600.0f;
- pVertex[0].z=0.0f;
- pVertex[1].x=800.0f;
- pVertex[1].y=600.0f;
- pVertex[1].z=0.0f;
- pVertex[2].x=0.0f;
- pVertex[2].y=0.0f;
- pVertex[2].z=0.0f;
- pVertex[3].x=800.0f;
- pVertex[3].y=0.0f;
- pVertex[3].z=0.0f;
- pVertex[0].tu=0.0f;
- pVertex[0].tv=0.0f;
- pVertex[1].tu=1.0f;
- pVertex[1].tv=0.0f;
- pVertex[2].tu=0.0f;
- pVertex[2].tv=1.0f;
- pVertex[3].tu=1.0f;
- pVertex[3].tv=1.0f;
- m_pBuffer->Unlock();
- pVertex=NULL;
- m_pIconBuffer->Lock(0,IconVer*sizeof(VERTEX),(void **)&pVertex,0);
- int k=0;
- for(int i=0;i<NIcon;i++)
- {
- pVertex[k].x=NumOfPos[i].ltx;
- pVertex[k].y=NumOfPos[i].lty;
- pVertex[k].z=0;
- pVertex[k+1].x=NumOfPos[i].rtx;
- pVertex[k+1].y=NumOfPos[i].rty;
- pVertex[k+1].z=0.0f;
- pVertex[k+2].x=NumOfPos[i].lbx;
- pVertex[k+2].y=NumOfPos[i].lby;
- pVertex[k+2].z=0.0f;
- pVertex[k+3].x=NumOfPos[i].rbx;
- pVertex[k+3].y=NumOfPos[i].rby;
- pVertex[k+3].z=0.0f;
- pVertex[k+0].tu=0.0f;
- pVertex[k+0].tv=0.0f;
- pVertex[k+0].tu1=0.0f;
- pVertex[k+0].tv1=0.0f;
- pVertex[k+1].tu=1.0f;
- pVertex[k+1].tv=0.0f;
- pVertex[k+1].tu1=1.0f;
- pVertex[k+1].tv1=0.0f;
- pVertex[k+2].tu=0.0f;
- pVertex[k+2].tv=1.0f;
- pVertex[k+2].tu1=0.0f;
- pVertex[k+2].tv1=1.0f;
- pVertex[k+3].tu=1.0f;
- pVertex[k+3].tv=1.0f;
- pVertex[k+3].tu1=1.0f;
- pVertex[k+3].tv1=1.0f;
- k+=4;
- }
- m_pIconBuffer->Unlock();
- }
- void COpen::SetTexture()
- {
- D3DXCreateTextureFromFileEx(m_pD3DDevice, "./res/open.jpg", 0, 0, 0, 0,
- D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT,
- D3DX_DEFAULT, D3DCOLOR_XRGB(0,0,0), NULL, NULL, &m_pTexture);
- D3DXCreateTextureFromFileEx(m_pD3DDevice, "./res/enter_1.bmp", 0, 0, 0, 0,
- D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT,
- D3DX_DEFAULT, D3DCOLOR_XRGB(0,0,0), NULL, NULL, &m_ArrayOfTx[0]);
- D3DXCreateTextureFromFileEx(m_pD3DDevice, "./res/enter_3.bmp", 0, 0, 0, 0,
- D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT,
- D3DX_DEFAULT, D3DCOLOR_XRGB(0,0,0), NULL, NULL, &m_ArrayOfTx[1]);//m_pIconTx
- D3DXCreateTextureFromFileEx(m_pD3DDevice, "./res/quit_1.bmp", 0, 0, 0, 0,
- D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT,
- D3DX_DEFAULT, D3DCOLOR_XRGB(0,0,0), NULL, NULL, &m_ArrayOfTx[2]);
- D3DXCreateTextureFromFileEx(m_pD3DDevice, "./res/quit_3.bmp", 0, 0, 0, 0,
- D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT,
- D3DX_DEFAULT, D3DCOLOR_XRGB(0,0,0), NULL, NULL, &m_ArrayOfTx[3]);
- D3DXCreateTextureFromFileEx(m_pD3DDevice, "./res/quit_2.bmp", 0, 0, 0, 0,
- D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT,
- D3DX_DEFAULT, D3DCOLOR_XRGB(0,0,0), NULL, NULL, &m_pTx[1]);
- D3DXCreateTextureFromFileEx(m_pD3DDevice, "./res/enter_2.bmp", 0, 0, 0, 0,
- D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT,
- D3DX_DEFAULT, D3DCOLOR_XRGB(0,0,0), NULL, NULL, &m_pTx[0]);
- }
- void COpen::SetCamera2D()
- {
- D3DXMATRIX matPers,matView;
- D3DXMatrixOrthoLH(&matPers,(float)m_nScreenWidth,(float)m_nScreenHeight,0.0f,1.0f);
- D3DXMatrixIdentity(&matView);
- m_pD3DDevice->SetTransform(D3DTS_PROJECTION,&matPers);
- m_pD3DDevice->SetTransform(D3DTS_WORLD,&matView);
- m_pD3DDevice->SetTransform(D3DTS_VIEW,&matView);
- m_pD3DDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_FALSE);
- m_pD3DDevice->SetRenderState(D3DRS_LIGHTING,FALSE);
- }
- void COpen::Render2D()
- {
- Translate(-400,+300);
- m_pD3DDevice->SetStreamSource(0,m_pBuffer,0,sizeof(VERTEX));
- m_pD3DDevice->SetFVF(OPEN_D3DFVF_VERTEXBUFFER);
- m_pD3DDevice->SetTexture(0,m_pTexture);
- m_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
- m_pD3DDevice->SetStreamSource(0,m_pIconBuffer,0,sizeof(VERTEX));
- m_pD3DDevice->SetFVF(OPEN_D3DFVF_VERTEXBUFFER);
- int k=0;int j=0;
- for(int i=0; i<NIcon;i++)
- {
- if(present[i]==true)
- {
- m_pD3DDevice->SetTexture(0,m_pTx[i]);//m_ArrayOfTx[k+1]
- m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1,D3DTA_TEXTURE);
- m_pD3DDevice->SetTexture(1,m_ArrayOfTx[k+1]);//m_ArrayOfTx[k+1]
- m_pD3DDevice->SetTextureStageState(1, D3DTSS_COLORARG1,D3DTA_CURRENT);
- m_pD3DDevice->SetTexture(2,m_ArrayOfTx[k]);
- m_pD3DDevice->SetTextureStageState(2, D3DTSS_COLORARG1,D3DTA_CURRENT);
- }
- else
- {
- if(ButtonPress[i]==false)
- {
- m_pD3DDevice->SetTexture(0,m_ArrayOfTx[k]);
- //m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
- m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1,D3DTA_TEXTURE);
- //m_pD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_DISABLE);
- m_pD3DDevice->SetTexture(1,m_ArrayOfTx[k+1]);//m_ArrayOfTx[k+1]
- //m_pD3DDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
- m_pD3DDevice->SetTextureStageState(1, D3DTSS_COLORARG1,D3DTA_CURRENT);
- //m_pD3DDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_DISABLE);
- }
- else
- {
- m_pD3DDevice->SetTexture(0,m_ArrayOfTx[k+1]);//m_ArrayOfTx[k+1]
- //m_pD3DDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
- m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1,D3DTA_TEXTURE);
- //m_pD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_DISABLE);
- m_pD3DDevice->SetTexture(1,m_ArrayOfTx[k]);
- //m_pD3DDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
- m_pD3DDevice->SetTextureStageState(1, D3DTSS_COLORARG1,D3DTA_CURRENT);
- //m_pD3DDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_DISABLE);
- }
- }
- m_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,j,2);
- k+=2;
- j+=4;
- }
- }
- void COpen::Translate(int x,int y)
- {
- D3DXMATRIX matMove;
- D3DXMatrixTranslation(&matMove, (float)x, -(float)y, 0.0f);
- m_pD3DDevice->SetTransform(D3DTS_WORLD, &matMove);
- }
- void COpen::Update()
- {
- memcpy(&m_MouseStateOld,&m_MouseState,sizeof(m_MouseState));
- if(DI_OK!=m_pMouseInput->GetDeviceState(sizeof(m_MouseState),&m_MouseState))
- {
- memset(&m_MouseState,0,sizeof(m_MouseState));
- m_pMouseInput->Acquire();
- }
- }
- void COpen::Control(bool * fuck)
- {
- GetCursorPos(&m_Point);
- float x;float y;
- //ScreenToClient(hWnd,&m_Point);
- x=(float)m_Point.x-5;
- y=(600)-(float)m_Point.y;
- for(int i=0;i<NIcon;i++)
- {
- if((x>=NumOfPos[i].ltx)&(x<=NumOfPos[i].rbx))
- {
- if((y>=NumOfPos[i].rby)&(y<=NumOfPos[i].lty))
- {
- if(0x80&m_MouseState.rgbButtons[0])
- { ButtonPress[i]=true;
- mygod[i]=true;
- present[i]=false;
- m_pSound->PlaySound("./res/sound_2.wav");
- //*fuck=false;
- }
- else
- {
- present[i]=true;
- ButtonPress[i]=false;
- if(motherfuck[i]==true)
- {fuck[i]=false;mygod[i]=false;present[i]=false;}
- if(mygod[i]==true)
- {
- motherfuck[i]=true;
- present[i]=false;
- }
- }
- }
- else
- {
- ButtonPress[i]=false;
- mygod[i]=false;
- motherfuck[i]=false;
- present[i]=false;
- }
- }
- else
- {
- ButtonPress[i]=false;
- mygod[i]=false;
- motherfuck[i]=false;
- present[i]=false;
- }
- }
- }
- POS COpen::Calculate(RECT rect)
- {
- POS a;
- a.ltx=rect.left; a.lty=rect.top; a.rtx=rect.left+rect.right; a.rty=rect.top;
- a.lbx=rect.left; a.lby=rect.top-rect.bottom; a.rbx=rect.left+rect.right; a.rby=rect.top-rect.bottom;
- return a;
- }