void writeLeaderboardDef(zoneInfo_t* info, ZStream* buf, LeaderboardDef* data)
{
	WRITE_ASSET(data, LeaderboardDef);
	buf->pushStream(ZSTREAM_VIRTUAL);
	WRITE_NAME(data);

	if (data->columns)
	{
		buf->align(ALIGN_TO_4);
		LbColumnDef* cols = (LbColumnDef*)buf->at();
		buf->write(data->columns, sizeof(LbColumnDef), data->columnCount);
		for (int i = 0; i < data->columnCount; i++)
		{
			if (cols[i].title)
			{
				buf->align(ALIGN_TO_1);
				buf->write(data->columns[i].title, strlen(data->columns[i].title) + 1, 1);
				cols[i].title = (const char*)-1;
			}

			if (cols[i].statName)
			{
				buf->align(ALIGN_TO_1);
				buf->write(data->columns[i].statName, strlen(data->columns[i].statName) + 1, 1);
				cols[i].statName = (const char*)-1;
			}
		}
		dest->columns = (LbColumnDef*)-1;
	}

	buf->popStream(); // VIRTUAL
}
void writeSndCurve(zoneInfo_t* info, ZStream* buf, SndCurve* data)
{
	WRITE_ASSET(data, SndCurve);
	buf->pushStream(ZSTREAM_VIRTUAL);

	WRITE_NAME(data);

	buf->popStream();
}
Exemple #3
0
void writeTracer(zoneInfo_t* info, ZStream* buf, Tracer* data)
{
	data->material = (Material*)requireAsset(info, ASSET_TYPE_MATERIAL, (char*)data->material->name, buf);

	WRITE_ASSET(data, Tracer);
	buf->pushStream(ZSTREAM_VIRTUAL);
	WRITE_NAME(data);

	buf->popStream();
}
void writeTracer(zoneInfo_t* info, ZStream* buf, Tracer* data)
{
	data->material = (Material*)requireAsset(info, ASSET_TYPE_MATERIAL, (char*)data->material->name, buf);

	WRITE_ASSET(data, Tracer);
	WRITE_NAME(data);

	// everything else is primed and stored
	// we done
}
Exemple #5
0
void writeFont(zoneInfo_t* info, ZStream* buf, Font* data)
{
	int image = NULL, glowImage = NULL;
	if (data->image)
		image = requireAsset(info, ASSET_TYPE_MATERIAL, data->image->name, buf);
	if (data->glowImage)
		glowImage = requireAsset(info, ASSET_TYPE_MATERIAL, data->glowImage->name, buf);
	WRITE_ASSET(data, Font);
	buf->pushStream(ZSTREAM_VIRTUAL);
	WRITE_NAME(data);

	dest->image = (Material*)image;
	dest->glowImage = (Material*)glowImage;

	if (data->characters) // OffsetToPointer
	{
		buf->align(ALIGN_TO_4);
		buf->write(data->characters, sizeof(FontEntry), data->entries);
		dest->characters = (FontEntry*)-1;
	}
	buf->popStream(); // VIRTUAL
}
void writeStructuredDataDefSet(zoneInfo_t* info, ZStream* buf, StructuredDataDefSet* data)
{
	WRITE_ASSET(data, StructuredDataDefSet);
	buf->pushStream(ZSTREAM_VIRTUAL);

	WRITE_NAME(data);

	if (data->defs)
	{
		buf->align(ALIGN_TO_4);
		StructuredDataDef* defs = (StructuredDataDef*)buf->at();
		buf->write(data->defs, sizeof(StructuredDataDef), data->defCount);

		for (int i = 0; i < data->defCount; i++)
		{
			StructuredDataDef* curdef = &data->defs[i];
			if (curdef->enums)
			{
				buf->align(ALIGN_TO_4);
				StructuredDataEnum* enums = (StructuredDataEnum*)buf->at();
				buf->write(curdef->enums, sizeof(StructuredDataEnum), curdef->enumCount);

				for (int j = 0; j < curdef->enumCount; j++)
				{
					if (enums[j].entries)
					{
						buf->align(ALIGN_TO_4);
						StructuredDataEnumEntry* entries = (StructuredDataEnumEntry*)buf->at();
						buf->write(enums[j].entries, sizeof(StructuredDataEnumEntry), enums[j].entryCount);

						for (int k = 0; k < enums[j].entryCount; k++)
						{
							if (entries[k].name)
							{
								buf->write(entries[k].name, 1, strlen(entries[k].name) + 1);
								entries[k].name = (const char*)-1;
							}
						}

						enums[j].entries = (StructuredDataEnumEntry*)-1;
					}
				}
				defs[i].enums = (StructuredDataEnum*)-1;
			}

			if (curdef->structs)
			{
				buf->align(ALIGN_TO_4);
				StructuredDataStruct* structs = (StructuredDataStruct*)buf->at();
				buf->write(curdef->structs, sizeof(StructuredDataStruct), curdef->structCount);

				for (int j = 0; j < curdef->structCount; j++)
				{
					if (structs[j].properties)
					{
						buf->align(ALIGN_TO_4);
						StructuredDataStructProperty* props = (StructuredDataStructProperty*)buf->at();
						buf->write(structs[j].properties, sizeof(StructuredDataStructProperty), structs[j].propertyCount);

						for (int k = 0; k < structs[j].propertyCount; k++)
						{
							if (props[k].name)
							{
								buf->write(props[k].name, 1, strlen(props[k].name) + 1);
								props[k].name = (const char*)-1;
							}
						}

						structs[j].properties = (StructuredDataStructProperty*)-1;
					}
				}
				defs[i].structs = (StructuredDataStruct*)-1;
			}

			if (curdef->indexedArrays)
			{
				buf->align(ALIGN_TO_4);
				buf->write(curdef->indexedArrays, sizeof(StructuredDataIndexedArray), curdef->indexedArrayCount);
				defs[i].indexedArrays = (StructuredDataIndexedArray*)-1;
			}

			if (curdef->enumedArrays)
			{
				buf->align(ALIGN_TO_4);
				buf->write(curdef->enumedArrays, sizeof(StructuredDataEnumedArray), curdef->enumedArrayCount);
				defs[i].enumedArrays = (StructuredDataEnumedArray*)-1;
			}
		}
	}
	buf->popStream();
}