Beispiel #1
0
bool cIDCountSerializer::Save(void)
{
	cFastNBTWriter Writer;

	if (m_MapCount > 0)
	{
		Writer.AddShort("map", m_MapCount - 1);
	}

	Writer.Finish();
	
	#ifdef _DEBUG
	cParsedNBT TestParse(Writer.GetResult().data(), Writer.GetResult().size());
	ASSERT(TestParse.IsValid());
	#endif  // _DEBUG

	cFile File;
	if (!File.Open(FILE_IO_PREFIX + m_Path, cFile::fmWrite))
	{
		return false;
	}

	// NOTE: idcounts.dat is not compressed (raw format)

	File.Write(Writer.GetResult().data(), Writer.GetResult().size());
	File.Close();

	return true;
}
Beispiel #2
0
bool cMapSerializer::Save(void)
{
	cFastNBTWriter Writer;

	SaveMapToNBT(Writer);

	Writer.Finish();
	
	#ifdef _DEBUG
	cParsedNBT TestParse(Writer.GetResult().data(), Writer.GetResult().size());
	ASSERT(TestParse.IsValid());
	#endif  // _DEBUG

	cFile File;
	if (!File.Open(FILE_IO_PREFIX + m_Path, cFile::fmWrite))
	{
		return false;
	}

	AString Compressed;
	int res = CompressStringGZIP(Writer.GetResult().data(), Writer.GetResult().size(), Compressed);

	if (res != Z_OK)
	{
		return false;
	}

	File.Write(Compressed.data(), Compressed.size());
	File.Close();

	return true;
}
Beispiel #3
0
cWSSAnvil::cWSSAnvil(cWorld * a_World) :
    super(a_World)
{
    // Create a level.dat file for mapping tools, if it doesn't already exist:
    AString fnam;
    Printf(fnam, "%s/level.dat", a_World->GetName().c_str());
    if (!cFile::Exists(fnam))
    {
        cFastNBTWriter Writer;
        Writer.BeginCompound("");
        Writer.AddInt("SpawnX", (int)(a_World->GetSpawnX()));
        Writer.AddInt("SpawnY", (int)(a_World->GetSpawnY()));
        Writer.AddInt("SpawnZ", (int)(a_World->GetSpawnZ()));
        Writer.EndCompound();
        Writer.Finish();

#ifdef _DEBUG
        cParsedNBT TestParse(Writer.GetResult().data(), Writer.GetResult().size());
        ASSERT(TestParse.IsValid());
#endif  // _DEBUG

        gzFile gz = gzopen((FILE_IO_PREFIX + fnam).c_str(), "wb");
        if (gz != NULL)
        {
            gzwrite(gz, Writer.GetResult().data(), Writer.GetResult().size());
        }
        gzclose(gz);
    }
}