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

📄 gameobjectparticle.cpp

📁 游戏框架
💻 CPP
字号:
// ***************************************************************
//  GameObjectParticle   version:  1.0
//  -------------------------------------------------------------
//	File Name:	GameObjectParticle.cpp
//	Created:	2007/07/19
//	Modified:	2007/07/19   11:38
//	Author:		Ben
//  Msn:		bwenpig@gmail.com
//  Email:		bwenpig@gmail.com
//	Description:
//
//	Purpose:	
//  -------------------------------------------------------------
//  license:
//
//  The contents of this file are subject to the Mozilla Public
//  License Version 1.1 (the "License"); you may not use this file
//  except in compliance with the License. You may obtain a copy
//  of the License at http://www.mozilla.org/MPL/ Software dis-
//  tributed under the License is distributed on an "AS IS" 
//  basis, WITHOUT WARRANTY OF ANY KIND, either express or im-
//  plied. See the License for the specific language governing
//  rights and limitations under the License.
//
//  The Initial Developer of the Original Code is Ben .
//  Copyright (C) 2007 - All Rights Reserved.
// ***************************************************************

#include "StdAfx.h"
#include ".\gameobjectparticle.h"

CGameObjectParticle::CGameObjectParticle(void)
{
	m_hgeSprite		= NULL;
	m_hgeParticle	= NULL;
	m_hgePsi		= NULL;
	m_Type			= 0;
}

CGameObjectParticle::~CGameObjectParticle(void)
{
	SafeDelete(m_hgeSprite);
	SafeDelete(m_hgeParticle);
}

//************************************
// <p>Description: Create		 粒子创建</p>
// <p>Parameters:  </p>
// <p>    LPCTSTR lpName		 对象名字</p>
// <p>    _SIZE siSize			 对象大小</p>
// <p>    HTEXTURE Texture		 纹理</p>
// <p>    _CString szPsiFileName	 粒子属性文件</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectParticle::Create(LPCTSTR lpName,_SIZE siSize,CResource* pResource,_CString szPsiFileName){
	__super::Create(lpName,siSize,Type_Particle);
	_SIZE size = pResource->GetSize();
	m_hgeSprite = new hgeSprite(pResource->GetTexture(),0,0,size.cx,size.cy);
	m_hgeParticle = new hgeParticleSystem(szPsiFileName,m_hgeSprite);
	Fire();
	return true;
}

//************************************
// <p>Description: Create		 粒子创建</p>
// <p>Parameters:  </p>
// <p>    LPCTSTR lpName		 对象名字</p>
// <p>    _SIZE siSize			 对象大小</p>
// <p>    HTEXTURE Texture		 纹理</p>
// <p>    DWORD dwType			 粒子类型</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectParticle::Create(LPCTSTR lpName,_SIZE siSize,CResource* pResource,DWORD dwType,_CString szPsiFileName){
	__super::Create(lpName,siSize,Type_Particle);
	
	int nLength,nHeight;							//纹理中的行数与列数
	_POINT poiPt;									//粒子纹理起始点
	_SIZE TextureSize = pResource->GetSize();		//纹理大小
	
	nLength = (int)(TextureSize.cx / siSize.cx);
	nHeight = (int)(TextureSize.cy / siSize.cy);

	poiPt.x = (dwType%nLength)*siSize.cx;
	poiPt.y  = (dwType/nHeight)*siSize.cy;

	m_hgeSprite = new hgeSprite(pResource->GetTexture(),poiPt.x,poiPt.y,siSize.cx,siSize.cy);
	m_hgeParticle = new hgeParticleSystem(szPsiFileName,m_hgeSprite);
	Fire();
	return true;
}

//************************************
// <p>Description: Render		渲染粒子</p>
// <p>Parameters:  </p>
// <p>    WPARAM wParam			Update时间</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectParticle::Render(WPARAM wParam/* =NULL */){
	m_hgeParticle->Update(*((float*)wParam));
	m_hgeParticle->Render();
	return;
}
                                                             

//************************************
// <p>Description: Fire			粒子开始</p>
// <p>Parameters:  </p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectParticle::Fire(){
	m_hgeParticle->Fire();
	return;
}


//************************************
// <p>Description: FireAt		粒子从某点开始</p>
// <p>Parameters:  </p>
// <p>    _POINT poiFirePoint	粒子从该点开始</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectParticle::FireAt(_POINT poiFirePoint){
	m_hgeParticle->FireAt(poiFirePoint.x,poiFirePoint.y);
	return;
}


//************************************
// <p>Description: Stop			粒子停止</p>
// <p>Parameters:  </p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectParticle::Stop(){
	m_hgeParticle->Stop();
	return;
}


//************************************
// <p>Description: GetAge		返回粒子生命值</p>
// <p>Parameters:  </p>
//
// <p>Returns:   int</p>
//************************************
int CGameObjectParticle::GetAge(){
	return (int)m_hgeParticle->GetAge();
}


//************************************
// <p>Description: GetParticlesAlive	返回粒子生还数目</p>
// <p>Parameters:  </p>
//
// <p>Returns:   int</p>
//************************************
int CGameObjectParticle::GetParticlesAlive(){
	return m_hgeParticle->GetParticlesAlive();
}

//************************************
// <p>Description: GetParticleInfo		返回粒子属性指针</p>
// <p>Parameters:  </p>
//
// <p>Returns:   hgeParticleSystemInfo*</p>
//************************************
hgeParticleSystemInfo* CGameObjectParticle::GetParticleInfo(){
	return &(m_hgeParticle->info);
}

//************************************
// <p>Description: QueryInterface		查询接口</p>
// <p>Parameters:  </p>
// <p>    const IID & Guid				接口GUID</p>
// <p>    DWORD dwQueryVer				接口版本</p>
//
// <p>Returns:   void*</p>
//************************************
void* CGameObjectParticle::QueryInterface(const IID & Guid, DWORD dwQueryVer){
	QUERYINTERFACE(IGameObjectParticle,Guid,dwQueryVer);
	QUERYINTERFACE(IGameObject,Guid,dwQueryVer);
	QUERYINTERFACE(IBaseObject,Guid,dwQueryVer);
	QUERYINTERFACE_IUNKNOWNEX(IGameObjectParticle,Guid,dwQueryVer);
	return NULL;
}

//************************************
// <p>Description: =操作重载</p>
// <p>Parameters:  </p>
// <p>    const CGameObjectParticle & GameObject</p>
//
// <p>Returns:   CGameObjectParticle&</p>
//************************************
CGameObjectParticle& CGameObjectParticle::operator=(CGameObjectParticle& GameObject){
	CGameObject*	pOtherBaseClass = static_cast<CGameObject *>(&GameObject);
	CGameObject*	pMySelfBaseClass = static_cast<CGameObject *>(this);
	*pMySelfBaseClass = *pOtherBaseClass;

	m_Type			= GameObject.m_Type;
	if(m_hgeSprite)
		SafeDelete(m_hgeSprite);
	if(m_hgeParticle)
		SafeDelete(m_hgeParticle);

	return *this;
}

⌨️ 快捷键说明

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