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

📄 minimapicon.cpp

📁 墨香最新私服
💻 CPP
字号:
// MiniMapIcon.cpp: implementation of the CMiniMapIcon class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MiniMapIcon.h"
#include "./Interface/cImage.h"
#include "Object.h"
#include "../[cc]header/GameResourceManager.h"
#include "Npc.h"

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

CMiniMapIconImage::~CMiniMapIconImage()
{
	SAFE_DELETE(m_pImage);
}

CMiniMapIcon::CMiniMapIcon()
{
	m_pIconImage = NULL;
	m_Kind = 0;
	m_Interpolation = 10;
}

CMiniMapIcon::~CMiniMapIcon()
{

}

void CMiniMapIcon::Init(CMiniMapIconImage* pIconImage,CObject* pObject, int Kind)
{
	m_pObject = pObject;
	m_pIconImage = pIconImage;
	m_Kind = Kind;
}

void CMiniMapIcon::Init(CMiniMapIconImage* pIconImage,VECTOR3* pObjectPos, int Kind)
{
	m_pObject = NULL;
	m_ObjectPos = *pObjectPos;
	m_pIconImage = pIconImage;
	m_Kind = Kind;
}

void CMiniMapIcon::Init(CMiniMapIconImage* pIconImage,PARTY_MEMBER* pMember, int Kind)
{
	m_pObject = NULL;
	strcpy(m_MemberName, pMember->Name);
	m_pIconImage = pIconImage;
	m_Kind = Kind;
}



VECTOR3 CMiniMapIcon::GetPosition()
{
	if(m_pObject)
	{
		m_pObject->GetPosition(&m_ObjectPos);
	}
	return m_ObjectPos;
}

void CMiniMapIcon::Update(DWORD MinimapImageWidth,DWORD MinimapImageHeight)
{
	if(m_Kind == eMNMICON_PARTYMEMBER)
	{
		m_ObjectPos.x += (m_TargetPos.x - m_ObjectPos.x)/m_Interpolation;
		m_ObjectPos.z += (m_TargetPos.z - m_ObjectPos.z)/m_Interpolation;		
	}
	else if(m_pObject)
	{
		if(m_pObject->IsInited() == FALSE)
			return;

		m_pObject->GetPosition(&m_ObjectPos);
	}

	m_ScreenPos.x = (m_ObjectPos.x / 51200)*MinimapImageWidth;
	m_ScreenPos.y = MinimapImageHeight - (m_ObjectPos.z / 51200)*MinimapImageHeight;
}

void CMiniMapIcon::Render(VECTOR2* pMapStartPixel,RECT* pCullRect)
{
	VECTOR2 trans;
	if(pCullRect->left > m_ScreenPos.x || m_ScreenPos.x > pCullRect->right)
		return;
	if(pCullRect->top > m_ScreenPos.y || m_ScreenPos.y > pCullRect->bottom)
		return;
	trans.x = m_ScreenPos.x - m_pIconImage->m_ImageWH.x*0.5f + pMapStartPixel->x;
	trans.y = m_ScreenPos.y - m_pIconImage->m_ImageWH.y*0.5f + pMapStartPixel->y;
	
	m_pIconImage->m_pImage->RenderSprite(NULL,NULL,0,&trans,0xffffffff);
}

int CMiniMapIcon::GetToolTip(int x,int y,VECTOR2* pMapStartPixel,char* pOutText)
{
	if(m_pObject == FALSE && m_Kind != eMNMICON_PARTYMEMBER)
		return 0;

	int gapx = x - int(m_ScreenPos.x+pMapStartPixel->x);
	int gapy = y - int(m_ScreenPos.y+pMapStartPixel->y);
	int halfx = int(m_pIconImage->m_ImageWH.x*0.5f);
	int halfy = int(m_pIconImage->m_ImageWH.y*0.5f);
	
	if(gapx > halfx || gapx < -halfx)
		return 0;
	if(gapy > halfy || gapy < -halfy)
		return 0;

	if(m_Kind == eMNMICON_PARTYMEMBER)
	{
		strcpy(pOutText, m_MemberName);
		return 2;
	}
	else if(m_pObject->GetObjectKind() == eObjectKind_Npc )
	{
		NPC_LIST* pInfo = GAMERESRCMNGR->GetNpcInfo(((CNpc*)m_pObject)->GetNpcKind());
		wsprintf( pOutText, "%s(%s)", m_pObject->GetObjectName(), pInfo->Name );
	}
	else
	{
		strcpy(pOutText,m_pObject->GetObjectName());
	}
	
	return 1;
}

⌨️ 快捷键说明

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