Пример #1
0
        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);
        }
Пример #2
0
 /// <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);
 }
Пример #3
0
 public abstract void WriteJson(JsonTextWriter generator, WritingOptions writingOptions);
 public override void WriteJson(JsonTextWriter generator, WritingOptions writingOptions)
 {
     generator.WriteValue(ToArray());
 }
Пример #5
0
 public void WriteJson(JsonTextWriter generator, WritingOptions writingOptions)
 {
     generator.WriteNull();
 }
Пример #6
0
 public void WriteJson(JsonTextWriter generator, WritingOptions writingOptions)
 {
     generator.WriteValue(Data);
 }