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

📄 gm_ui_minimap.cpp

📁 混乱竞技场的全套代码,客户端资源可以网上搜
💻 CPP
字号:
  // GM_UI_MiniMap.cpp: implementation of the GM_UI_MiniMap class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GM_UI_MiniMap.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

GM_UI_Minimap::GM_UI_Minimap(CGsUIPanel*	pParent)
:CGsUIPanel(pParent),
m_MiniMap(pParent->GetGsEngine())
{
	m_pWorld		= NULL;
	m_key_style				= "minimap";
	m_isVisible		= true;
	m_isEnable		= true;

	m_rcClient	= GRECT(0,0,100,100);
	m_rcHeader	= m_rcClient;

	m_rcMap		= GRECT(0,0,0,0);
	m_rcView	= GRECT(0,0,0,0);

	m_size_margin	= 2;

	m_panel_color	= D3DRGBA(0.3F, 0.3F, 0.7F, 0.6F);

	m_fScaleW	= 0;
	m_fScaleH	= 0;

	m_can_move	= TRUE;

	RestoreSource();

}

BOOL GM_UI_Minimap::SetUISize(LONG width, LONG height)
{
	m_rcClient.right	= m_rcClient.left + width;
	m_rcClient.bottom	= m_rcClient.top + height;

	m_rcHeader	= m_rcClient;

	ReleaseSource();
	return SUCCEEDED(RestoreSource());
}


GM_UI_Minimap::~GM_UI_Minimap()
{
}


VOID GM_UI_Minimap::ReleaseSource()
{
	m_MiniMap.ReleaseObjects();
//	return S_OK;
}

HRESULT GM_UI_Minimap::RestoreSource()
{
	m_MiniMap.CreateEx(m_rcClient.width(),m_rcClient.height());
	GRECT rc = GRECT(0,0,m_rcClient.width(),m_rcClient.height());
	m_MiniMap.Clear(m_MiniMap.ConvertColor(m_panel_color), &rc);
	OnInitWorld();
	return S_OK;
}


LONG	GM_UI_Minimap::OnUpdate()
{

	return CGsUIPanel::OnUpdate();
}
HRESULT	GM_UI_Minimap::OnDraw(GPOINT point)
{
	HRESULT hr = CGsUIPanel::OnDraw(point);
	if(FAILED(hr))
		return hr;

	hr = m_pEngine->Render_PaintFast(point.x, point.y, &m_MiniMap, m_isBackLayer ? 1.0f : 0.0f);
	if(FAILED(hr))
		return hr;

	GRECT rc	= m_rcView + point;
	hr = m_pEngine->Render_DrawRect(&rc, false, D3DRGBA(0.1F, 0.1F, 0.9F, 0.8F), m_isBackLayer ? 1.0f : 0.0f);

	return hr;
}				
	
//VOID	GM_UI_Minimap::OnTouch(BOOL bTouch)
//{
//}
//VOID	GM_UI_Minimap::OnClick()
//{
//}

ID	GM_UI_Minimap::OnMouseMove( UINT nFlags, GPOINT point )
{
	if(is_point_in_rect(point, m_rcMap) && !m_isDrag)
	{
		switch(nFlags)
		{
		case MK_LBUTTON:
			{
				if(m_pWorld)
				{
					GPOINT pt = point - m_rcMap.top_left() - GPOINT(m_rcView.width()/2,m_rcView.height()/2);
					m_pWorld->SetOriginal(pt.x*m_fScaleW, pt.y*m_fScaleH);
				}
			}
			break;
		case MK_RBUTTON:
			break;
		default:
			break;
		};
		return m_ID;
	}
	return CGsUIPanel::OnMouseMove( nFlags, point );
}
ID	GM_UI_Minimap::OnMouseWheel( UINT nFlags, short zDelta, GPOINT point )
{
	if(is_point_in_rect(point, m_rcMap))
		return m_ID;

	return CGsUIPanel::OnMouseWheel( nFlags, zDelta, point );
}
ID	GM_UI_Minimap::OnLButtonDown( UINT nFlags, GPOINT point )
{
	if(is_point_in_rect(point, m_rcMap))
		return m_ID;

	return CGsUIPanel::OnLButtonDown( nFlags, point );
}
ID	GM_UI_Minimap::OnLButtonUp( UINT nFlags, GPOINT point )
{
	if(m_pWorld && is_point_in_rect(point, m_rcMap))
	{
		GPOINT pt = point - m_rcMap.top_left() - GPOINT(m_rcView.width()/2,m_rcView.height()/2);
		m_pWorld->SetOriginal(pt.x*m_fScaleW, pt.y*m_fScaleH);
		return m_ID;
	}

	return CGsUIPanel::OnLButtonUp( nFlags, point );
}
ID	GM_UI_Minimap::OnLButtonDbClk( UINT nFlags, GPOINT point )
{
	if(is_point_in_rect(point, m_rcMap))
		return m_ID;

	return CGsUIPanel::OnLButtonDbClk( nFlags, point );
}
ID	GM_UI_Minimap::OnRButtonDown( UINT nFlags, GPOINT point )
{
	if(is_point_in_rect(point, m_rcMap))
		return m_ID;

	return CGsUIPanel::OnRButtonDown( nFlags, point );
}
ID	GM_UI_Minimap::OnRButtonUp( UINT nFlags, GPOINT point )
{
	if(is_point_in_rect(point, m_rcMap))
		return m_ID;

	return CGsUIPanel::OnRButtonUp( nFlags, point );
}
ID	GM_UI_Minimap::OnRButtonDbClk( UINT nFlags, GPOINT point )
{

	return CGsUIPanel::OnRButtonDbClk( nFlags, point );
}
ID	GM_UI_Minimap::OnChar( UINT nChar, UINT nRepCnt, UINT nFlags )
{

	return CGsUIPanel::OnKeyUp(nChar, nRepCnt, nFlags);

}
ID	GM_UI_Minimap::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	
	return CGsUIPanel::OnKeyUp(nChar, nRepCnt, nFlags);
}
ID	GM_UI_Minimap::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{

	return CGsUIPanel::OnKeyUp(nChar, nRepCnt, nFlags);
}

VOID	GM_UI_Minimap::OnNotify(ID ,KEY key)	
{

	return;
}




BOOL GM_UI_Minimap::OnInitWorld()
{
	if(NULL==m_pWorld)
		return FALSE;
	LONG width	= m_rcClient.width()-2*m_size_margin;//m_MiniMap.GetWidth();
	LONG height	= m_rcClient.height()-2*m_size_margin;//m_MiniMap.GetHeight();
	if(width<=0 || height<=0 || m_pWorld->GetWidthPix()<=0 || m_pWorld->GetHeightPix()<=0)
		return FALSE;

	GRECT rcSrc(0,0,m_pWorld->GetWidthPix(), m_pWorld->GetHeightPix());
	
	float sw	= (float)m_pWorld->GetWidthPix()/(float)width;
	float sh	= (float)m_pWorld->GetHeightPix()/(float)height;

	GRECT rcDest(m_size_margin,m_size_margin,m_size_margin,m_size_margin);
	if(sw>sh)
	{
		rcDest.right	+= width;
		LONG a	= height-m_pWorld->GetHeightPix()/sw;
		rcDest.top		+= a/2;
		rcDest.bottom	+= height-a/2;
		m_fScaleW		= sw;
		m_fScaleH		= (float)m_pWorld->GetHeightPix()/(float)rcDest.height();
	}
	else
	{
		rcDest.bottom	+= height;
		LONG a	= width-m_pWorld->GetWidthPix()/sh;
		rcDest.left		+= a/2;
		rcDest.right	+= width-a/2;
		m_fScaleW		= (float)m_pWorld->GetWidthPix()/(float)rcDest.width();
		m_fScaleH		= sh;
	}

	m_rcMap	= rcDest;

	CGsTexture tex(m_pEngine);
	tex.CreateEx(rcDest.width(), rcDest.height());

	if(FAILED(tex.LoadFromSurface(NULL, m_pWorld->GetBackGroup()->GetCurrentFrame(), &rcSrc)))
	{
		return FALSE;
	}

	m_MiniMap.Blt(&rcDest, &tex, NULL);
// 	m_MiniMap.Blt(&rcDest, m_pWorld->GetBackGroup()->GetCurrentFrame(), NULL);

	return TRUE;
}


VOID GM_UI_Minimap::SetPanelColor(D3DCOLOR color)
{
	m_panel_color	= color;
	GRECT rc = GRECT(0,0,m_rcClient.width(),m_rcClient.height());
	m_MiniMap.Clear(m_MiniMap.ConvertColor(m_panel_color), &rc);
	OnInitWorld();
}

⌨️ 快捷键说明

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