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

📄 gameobjectsprite.cpp

📁 游戏框架
💻 CPP
字号:
// ***************************************************************
//  GameObjectSprite   version:  1.0
//  -------------------------------------------------------------
//	File Name:	GameObjectSprite.cpp
//	Created:	2007/07/18
//	Modified:	2007/07/18   15:50
//	Author:		William.Liang
//  Msn:		lwq49@msn.com
//  Email:		lwq49@21cn.com, lwq49@msn.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 William.Liang .
//  Copyright (C) 2007 - All Rights Reserved.
// ***************************************************************
#include "StdAfx.h"
#include ".\gameobjectsprite.h"

//************************************
// <p>Description: 构造函数</p>
//************************************
CGameObjectSprite::CGameObjectSprite(void)
{
	m_hgeSprite = NULL;
	ZeroMemory(&m_rcTextureSize, sizeof(m_rcTextureSize));
}

//************************************
// <p>Description: 析构函数</p>
//************************************
CGameObjectSprite::~CGameObjectSprite(void)
{
	SafeDelete(m_hgeSprite);
}

//************************************
// <p>Description: 精灵创建</p>
// <p>Parameters:  </p>
// <p>    LPCTSTR lpName</p>
// <p>    _SIZE siSize</p>
// <p>    CResource* pResource</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObjectSprite::Create(LPCTSTR lpName, _SIZE siSize, CResource* pResource){
	__super::Create(lpName, siSize, Type_Sprite);
	m_hgeSprite = new hgeSprite(pResource->GetTexture(), (float)0, (float)0, (float)siSize.cx, (float)siSize.cy);
	m_pResource = pResource;

	m_rcTextureSize.left = m_rcTextureSize.top = 0;
	m_rcTextureSize.right = siSize.cx;
	m_rcTextureSize.bottom = siSize.cy;

	return m_hgeSprite!=NULL;
}

//************************************
// <p>Description: 精灵创建 Randy 8月15日</p>
// <p>Parameters:  </p>
// <p>    LPCTSTR lpName</p>
// <p>    _RECT rcRes</p>
// <p>    CResource * pResource</p>
//
// <p>Returns:   </p>
//************************************
bool CGameObjectSprite::Create(LPCTSTR lpName, _RECT rcRes, CResource* pResource){
	_SIZE siSize;
	siSize.cx=rcRes.right-rcRes.left;
	siSize.cy=rcRes.bottom-rcRes.top;
	__super::Create(lpName, siSize, Type_Sprite);
	m_hgeSprite = new hgeSprite(pResource->GetTexture(), (float)rcRes.left, (float)rcRes.top, (float)siSize.cx, (float)siSize.cy);

	m_rcTextureSize=rcRes;

	return m_hgeSprite!=NULL;
}

//************************************
// <p>Description: 精灵渲染</p>
// <p>Parameters:  </p>
// <p>    WPARAM wParam</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectSprite::Render(WPARAM wParam){
	if(m_hgeSprite)
		m_hgeSprite->RenderEx((float)m_BasalInfo.ScreenPos.x+m_BasalInfo.AnchorPos.x, (float)m_BasalInfo.ScreenPos.y+m_BasalInfo.AnchorPos.y, (float)m_GameBasalInfo.Angle, (float)m_GameBasalInfo.Scaling.cx, (float)m_GameBasalInfo.Scaling.cy);
}

//************************************
// <p>Description: 设置中心点</p>
// <p>Parameters:  </p>
// <p>    _POINT piPoint</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectSprite::SetAnchorPosition(_POINT piPoint){
	__super::SetAnchorPosition(piPoint);

	m_hgeSprite->SetHotSpot(m_BasalInfo.AnchorPos.x, m_BasalInfo.AnchorPos.y);
}

//************************************
// <p>Description: 设置中心点</p>
// <p>Parameters:  </p>
// <p>    _POINT piPoint</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectSprite::SetAnchorPositionOffset(_POINT piPoint){
	__super::SetAnchorPositionOffset(piPoint);

	m_hgeSprite->SetHotSpot(m_BasalInfo.AnchorPos.x, m_BasalInfo.AnchorPos.y);
}

//************************************
// <p>Description: 设置镜像</p>
// <p>Parameters:  </p>
// <p>    bool bX</p>
// <p>    bool bY</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectSprite::SetFlip(bool bX, bool bY){
	m_hgeSprite->SetFlip(bX, bY);
}

//************************************
// <p>Description: 设置纹理大小</p>
// <p>Parameters:  </p>
// <p>    _RECT rcSize</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectSprite::SetTextureSize(_RECT rcSize){
	m_rcTextureSize.left = rcSize.left;
	m_rcTextureSize.top = rcSize.top;
	m_rcTextureSize.right = rcSize.right;
	m_rcTextureSize.bottom = rcSize.bottom;

	m_hgeSprite->SetTextureRect(m_rcTextureSize.left, m_rcTextureSize.top, m_rcTextureSize.right-m_rcTextureSize.left, m_rcTextureSize.bottom-m_rcTextureSize.top);
}

//************************************
// <p>Description: 返回纹理大小</p>
// <p>Parameters:  </p>
//
// <p>Returns:   _RECT</p>
//************************************
_RECT CGameObjectSprite::GetTextureSize(){
	return m_rcTextureSize;
}

//************************************
// <p>Description: 设置颜色</p>
// <p>Parameters:  </p>
// <p>    DWORD dwColor</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObjectSprite::SetColor(DWORD dwColor){
	m_dwColor = dwColor;
	m_hgeSprite->SetColor(dwColor);
}

//************************************
// <p>Description: 返回颜色</p>
// <p>Parameters:  </p>
//
// <p>Returns:   DWORD</p>
//************************************
DWORD CGameObjectSprite::GetColor(){
	return m_dwColor;
}

//设置透明
void CGameObjectSprite::SetAlpha(WORD wAlpha){
	__super::SetAlpha(wAlpha);
	DWORD dwColor = m_hgeSprite->GetColor();
	//SETA(dwColor, wAlpha);
	dwColor = (((dwColor) & 0x00FFFFFF) + (DWORD(wAlpha)<<24));

	m_hgeSprite->SetColor(dwColor);
}

//设置透明
void CGameObjectSprite::SetAlphaOffset(WORD wAlpha){
	__super::SetAlphaOffset(wAlpha);
}

//设置绑定模式
void CGameObjectSprite::SetBlendMode(WORD wMode){
	m_hgeSprite->SetBlendMode(wMode);
}

//返回绑定模式
WORD CGameObjectSprite::GetBlendMode(){
	return m_hgeSprite->GetBlendMode();
}

//设置资源
CResource* CGameObjectSprite::GetResource(){
	return m_pResource;
}

//返回资源
void CGameObjectSprite::SetResource(CResource* pResource){
	m_hgeSprite->SetTexture(pResource->GetTexture());

	m_pResource = pResource;
}

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

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

	//删除旧指针
	if(m_hgeSprite)
		SafeDelete(m_hgeSprite);

	//重建hgeFont
	m_hgeSprite			= new hgeSprite(*GameObject.m_hgeSprite);
	m_dwColor			= GameObject.m_dwColor;
	m_rcTextureSize		= GameObject.m_rcTextureSize;
	return *this;
}

⌨️ 快捷键说明

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