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

📄 mywall.cpp

📁 一款45度2D游戏地图编辑器和大家一起分享啊!
💻 CPP
字号:
#include "stdafx.h"
#include ".\mywall.h"

CMyWall::CMyWall(void)
{
	number = 0;
}

CMyWall::~CMyWall(void)
{
}

void CMyWall::LoadFile(CString file)
{
	CFile pf;
	if(!pf.Open(file,CFile::modeRead))//只读
	{
		AfxMessageBox("打开文件失败");
		return;
	}
	pf.Read(&number,sizeof(int));//读取第一个int 该值为已经设定了的图片的数目
	for(int i=0;i<number;i++) //读取每一个图片属性
	{
		WallConfig temp;
		pf.Read(&temp.edit,sizeof(bool));
		pf.Read(&temp.id,sizeof(int));
		pf.Read(&temp.offx,sizeof(int));
		pf.Read(&temp.offy,sizeof(int));
		pf.Read(&temp.centerx,sizeof(int));
		pf.Read(&temp.centery,sizeof(int));
		pf.Read(&temp.projectnumber,sizeof(int));
		for(int j=0;j<temp.projectnumber;j++)
		{
			CPoint point;
			pf.Read(&point.x,sizeof(long));
			pf.Read(&point.y,sizeof(long));
			temp.project.push_back(point);
		}
		//判断是否存在,如果存在,改写,否则,添加
		std::set<WallConfig>::iterator is = wallconfig.begin();
		is = wallconfig.find(temp.id);
		if(temp.id==(*is).id) //如果找到就改写
		{
			*is = temp;
		}
		else
		{
			wallconfig.insert(temp);
		}
	}
	pf.Close();	
	return;
}
void CMyWall::SaveFile(CString file)
{
	CFile pf;
	if(!pf.Open(file,CFile::modeCreate|CFile::modeWrite)){
		AfxMessageBox("保存失败!");
		return;
	}
	pf.Write(&number,sizeof(int));
	std::set<WallConfig>::iterator is= wallconfig.begin();
	for(int i=0;i<number;i++,is++)
	{
		WallConfig temp;
		temp = *is;
		pf.Write(&(temp.edit),sizeof(bool));
		pf.Write(&(temp.id),sizeof(int));
		pf.Write(&(temp.offx),sizeof(int));
		pf.Write(&(temp.offy),sizeof(int));
		pf.Write(&(temp.centerx),sizeof(int));
		pf.Write(&(temp.centery),sizeof(int));
		pf.Write(&(temp.projectnumber),sizeof(int));
		std::vector<CPoint>::iterator ip = temp.project.begin(); 
		for(int j=0;j<temp.projectnumber;j++,ip++)
		{
			CPoint temp1;
			temp1 = *ip;
			pf.Write(&(temp1.x),sizeof(long));
			pf.Write(&(temp1.y),sizeof(long));
		}
	}
	pf.Close();
	return;
}

bool CMyWall::Insert(WallConfig& t)
{
	std::set<WallConfig>::iterator is=wallconfig.begin();
	is = wallconfig.find(t.id);
	if(t.id == (*is).id)
	{
		return false;
	}
	else
	{
		wallconfig.insert(t);
		this->number++;
	}
}
bool CMyWall::find(int id,WallConfig*& p)
{
	std::set<WallConfig>::iterator is = wallconfig.begin();
	is = wallconfig.find(id);
	if(id==(*is).id)
	{
		p = &*is;
		return true;
	}
	else
	{
		if(p)
		delete p;
		p = NULL;
		return false;
	}
}

⌨️ 快捷键说明

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