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(); }
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 }
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(); }