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

📄 2dmapterrainobj.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
//-------------------------------------
// scene.cpp
//-------------------------------------
#pragma warning(disable:4786)
#include "2DMapTerrainObj.h"
#include "BaseFunc.h"
#include "3DGameMap.h"
//-------------------------------------

C2DMapTerrainObj::C2DMapTerrainObj()
{
	m_bSyn = false;
	m_bFixed = true;
}

//-------------------------------------

C2DMapTerrainObj::~C2DMapTerrainObj()
{
	this->ClearScenePart();
}

//-------------------------------------

void C2DMapTerrainObj::Init()
{
	m_setPart.clear();
}

//-------------------------------------

void C2DMapTerrainObj::Destory()
{
	int nAmount = m_setPart.size();
	for(int i = nAmount-1; i >= 0; i --)
	{
		C2DMapTerrainObjPart* pPart = m_setPart[i];
		SAFE_DELETE(pPart);
	}
	m_setPart.clear();
}

//-------------------------------------

void C2DMapTerrainObj::AddPart(C2DMapTerrainObjPart* pPart)
{
	if(!pPart)
		return;
	m_setPart.push_back(pPart);
}

//-------------------------------------

void C2DMapTerrainObj::DeletePart(int nIndex)
{
	int nAmount = m_setPart.size();
	if((nIndex < 0) || (nIndex >= nAmount))
		return;
	
	C2DMapTerrainObjPart* pPart = m_setPart[nIndex];
	if(pPart)
	{
		SAFE_DELETE(pPart);
	}
	m_setPart.erase(m_setPart.begin()+nIndex);
}

//-------------------------------------

int C2DMapTerrainObj::GetPartAmount()
{
	return m_setPart.size();
}

//-------------------------------------

C2DMapTerrainObjPart* C2DMapTerrainObj::GetPartByIndex(int nIndex)
{
	int nAmount = m_setPart.size();
	if((nIndex < 0) || (nIndex >= nAmount))
		return NULL;
	return m_setPart[nIndex];
}

//-------------------------------------

void C2DMapTerrainObj::Show(void* pInfo)
{
	return;
}

//-------------------------------------

void C2DMapTerrainObj::Load(char* pszFile)
{
	if(!pszFile)
		return;
	FILE* fp = fopen(pszFile, "rb");
	if(!fp)
		return;
	this->ClearScenePart();
	// load scenepart amount...
	int nAmount;
	fread(&nAmount, sizeof(int), 1, fp);
	strcpy(m_szFileName, pszFile);
	for(int i = 0; i < nAmount; i ++)
	{
		C2DMapTerrainObjPart* pPart = new C2DMapTerrainObjPart;
		if(pPart)
		{
			pPart->Load(fp);
		}
		this->AddPart(pPart);
	}
	
	this->SetPos(m_posCell);
	fclose(fp);
	
}

//-------------------------------------
void C2DMapTerrainObj::ClearScenePart()
{
	int nAmount = m_setPart.size();
	for(int i = 0; i < nAmount; i++)
	{
		C2DMapTerrainObjPart* pPart = m_setPart[i];
		SAFE_DELETE(pPart);
	}
	m_setPart.clear();
}
//-------------------------------------
BOOL C2DMapTerrainObj::IsFocus()
{
	int nAmount = m_setPart.size();
	for(int i = 0; i < nAmount; i++)
	{
		C2DMapTerrainObjPart* pPart = m_setPart[i];
		if(pPart && pPart->IsFocus())
		{
			return true;
		}
	}
	return false;
}
//-------------------------------------
void C2DMapTerrainObj::SetPos(CMyPos posCell)
{
	m_posCell = posCell;
	int nAmount = m_setPart.size();
	for(int i = 0; i < nAmount; i++)
	{
		CMyPos posObj = posCell;
		C2DMapTerrainObjPart* pPart = m_setPart[i];
		posObj.x += pPart->GetSceneOffset().x;
		posObj.y += pPart->GetSceneOffset().y;
		if(pPart)
			pPart->SetPos(posObj);
	}
}
//-------------------------------------
void C2DMapTerrainObj::LoadData(FILE* fp)
{
	if(!fp)
		return;
	fread(m_szFileName, sizeof(char), _MAX_PATH, fp);
	fread(&m_posCell.x, sizeof(int), 1, fp);
	fread(&m_posCell.y, sizeof(int), 1, fp);
	this->Load(m_szFileName);
}
//-------------------------------------
void C2DMapTerrainObj::LoadText(FILE* fp)
{
	if(!fp)
		return;
	fscanf(fp, "2DMapTerrainObjFile=%s\n", m_szFileName);
	fscanf(fp, "PosX=%d\n", &m_posCell.x);
	fscanf(fp, "PosY=%d\n", &m_posCell.y);
	this->Load(m_szFileName);
	this->SetPos(m_posCell);
}
//-------------------------------------

void C2DMapTerrainObj::Process(void* pInfo)
{
	int nAmount = m_setPart.size();
	for(int i = 0; i < nAmount; i++)
	{
		C2DMapTerrainObjPart* pPart = m_setPart[i];
		if(pPart)
			pPart->Process(pInfo);
	}
}
//-------------------------------------
BOOL C2DMapTerrainObj::GetMouseOffset(CMyPos posMouse, int& nOffset)
{
	int nAmount = this->GetPartAmount();
	for(int i = 0; i < nAmount; i++)
	{
		C2DMapTerrainObjPart* pPart = this->GetPartByIndex(i);
		if(pPart)
		{
			if(pPart->GetMouseOffset(posMouse, nOffset))
			{
				return true;
			}
		}
	}
	return false;
}
//-------------------------------------
void C2DMapTerrainObj::SaveData(FILE* fp)
{
	if(!fp)
		return;
	fwrite(m_szFileName, sizeof(char), _MAX_PATH, fp);
	fwrite(&m_posCell.x, sizeof(int), 1, fp);
	fwrite(&m_posCell.y, sizeof(int), 1, fp);
}
//-------------------------------------
void C2DMapTerrainObj::SaveText(FILE* fp)
{
        if(!fp)
                return;
        fprintf(fp, "2DMapTerrainObjFile=%s\n", m_szFileName);
        fprintf(fp, "PosX=%d\n", m_posCell.x);
        fprintf(fp, "PosY=%d\n", m_posCell.y);
}
//-------------------------------------

⌨️ 快捷键说明

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