protected override void Write(ContentWriter output, LevelContent value) { // Project output.WriteExternalReference(value.ProjectReference); // Values/attributes output.Write(value.Values.Count); if (value.Values.Count > 0) { foreach (ValueContent valueContent in value.Values) { ValueContentWriter.Write(output, valueContent); } } // Height output.Write(value.Height); // Width output.Write(value.Width); // Layers output.Write(value.Layers.Count); if (value.Layers.Count > 0) { foreach (LayerContent layerContent in value.Layers) { LayerContentWriter.Write(output, layerContent); } } }
public void TestValueContentWriter() { var writer = new ValueContentWriter(); var builder = new StringBuilder(); using (var xmlWriter = CreateWriter(builder)) { xmlWriter.WriteStartElement("root"); writer.Write(1, xmlWriter); xmlWriter.WriteEndElement(); } builder.ToString().AssertEqualsXml("<root>1</root>"); }
internal static void Write(ContentWriter writer, LayerContent content) { if (content is GridLayerContent) { GridLayerContent gridLayer = content as GridLayerContent; writer.Write("g"); writer.Write(gridLayer.Name); if (gridLayer.RectangleData != null && gridLayer.RectangleData.Count > 0) { writer.Write(gridLayer.RectangleData.Count); foreach (Rectangle rect in gridLayer.RectangleData) { writer.Write(rect.X); writer.Write(rect.Y); writer.Write(rect.Width); writer.Write(rect.Height); } } else if (!string.IsNullOrEmpty(gridLayer.RawData)) { writer.Write(gridLayer.RawData); } } else if (content is TileLayerContent) { TileLayerContent tileLayer = content as TileLayerContent; writer.Write("t"); writer.Write(tileLayer.Name); writer.Write(tileLayer.TileHeight); writer.Write(tileLayer.TileWidth); writer.Write(tileLayer.Tilesets.Count); if (tileLayer.Tilesets.Count > 0) { foreach (string tileset in tileLayer.Tilesets) { writer.Write(tileset); } } writer.Write(tileLayer.Tiles.Count); if (tileLayer.Tiles.Count > 0) { foreach (TileContent tile in tileLayer.Tiles) { writer.Write(tile.Height); writer.Write(tile.Position); writer.Write(tile.SourceIndex); writer.Write(tile.TextureOffset); writer.Write(tile.TilesetName); writer.Write(tile.Width); } } } else if (content is ObjectLayerContent) { ObjectLayerContent objLayer = content as ObjectLayerContent; writer.Write("o"); writer.Write(objLayer.Name); writer.Write(objLayer.Objects.Count); if (objLayer.Objects.Count > 0) { foreach (ObjectContent obj in objLayer.Objects) { writer.Write(obj.Name); writer.Write(obj.Origin); writer.Write(obj.Position); writer.Write(obj.Rotation); writer.Write(obj.Width); writer.Write(obj.Height); writer.Write(obj.Source.X); writer.Write(obj.Source.Y); writer.Write(obj.Source.Width); writer.Write(obj.Source.Height); writer.Write(obj.IsTiled); writer.WriteExternalReference(obj.TextureReference); writer.Write(obj.Values.Count); if (obj.Values.Count > 0) { foreach (ValueContent valueContent in obj.Values) { ValueContentWriter.Write(writer, valueContent); } } writer.Write(obj.Nodes.Count); if (obj.Nodes.Count > 0) { foreach (OgmoXNAPipelineExtensions.ContentItems.NodeContent nodeContent in obj.Nodes) { writer.Write(nodeContent.Position); } } } } } }