public GridLayerContent(XmlNode node, LevelContent level, GridLayerSettingsContent settings) : base(node) { if (settings.ExportAsObjects) { this.RectangleData = new List<Rectangle>(); foreach (XmlNode rectNode in node.SelectNodes("rect")) { Rectangle rect = Rectangle.Empty; if (rectNode.Attributes["x"] != null) rect.X = int.Parse(rectNode.Attributes["x"].Value, CultureInfo.InvariantCulture); if (rectNode.Attributes["y"] != null) rect.Y = int.Parse(rectNode.Attributes["y"].Value, CultureInfo.InvariantCulture); if (rectNode.Attributes["w"] != null) rect.Width = int.Parse(rectNode.Attributes["w"].Value, CultureInfo.InvariantCulture); if (rectNode.Attributes["h"] != null) rect.Height = int.Parse(rectNode.Attributes["h"].Value, CultureInfo.InvariantCulture); if (rect != Rectangle.Empty) this.RectangleData.Add(rect); } } else { // Read in XML as a single un-delimited string value. string rawData = string.Join(string.Empty, node.InnerText.Split(new string[] { settings.NewLine }, StringSplitOptions.None)); // Convert this string to byte data. byte[] data = System.Text.Encoding.UTF8.GetBytes(rawData); // Convert byte data to base 64 string. this.RawData = Convert.ToBase64String(data); } }
internal static void Write(ContentWriter writer, LayerSettingsContent content) { if (content is GridLayerSettingsContent) { GridLayerSettingsContent gContent = content as GridLayerSettingsContent; writer.Write("g"); writer.Write(gContent.GridColor); writer.Write(gContent.GridDrawSize); writer.Write(gContent.GridSize); writer.Write(gContent.Name); writer.Write(gContent.ExportAsObjects); writer.Write(gContent.NewLine); } else if (content is ObjectLayerSettingsContent) { ObjectLayerSettingsContent oContent = content as ObjectLayerSettingsContent; writer.Write("o"); writer.Write(oContent.GridColor); writer.Write(oContent.GridDrawSize); writer.Write(oContent.GridSize); writer.Write(oContent.Name); } else if (content is TileLayerSettingsContent) { TileLayerSettingsContent tContent = content as TileLayerSettingsContent; writer.Write("t"); writer.Write(tContent.GridColor); writer.Write(tContent.GridDrawSize); writer.Write(tContent.GridSize); writer.Write(tContent.Name); writer.Write(tContent.ExportTileIDs); writer.Write(tContent.ExportTileSize); writer.Write(tContent.MultipleTilesets); } }
internal static LayerSettingsContent Parse(XmlNode node) { LayerSettingsContent content = null; switch (node.Name) { case "grid": content = new GridLayerSettingsContent(node); break; case "tiles": content = new TileLayerSettingsContent(node); break; case "objects": content = new ObjectLayerSettingsContent(node); break; } return content; }
internal static LayerSettingsContent Read(XmlNode node) { LayerSettingsContent content = null; switch (node.Name) { case "grid": content = new GridLayerSettingsContent(node); break; case "tiles": content = new TileLayerSettingsContent(node); break; case "objects": content = new ObjectLayerSettingsContent(node); break; } return(content); }