📄 minimapdialog.cpp
字号:
// MiniMapDialog.cpp: implementation of the CMiniMapDialog class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MiniMapDialog.h"
#include "Object.h"
#include "MHFile.h"
#include "./Interface/cFont.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const float MapWidth = 51200.f;
const float MapHeight = 51200.f;
GLOBALTON(CMiniMapDialog)
CMiniMapDialog::CMiniMapDialog()
{
m_bInited = FALSE;
m_bActive = FALSE;
}
CMiniMapDialog::~CMiniMapDialog()
{
Release();
}
void CMiniMapDialog::SetActive(BOOL bActive)
{
m_bActive = bActive;
}
void CMiniMapDialog::RenderMiniMap()
{
if(m_bActive == FALSE || m_bInited == FALSE)
return;
static BYTE al = 255;
DWORD color = RGBA_MAKE(255,255,255,al);
VECTOR2 axis;
axis.x = 0;
axis.y = 0;
VECTOR2 scale;
scale.x = 1;
scale.y = 1;
m_MiniMapImage.RenderSprite(NULL,NULL,0,&m_MinimapImagePos,color);
m_HeroImage.RenderSprite(&scale,&m_HeroImagePos,0.5,&m_HeroImagePos,color);
char text[256];
sprintf(text,"x: %4.1f z: %4.1f",m_HeroPos.x,m_HeroPos.z);
RECT rect={(LONG)50, (LONG)50, 0,0};
CFONT_OBJ->RenderFont(0,text,strlen(text),&rect,RGBA_MAKE(255,255,255,255));
}
//////////////////////////////////////////////////////////////////////////
void CMiniMapDialog::InitMiniMap(MAPTYPE MapNum)
{
m_bActive = FALSE;
DIRECTORYMGR->SetLoadMode(eLM_Minimap);
char descFile[64];
CMHFile file;
#ifdef _FILE_BIN_
sprintf(descFile,"Minimap%d.bin",MapNum);
file.Init(descFile,"rb",MHFILE_FLAG_DONOTCHANGE_DIRECTORY_TOROOT);
#else
sprintf(descFile,"Minimap%d.txt",MapNum);
file.Init(descFile,"r",MHFILE_FLAG_DONOTCHANGE_DIRECTORY_TOROOT);
#endif
if(file.IsInited() == FALSE)
return;
LoadMinimapImageInfo(&file);
// m_pMiniMapImage->LoadSprite(m_MiniMapImageFilename);
// m_pHeroImage->LoadSprite(m_HeroImageFilename);
m_MinimapImagePos.x = (float)m_ImageStartX;
m_MinimapImagePos.x *= -1.f;
m_MinimapImagePos.y = (float)m_ImageStartY;
m_MinimapImagePos.y *= -1.f;
file.Release();
m_bInited = TRUE;
}
void CMiniMapDialog::Release()
{
m_bActive = FALSE;
m_bInited = FALSE;
}
void CMiniMapDialog::LoadMinimapImageInfo(CMHFile* pFile)
{
pFile->GetString(m_MiniMapImageFilename);
pFile->GetString(m_HeroImageFilename);
m_ImageStartX = pFile->GetDword();
m_ImageStartY = pFile->GetDword();
m_ImageWidth = pFile->GetDword();
m_ImageHeight = pFile->GetDword();
m_HeroImageWidth = pFile->GetDword();
m_HeroImageHeight = pFile->GetDword();
}
void CMiniMapDialog::SetHeroPos(CObject* pObject)
{
if(m_bInited == FALSE)
return;
m_HeroPos = pObject->GetCurPosition();
float Angle = pObject->GetAngle();
DWORD HeroPosX = DWORD((m_HeroPos.x / MapWidth) * m_ImageWidth);
DWORD HeroPosY = DWORD((m_HeroPos.z / MapHeight) * m_ImageHeight);
m_HeroImagePos.x = ((float)HeroPosX) + m_MinimapImagePos.x - (m_HeroImageWidth*0.5f);
m_HeroImagePos.y = ((float)m_ImageHeight - HeroPosY) + m_MinimapImagePos.y - (m_HeroImageHeight*0.5f);
m_HeroImageAngle = Angle;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -