public void write(DataCollector data, WritingOptions options) { List <WriterFunction <Creature> > creatureWriters = generateList("creatureFields", Creature.PROPERTIES); List <WriterFunction <Inventory> > inventoryWriters = generateList("inventoryFields", Inventory.PROPERTIES); List <WriterFunction <Item> > itemWriters = generateList("itemFields", Item.PROPERTIES); List <WriterFunction <DroppedItem> > droppedItemWriters = generateList("droppedItemFields", DroppedItem.PROPERTIES); List <WriterFunction <Player> > playerWriters = generateList("playerFields", Player.Properties); List <WriterFunction <Structure> > structureWriters = generateList("structureFields", Structure.PROPERTIES); List <WriterFunction <Tribe> > tribeWriters = generateList("tribeFields", Tribe.PROPERTIES); bool.TryParse(p["writeEmpty"], out bool writeEmpty); CommonFunctions.WriteJson(os, (generator, writingOptions) => { generator.WriteStartObject(); generator.WriteObjectFieldStart("creatures"); foreach (int index in data.CreatureMap.Keys) { Creature creature = data.CreatureMap[index]; generator.WriteObjectFieldStart(index.ToString()); foreach (WriterFunction <Creature> writer in creatureWriters) { writer(creature, generator, data, writeEmpty); } generator.WriteEndObject(); } generator.WriteEndObject(); generator.WriteObjectFieldStart("inventories"); foreach (int index in data.InventoryMap.Keys) { Inventory inventory = data.InventoryMap[index]; generator.WriteObjectFieldStart(index.ToString()); foreach (WriterFunction <Inventory> writer in inventoryWriters) { writer(inventory, generator, data, writeEmpty); } generator.WriteEndObject(); } generator.WriteEndObject(); generator.WriteObjectFieldStart("items"); foreach (int index in data.ItemMap.Keys) { Item item = data.ItemMap[index]; generator.WriteObjectFieldStart(index.ToString()); foreach (WriterFunction <Item> writer in itemWriters) { writer(item, generator, data, writeEmpty); } generator.WriteEndObject(); } generator.WriteEndObject(); generator.WriteObjectFieldStart("droppedItems"); foreach (int index in data.DroppedItemMap.Keys) { DroppedItem droppedItem = data.DroppedItemMap[index]; generator.WriteObjectFieldStart(index.ToString()); foreach (WriterFunction <DroppedItem> writer in droppedItemWriters) { writer(droppedItem, generator, data, writeEmpty); } generator.WriteEndObject(); } generator.WriteEndObject(); generator.WriteObjectFieldStart("players"); foreach (long index in data.PlayerMap.Keys) { Player player = data.PlayerMap[index]; generator.WriteObjectFieldStart(index.ToString()); foreach (WriterFunction <Player> writer in playerWriters) { writer(player, generator, data, writeEmpty); } generator.WriteEndObject(); } generator.WriteEndObject(); generator.WriteObjectFieldStart("structures"); foreach (int index in data.StructureMap.Keys) { Structure structure = data.StructureMap[index]; generator.WriteObjectFieldStart(index.ToString()); foreach (WriterFunction <Structure> writer in structureWriters) { writer(structure, generator, data, writeEmpty); } generator.WriteEndObject(); } generator.WriteEndObject(); generator.WriteObjectFieldStart("tribes"); foreach (int index in data.TribeMap.Keys) { Tribe tribe = data.TribeMap[index]; generator.WriteObjectFieldStart(index.ToString()); foreach (WriterFunction <Tribe> writer in tribeWriters) { writer(tribe, generator, data, writeEmpty); } generator.WriteEndObject(); } generator.WriteEndObject(); generator.WriteEndObject(); }, options); }
/// <summary> /// Exports current list of known maps /// </summary> /// <param name="generator"></param> public static void ExportList(JsonTextWriter generator, WritingOptions writingOptions) { JsonSerializer.CreateDefault().Serialize(generator, knownMaps); }
public abstract void WriteJson(JsonTextWriter generator, WritingOptions writingOptions);
public override void WriteJson(JsonTextWriter generator, WritingOptions writingOptions) { generator.WriteValue(ToArray()); }
public void WriteJson(JsonTextWriter generator, WritingOptions writingOptions) { generator.WriteNull(); }
public void WriteJson(JsonTextWriter generator, WritingOptions writingOptions) { generator.WriteValue(Data); }