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

📄 headerin3d.cpp

📁 VC++ DEMO, used for the beginners and the amour
💻 CPP
字号:
// HeaderIn3D.cpp: implementation of the HeaderIn3D class.
//
//////////////////////////////////////////////////////////////////////
#include "../CGE_CORE/HEADERS.H"
#include "HeaderIn3D.h"

USING NAMESPACE CGE;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
BOOL Keyboard(UINT nScanCode,WPARAM wParam,LPARAM lParam)
{
	return theApp.LockKeyboard(nScanCode,wParam,lParam);
}

HeaderIn3D::HeaderIn3D()
{
	this->m_dyCamera = NULL;
	this->m_dyCardFont = NULL;
	this->m_dyConsole = NULL;
	this->m_dyMicrodot = NULL;
	this->m_dySampFont = NULL;
}

HeaderIn3D::~HeaderIn3D()
{
	SAFE_DELETE(m_dyCardFont);
	SAFE_DELETE(m_dyMicrodot);
	SAFE_DELETE(m_dyConsole);
	SAFE_DELETE(m_dyCamera);
}

BOOL HeaderIn3D::InitializeOnFirstTime()
{
	m_dyCamera = new MATRIX::CAMERA;
	m_dyCardFont = new FONT::CardFont;
	m_dySampFont = new FONT::EnFont;
	m_dyConsole = new INPUT::CONSOLE;
	m_dyMicrodot = new PARTICLE::MICRODOT;
	return TRUE;
}



BOOL HeaderIn3D::InitializeEntironment()
{
	m_dyMicrodot->SetMaxEmitInUse(1000);
	m_dyMicrodot->m_ParticlesCreatedPerSec = 150;
	m_dyMicrodot->m_fMinDieAge = 8.0f;
	m_dyMicrodot->m_fMaxDieAge = 8.0f;		
	m_dyMicrodot->m_fCreationVariance = 0.0f;
	m_dyMicrodot->m_bRecreateWhenDied = 1;
	m_dyMicrodot->SetCreationClr(1.0f,1.0f,1.0f,0.0f,0.0f,0.0f);
	m_dyMicrodot->SetDieClr(1.0f,1.0f,0.0f,1.0f,0.3f,0.0f);
	m_dyMicrodot->SetAlphaValues(1.0f,1.0f,1.0f,1.0f);
	m_dyMicrodot->SetEmitter(0,20,0,20,10,20);
	m_dyMicrodot->SetSpinSpeed(-D3DXToRadian(90),D3DXToRadian(90));
	m_dyMicrodot->SetEmissionDirection(D3DXVECTOR3(0,-1,0),D3DXVECTOR3(0.5f,0,0.5f));
	m_dyMicrodot->SetSizeValues(0.2f,0.2f,1.0f,1.0f);
	m_dyMicrodot->m_fMinEmitSpeed = 3.0f;
	m_dyMicrodot->m_fMaxEmitSpeed = 3.0f;
	m_dyMicrodot->m_Billboarding = 1;
	m_dyMicrodot->m_bParticlesLeaveSystem = TRUE;
	m_dyMicrodot->SetMicrodotTexture("Peach.jpg");
	m_dyCardFont->SetCardFile("FONT.JPG",512,512);


	HWND hWnd = D3DPARAMETER.hDeviceWindow;
	m_dyConsole->Create();
	m_dyConsole->CreateKeyboard();
	m_dyConsole->SetKeyboardBehavior((VOID*)hWnd,DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);
	m_dyConsole->SetKeyboardHotKey(INPUT::KeyboardKey(DIK_UP,2,0),INPUT::HotKey(Keyboard,2,DIK_UP));
	m_dyConsole->SetKeyboardHotKey(INPUT::KeyboardKey(DIK_DOWN,2,0),INPUT::HotKey(Keyboard,2,DIK_DOWN));
	m_dyConsole->SetKeyboardHotKey(INPUT::KeyboardKey(DIK_LEFT,2,0),INPUT::HotKey(Keyboard,2,DIK_LEFT));
	m_dyConsole->SetKeyboardHotKey(INPUT::KeyboardKey(DIK_RIGHT,2,0),INPUT::HotKey(Keyboard,2,DIK_RIGHT));
	m_dyCamera->MatrixLookAt(D3DXVECTOR3(0,0,-30),D3DXVECTOR3(0,0,1),D3DXVECTOR3(0,1,0));
	m_dySampFont->SetEnFont(DEVICE,"Arial",16,0,0,0);

	return TRUE;
}

BOOL HeaderIn3D::SetfreeEntironment()
{
	m_dyCardFont->SetfreeContext();
	m_dySampFont->SetfreeContext();
	m_dyMicrodot->SetfreeContext();
	return TRUE;
}

BOOL HeaderIn3D::AfreshEntironment()
{
	m_dyMicrodot->Create(DEVICE);
	m_dyCardFont->CreateCardFont(DEVICE,D3DCOLOR_RGBA(0,0,0,255));
	DEVICE->SetTransform(D3DTS_PROJECTION,&m_dyCamera->MatrixPerspectiveFovLH(D3DX_PI/4,
		(FLOAT)BackBufferWidth()/BackBufferHeight(),1.0f,100.0f));
	DEVICE->SetRenderState( D3DRS_ZENABLE, 2);
	DEVICE->SetRenderState( D3DRS_LIGHTING, FALSE);
	DEVICE->SetRenderState( D3DRS_CULLMODE,D3DCULL_NONE);
	DEVICE->SetTextureStageState(0,D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
	DEVICE->SetTextureStageState(0,D3DTSS_MINFILTER, D3DTEXF_LINEAR);
	DEVICE->SetTextureStageState(0,D3DTSS_MIPFILTER, D3DTEXF_LINEAR);
	m_dySampFont->CreateContext(DEVICE);
	return TRUE;
}

BOOL HeaderIn3D::CheckFrameInMove()
{
	m_dyConsole->UpdateKeyboard();
	m_dyMicrodot->UpdateSystem(0.05f);
	return TRUE;
}

LRESULT HeaderIn3D::DefineUserMsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	return Behavior::DefineUserMsgProc(hWnd,msg,wParam,lParam);
}

BOOL HeaderIn3D::DrawEntironment()
{
	DEVICE->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
		D3DCOLOR_COLORVALUE(0.0f, 0.0f, 0.0f, 1.0f), 1.0f, 0 );
	CardFontAnimate();
	DEVICE->SetTransform(D3DTS_VIEW,&m_dyCamera->MatrixLookAtLH());
	if ( SUCCEEDED(DEVICE->BeginScene()))
	{
		D3DXMATRIX mat;
		D3DXMatrixIdentity(&mat);

		mat._41 = 10.0f;
		mat._42 = 0.0f;
		mat._43 = 10.0f;

		DEVICE->SetTransform(D3DTS_WORLD,&mat);

		m_dyMicrodot->MicrodotInScene();	
		m_dyCardFont->CardInScene();
		m_dySampFont->BeginTextOut();
		m_dySampFont->Text2DOut("ShowMe:CoolMan",3,3,D3DCOLOR_RGBA(255,128,0,255));
		m_dySampFont->EndTextOut();
		DEVICE->EndScene();
	}
	DEVICE->Present(0,0,0,0);
	return TRUE;
}

BOOL HeaderIn3D::LockKeyboard(UINT nScanCode, WPARAM wParam, LPARAM lParam)
{
	switch(nScanCode)
	{
	case DIK_LEFT:
		m_dyCamera->MatrixRotationAxis(0.0f,D3DXToRadian(2));
		break;
	case DIK_RIGHT:
		m_dyCamera->MatrixRotationAxis(0.0f,-D3DXToRadian(2));
		break;
	case DIK_UP:
		m_dyCamera->MatrixTranslateXYZAxis(1.0f);
		break;
	case DIK_DOWN:
		m_dyCamera->MatrixTranslateXYZAxis(-1.0f);
		break;
	default: break;
	}
	return TRUE;
}

VOID HeaderIn3D::CardFontAnimate()
{
	m_dyCardFont->LockCardBuffer();
	LONG sx = 100, sy = 100;
	m_dyCardFont->SetOut2DCard(sx,sy+50,64,64,1);
	m_dyCardFont->SetCardOffSet(0,0);

	for(LONG i = 0; i < 4; ++i)
	{
	m_dyCardFont->Out2DCard(0,i,64,D3DCOLOR_RGBA(255,23,0,255));
	}
	m_dyCardFont->Out2DCard(0,4,50,D3DCOLOR_RGBA(255,233,0,255));
	m_dyCardFont->Out2DCard(0,5,50,D3DCOLOR_RGBA(255,233,0,255));

	m_dyCardFont->SetCardOffSet(64,0);
	sx += 96;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(0,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	sx += 50;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(1,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	sx += 50;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(2,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	sx += 50;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(3,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	sx += 50;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(4,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	sx += 50;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(5,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	sx += 50;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(6,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	sx += 50;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(7,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	sx += 50;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(8,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	sx += 50;
	m_dyCardFont->SetOut2DCard(sx,sy,32,32,1);
	for(i = 0; i < 16; ++i)
	{
	m_dyCardFont->Out2DCard(9,i,32,D3DCOLOR_RGBA(200,128,23,255));
	}
	m_dyCardFont->UnlockCardBuffer();
}

BOOL HeaderIn3D::CleanupOnLastTime()
{
	m_bActive = FALSE;
	m_bReady = FALSE;
	m_dyCardFont->SetfreeContext();
	m_dyMicrodot->SetfreeContext();
	return TRUE;
}

⌨️ 快捷键说明

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