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

📄 2dmapcoverobj.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
//----------------------------------------------------
//2DMapCoverObj.cpp
//----------------------------------------------------
#pragma warning(disable:4786)
#include "2DMapCOverObj.h"
#include "3DGameMap.h"
#include "GameDataSet.h"
//----------------------------------------------------
BOOL C2DMapCoverObj::s_bStroke = false;
//----------------------------------------------------
C2DMapCoverObj::C2DMapCoverObj()
{
	m_dwTimePreFrame = ::TimeGet();
	m_dwShowWay = _SHOWWAY_NORMAL;
}
//----------------------------------------------------
C2DMapCoverObj::~C2DMapCoverObj()
{
}
//----------------------------------------------------
void C2DMapCoverObj::Show(void* pInfo)
{
	CAni* pAni = g_objGameDataSet.GetDataAni(m_szFileName, m_szIndex, EXIGENCE_NORMAL, 60*1000);
	if(!pAni)
		return;

	CMyPos posScr, posWorld, posShow;
	this->GetWorldPos(posWorld);
	g_objGameMap.World2Screen(posWorld.x, posWorld.y, posScr.x, posScr.y);
	posShow.x = posScr.x - m_posOffset.x;
	posShow.y = posScr.y - m_posOffset.y;
	g_objGameMap.MapScaleShowPos(posShow.x, posShow.y);

	CMyBitmap* pBmp = pAni->GetFrame(m_nFrameIndex);
	if(!pBmp)
		return;
	CMySize sizeBmp;
	pBmp->GetSize(sizeBmp.iWidth, sizeBmp.iHeight);
	sizeBmp.iWidth = sizeBmp.iWidth * g_objGameMap.GetScale()/_NORMAL_SCALE;
	sizeBmp.iHeight = sizeBmp.iHeight * g_objGameMap.GetScale()/_NORMAL_SCALE;

	if(!s_bStroke)
	{
		unsigned char ucA, ucR, ucG, ucB;
		ucA = m_dwARGB >> 24;
		ucR = (m_dwARGB & 0x00ff0000) >> 16;
		ucG = (m_dwARGB & 0x0000ff00) >> 8;
		ucB = m_dwARGB & 0x000000ff;
		pBmp->SetColor(ucA, ucR, ucG, ucB);
		pBmp->ShowEx(posShow.x, posShow.y, NULL, sizeBmp.iWidth, sizeBmp.iHeight, 0, m_dwShowWay);
	}
	else
	{
		CMyPos posMouse;
		::MouseCheck(posMouse.x, posMouse.y);
		CMyPos posCell;
		g_objGameMap.Mouse2Cell(posMouse.x, posMouse.y, posCell.x, posCell.y);
		CMyBitmap* pBmp = pAni->GetFrame(m_nFrameIndex);
		if((posCell.x == m_posCell.x) && (posCell.y == m_posCell.y))
		{
			pBmp->SetColor(0x77, 0xff, 0xff, 0xff);
			pBmp->ShowEx(posShow.x, posShow.y, NULL, sizeBmp.iWidth, sizeBmp.iHeight, 0, m_dwShowWay);
			pBmp->SetColor(0xff, 0xff, 0xff, 0xff);
		}
		else
		{
			pBmp->ShowEx(posShow.x, posShow.y, NULL, sizeBmp.iWidth, sizeBmp.iHeight, 0, m_dwShowWay);
		}
		if(pBmp)
		{
			CMyBitmap::ShowRect(posShow.x, posShow.y, 
				posShow.x+sizeBmp.iWidth, posShow.y+sizeBmp.iHeight,
				0xffffff00);				
		}
		CMyPos posScr;
		g_objGameMap.Cell2Screen(m_posCell.x, m_posCell.y, posScr.x, posScr.y);
		g_objGameMap.MapScaleShowPos(posScr.x, posScr.y);
		// 显示重心点
		CMyPos posA, posB, posC, posD;
		posA.x = posScr.x - _CELL_WIDTH* g_objGameMap.GetScale()/_NORMAL_SCALE/2;
		posA.y = posScr.y;

		posB.x = posScr.x;
		posB.y = posScr.y - _CELL_HEIGHT* g_objGameMap.GetScale()/_NORMAL_SCALE/2;

		posC.x = posScr.x;
		posC.y = posScr.y + _CELL_HEIGHT* g_objGameMap.GetScale()/_NORMAL_SCALE/2;

		posD.x = posScr.x + _CELL_WIDTH* g_objGameMap.GetScale()/_NORMAL_SCALE/2;
		posD.y = posScr.y;


		CMyBitmap::ShowBlock(posA, posB, posC, posD, 0xff00ff00);
	}
}
//----------------------------------------------------
void C2DMapCoverObj::Process(void* pInfo)
{
	if(g_objGameMap.IsPosVisible(m_posCell, 12))
	{
		CAni* pAni = g_objGameDataSet.GetDataAni(m_szFileName, m_szIndex, EXIGENCE_NORMAL, 60*1000);
		if(!pAni)
			return;

		m_nFrameIndex = ((::TimeGet()- m_dwTimePreFrame)/m_dwFrameInterval)%pAni->GetFrameAmount();

		CInteractiveLayer* pLayer = g_objGameMap.GetInteractiveLayer();
		if(pLayer)
			pLayer->ApplyShow(this);
	}
}
//----------------------------------------------------
C2DMapCoverObj* C2DMapCoverObj::CreateNew(char* pszFileName, char* pszIndex)
{
	if(!pszFileName || !pszIndex)
		return NULL;
	if(strlen(pszFileName) >= _MAX_PATH)
		return NULL;
	if(strlen(pszFileName) >= _MAX_TITLESIZE)
		return NULL;
	
	C2DMapCoverObj* pObj = new C2DMapCoverObj;
	if(pObj)
	{
		pObj->Create(pszFileName, pszIndex);
	}
	return pObj;
}
//----------------------------------------------------
void   C2DMapCoverObj::Create(char* pszFileName, char* pszIndex)
{
	if(!pszFileName || !pszIndex)
		return;
	if(strlen(pszFileName) >= _MAX_PATH)
		return;
	if(strlen(pszFileName) >= _MAX_TITLESIZE)
		return;
	strcpy(m_szFileName, pszFileName);
	strcpy(m_szIndex, pszIndex);
}
//----------------------------------------------------
void   C2DMapCoverObj::SetOffset(CMyPos posOffset)
{
	m_posOffset = posOffset;
}
//----------------------------------------------------
void   C2DMapCoverObj::GetOffset(CMyPos& posOffset)
{
	posOffset = m_posOffset;
}
//----------------------------------------------------
void   C2DMapCoverObj::SetFrameInterval(DWORD dwInterval)
{
	m_dwFrameInterval = dwInterval;
}
//----------------------------------------------------
DWORD  C2DMapCoverObj::GetFrameInterval()
{
	return m_dwFrameInterval;
}
//----------------------------------------------------
void   C2DMapCoverObj::SetBase(CMySize infoSize)
{
	m_sizeBase = infoSize;
}
//----------------------------------------------------
void   C2DMapCoverObj::GetBase(CMySize& infoSize)
{
	infoSize = m_sizeBase;
}
//----------------------------------------------------
void C2DMapCoverObj::SaveDataObj(FILE* fp)
{
	if(!fp)
		return;
	fwrite(m_szFileName, sizeof(char), _MAX_PATH, fp);
	fwrite(m_szIndex, sizeof(char), _MAX_TITLESIZE, fp);
	
	fwrite(&m_posCell.x, sizeof(int), 1, fp);
	fwrite(&m_posCell.y, sizeof(int), 1, fp);
	
	fwrite(&m_sizeBase.iWidth, sizeof(UINT), 1, fp);
	fwrite(&m_sizeBase.iHeight, sizeof(UINT), 1, fp);
	
	fwrite(&m_posOffset.x, sizeof(int), 1, fp);
	fwrite(&m_posOffset.y, sizeof(int), 1, fp);
	
	fwrite(&m_dwFrameInterval, sizeof(DWORD), 1, fp);
//	fwrite(&m_dwShowWay, sizeof(DWORD), 1, fp);
}
//----------------------------------------------------
void C2DMapCoverObj::LoadDataObj(FILE* fp)
{
	if(!fp)
		return;
	fread(m_szFileName, sizeof(char), _MAX_PATH, fp);
	fread(m_szIndex, sizeof(char), _MAX_TITLESIZE, fp);
	
	fread(&m_posCell.x, sizeof(int), 1, fp);
	fread(&m_posCell.y, sizeof(int), 1, fp);
	
	fread(&m_sizeBase.iWidth, sizeof(UINT), 1, fp);
	fread(&m_sizeBase.iHeight, sizeof(UINT), 1, fp);
	
	fread(&m_posOffset.x, sizeof(int), 1, fp);
	fread(&m_posOffset.y, sizeof(int), 1, fp);
	
	fread(&m_dwFrameInterval, sizeof(DWORD), 1, fp);
	//fread(&m_dwShowWay, sizeof(DWORD), 1, fp);
}
//----------------------------------------------------
void C2DMapCoverObj::SaveTextObj(FILE* fp)
{
        if(!fp)
                return;
        fprintf(fp, "AniFile=%s\n", m_szFileName);
        fprintf(fp, "AniTitle=%s\n", m_szIndex);
        fprintf(fp, "PosCell=[%d,%d]\n", m_posCell.x, m_posCell.y);
        fprintf(fp, "SizeBase=[%u,%u]\n", m_sizeBase.iWidth, m_sizeBase.iHeight);
        fprintf(fp, "PosOffset=[%d,%d]\n", m_posOffset.x, m_posOffset.y);
        fprintf(fp, "FrameInterval=%u\n", m_dwFrameInterval);
}
//----------------------------------------------------
void C2DMapCoverObj::LoadTextObj(FILE* fp)
{
	if(!fp)
		return;
	fscanf(fp, "AniFile=%s\n", m_szFileName);
	fscanf(fp, "AniTitle=%s\n", m_szIndex);
	fscanf(fp, "PosCell=[%d,%d]\n", &m_posCell.x, &m_posCell.y);
	fscanf(fp, "SizeBase=[%u,%u]\n", &m_sizeBase.iWidth, &m_sizeBase.iHeight);
	fscanf(fp, "PosOffset=[%d,%d]\n", &m_posOffset.x, &m_posOffset.y);
	fscanf(fp, "FrameInterval=%u\n", &m_dwFrameInterval);
}
//----------------------------------------------------
BOOL   C2DMapCoverObj::IsFocus()
{
	
	CMyPos posMouse;
	::MouseCheck(posMouse.x, posMouse.y);
	CAni* pAni = g_objGameDataSet.GetDataAni(m_szFileName, m_szIndex, EXIGENCE_NORMAL, 60*1000);
	CMyBitmap* pBmp = pAni->GetFrame(m_nFrameIndex);
	if(pBmp)
	{
		CMyPos posScr, posWorld, posShow;
		this->GetWorldPos(posWorld);
		g_objGameMap.World2Screen(posWorld.x, posWorld.y, posScr.x, posScr.y);
		posShow.x = posScr.x - m_posOffset.x;
		posShow.y = posScr.y - m_posOffset.y;
		CMyPos posTransparent;
		posTransparent.x = posMouse.x-posShow.x;
		posTransparent.y = posMouse.y-posShow.y;
		

		if(pBmp->IsTransparent(posTransparent))
			return false;
		else
			return true;
	}
	
	return false;
}

//----------------------------------------------------
void  C2DMapCoverObj::SetShowWay(DWORD dwShowWay)
{
	m_dwShowWay = dwShowWay;
}

⌨️ 快捷键说明

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