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