📄 gameobjectsprite.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 + -