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

📄 minimapdialog.cpp

📁 墨香最新私服
💻 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 + -