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

📄 gameobject.cpp

📁 游戏框架
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// <p>    WORD wZ</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObject::SetZOffset(WORD wZ){
	m_GameBasalInfo.Z += wZ;

	NotifiyChange();
}

//************************************
// <p>Description: 设置缩放</p>
// <p>Parameters:  </p>
// <p>    _SIZE siSize</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObject::SetScaling(_SIZE siSize){
	//siSize.cx = siSize.cx*m_BasalInfo.Size.cx;
	//siSize.cy = siSize.cy*m_BasalInfo.Size.cy;
	SetSize(_SIZE(siSize.cx*m_BasalInfo.Size.cx, siSize.cy*m_BasalInfo.Size.cy));

	m_GameBasalInfo.Scaling = siSize;
}

//************************************
// <p>Description: 设置缩放</p>
// <p>Parameters:  </p>
// <p>    _SIZE siSize</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObject::SetScalingOffset(_SIZE siSize){
	//siSize.cx = (siSize.cx+m_GameBasalInfo.Scaling.cx)*m_BasalInfo.Size.cx;
	//siSize.cy = (siSize.cy+m_GameBasalInfo.Scaling.cy)*m_BasalInfo.Size.cy;
	SetSize(_SIZE((siSize.cx+m_GameBasalInfo.Scaling.cx)*m_BasalInfo.Size.cx, (siSize.cy+m_GameBasalInfo.Scaling.cy)*m_BasalInfo.Size.cy));
	m_GameBasalInfo.Scaling = siSize;
}

//************************************
// <p>Description: 设置深度</p>
// <p>Parameters:  </p>
// <p>    DWORD dwDepth</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObject::SetDepth(DWORD dwDepth){
	m_BasalInfo.Depth = dwDepth;

	NotifiyChange();
}

//************************************
// <p>Description: 设置中心</p>
// <p>Parameters:  </p>
// <p>    _POINT piPoint</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObject::SetAnchorPosition(_POINT piPoint){
	m_BasalInfo.AnchorPos = piPoint;

	NotifiyChange();
}

//************************************
// <p>Description: 设置中心</p>
// <p>Parameters:  </p>
// <p>    _POINT piPoint</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObject::SetAnchorPositionOffset(_POINT piPoint){
	m_BasalInfo.AnchorPos.x += piPoint.x;
	m_BasalInfo.AnchorPos.y += piPoint.y;

	NotifiyChange();
}

//************************************
// <p>Description: 设置大小</p>
// <p>Parameters:  </p>
// <p>    _SIZE siSize</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObject::SetSize(_SIZE siSize){
	m_BasalInfo.Size = siSize;

	//设置比例
	m_GameBasalInfo.Scaling.cx = siSize.cx/m_BasalInfo.Size.cx;
	m_GameBasalInfo.Scaling.cy = siSize.cy/m_BasalInfo.Size.cy;

	m_GameBasalInfo.Region.right = m_GameBasalInfo.Region.left + siSize.cx;
	m_GameBasalInfo.Region.bottom = m_GameBasalInfo.Region.top + siSize.cy;

	NotifiyChange();
}

//************************************
// <p>Description: 返回角度</p>
//
// <p>Returns:   float</p>
//************************************
float CGameObject::GetAngle(){
	return m_GameBasalInfo.Angle*180.0f/M_PI;
}

//************************************
// <p>Description: 返回透明</p>
//
// <p>Returns:   WORD</p>
//************************************
WORD CGameObject::GetAlpha(){
	return m_GameBasalInfo.Alpha;
}

//************************************
// <p>Description: 返回Z空间</p>
//
// <p>Returns:   WORD</p>
//************************************
WORD CGameObject::GetZ(){
	return m_GameBasalInfo.Z;
}

//************************************
// <p>Description: 返回缩放</p>
//
// <p>Returns:   _SIZE</p>
//************************************
_SIZE CGameObject::GetScaling(){
	return m_GameBasalInfo.Scaling;
}

//************************************
// <p>Description: 返回深度</p>
//
// <p>Returns:   DWORD</p>
//************************************
DWORD CGameObject::GetDepth(){
	return m_BasalInfo.Depth;
}

//************************************
// <p>Description: 返回大小</p>
//
// <p>Returns:   _SIZE</p>
//************************************
_SIZE CGameObject::GetSize(){
	return m_BasalInfo.Size;
}

//************************************
// <p>Description: 返回区域</p>
//
// <p>Returns:   _RECT</p>
//************************************
_RECT CGameObject::GetRegion(){
	return m_GameBasalInfo.Region;
}

//************************************
// <p>Description: 返回基本信息</p>
//
// <p>Returns:   BASALINFO&</p>
//************************************
BASALINFO& CGameObject::GetBasalInfo(){
	return m_BasalInfo;
}

//************************************
// <p>Description: 返回基本信息</p>
//
// <p>Returns:   GAMEBASALINFO&</p>
//************************************
GAMEBASALINFO& CGameObject::GetGameBasalInfo(){
	return m_GameBasalInfo;
}

//************************************
// <p>Description: 碰撞检测</p>
// <p>Parameters:  </p>
// <p>    IGameObject * IGameObject</p>
// <p>    bool bFlag</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::Hitting(IGameObject* IGameObject, bool bFlag){
	_POINT			piSelf, piOther, piOtherAnchor;
	_SIZE			siSelf, siOther;

	piSelf = GetScreenPosition();
	piSelf.x -= m_BasalInfo.AnchorPos.x;
	piSelf.y -= m_BasalInfo.AnchorPos.y;
	piOther = IGameObject->GetScreenPosition();
	piOtherAnchor = IGameObject->GetAnchorPosition();
	piOther.x -= piOtherAnchor.x;
	piOther.y -= piOtherAnchor.y;

	siSelf = GetSize();
	siOther = IGameObject->GetSize();

	//完全包含检测
	if(bFlag){
		if(piSelf.x<=piOther.x && piSelf.y<=piOther.y && (piSelf.x+siSelf.cx)>=(piOther.x+siOther.cx) && (piSelf.y+siOther.cy)>=(piOther.y+siOther.cy))
			return true;
	}
	//触碰检测
	else{
	}

	return false;
}

//************************************
// <p>Description: 碰撞检测</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::Hitting(float x, float y){
	_RECT	rcRegion = m_GameBasalInfo.Region + m_BasalInfo.ContainerPos;

	return rcRegion.Hitting(x, y);
}

//************************************
// <p>Description: 通知变动</p>
//************************************
void CGameObject::NotifiyChange(){
	if(m_pParent){
		IBaseObject* pParent = GET_OBJECTPTR_INTERFACE(m_pParent, IBaseObject);
		//自动更新类型
		if(pParent && pParent->GetCacheType()==1){
			pParent->NotifiyChange();
		}
	}
}

//************************************
// <p>Description: =重载</p>
// <p>Parameters:  </p>
// <p>    CGameObject& GameObject</p>
//
// <p>Returns:   CGameObject&</p>
//************************************
CGameObject& CGameObject::operator=(const CGameObject& GameObject){
	//m_pParent			= GameObject.m_pParent;
	m_lpGDI				= GameObject.m_lpGDI;
	m_enGameType		= GameObject.m_enGameType;
	m_bClipping			= GameObject.m_bClipping;
	CopyMemory((LPVOID)(&m_BasalInfo), &GameObject.m_BasalInfo, sizeof(m_BasalInfo));
	CopyMemory((LPVOID)(&m_GameBasalInfo), &GameObject.m_GameBasalInfo, sizeof(m_GameBasalInfo));
	CopyMemory((LPVOID)(&m_szName), &GameObject.m_szName, sizeof(m_szName));

	return *this;
}

//************************************
// <p>Description: 设置剪裁</p>
// <p>Parameters:  </p>
// <p>    bool bFlag</p>
//
// <p>Returns:   void</p>
//************************************
void CGameObject::SetClipping(bool bFlag){
	m_bClipping = bFlag;

	NotifiyChange();
}

//************************************
// <p>Description: 鼠标移动</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nType</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnMouseMove(float x, float y, UINT nComboKey){
	return true;
}

//************************************
// <p>Description: 鼠标点击</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nType</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnMouseClick(float x, float y, int nType, UINT nMessage, UINT nComboKey){
	return true;
}

//************************************
// <p>Description: 鼠标点击</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nType</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnMouseDBClick(float x, float y, UINT nMessage, UINT nComboKey){
	return true;
}

//************************************
// <p>Description: 鼠标点击</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
//bool CGameObject::OnMouseUp(float x, float y, int nKey){
//	return true;
//}

//************************************
// <p>Description: 鼠标点击</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
//bool CGameObject::OnMouseDown(float x, float y, int nKey){
//	return true;
//}

//************************************
// <p>Description: 鼠标移入</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nType</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnMouseIn(float x, float y, int nType, UINT nMessage, UINT nComboKey){
	return true;
}

//************************************
// <p>Description: 鼠标移出</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nType</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnMouseOut(float x, float y, int nType, UINT nMessage, UINT nComboKey){
	return true;
}

//************************************
// <p>Description: 鼠标移过</p>
// <p>Parameters:  </p>
// <p>    float x</p>
// <p>    float y</p>
// <p>    int nType</p>
// <p>    int nKey</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnMouseOver(float x, float y, int nType, UINT nMessage, UINT nComboKey){
	return true;
}

//************************************
// <p>Description: 键盘事件</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnKeyPass(TCHAR nKey, UINT nFlag){
	return true;
}

//************************************
// <p>Description: 键盘事件</p>
// <p>Parameters:  </p>
// <p>    UINT nKey</p>
// <p>    UINT nFlag</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnKeyUp(UINT nKey, UINT nFlag){
	return true;
}

//************************************
// <p>Description: 键盘事件</p>
// <p>Parameters:  </p>
// <p>    UINT nKey</p>
// <p>    UINT nFlag</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnKeyDown(UINT nKey, UINT nFlag){
	return true;
}

//************************************
// <p>Description: 每帧回调消息</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnFrameEvent(){
	return true;
}

//************************************
// <p>Description: 调用事件消息</p>
//
// <p>Returns:   bool</p>
//************************************
bool CGameObject::OnAttemperEvent(){
	return true;
}

//************************************
// <p>Description: 焦点丢失事件消息</p>
//************************************
void CGameObject::FocusLost()
{
	return;
}

//************************************
// <p>Description: 焦点获取事件消息</p>
//************************************
void CGameObject::FocusGain()
{
	return;
}

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

⌨️ 快捷键说明

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