static void Main(string[] args) { MapDataWriter mapWriter = new MapDataWriter(); ElementDataWriter elementWriter = new ElementDataWriter(); TMXFile tmxFile = TMXFileReader.Load("lvl_1_1.tmx"); Map backdropMap = tmxFile.ToMap("backdrop"); backdropMap = RLEReducer.Reduce(backdropMap); backdropMap.Reduction = Map.ReductionType.RLE; mapWriter.AddMap(backdropMap); ElementList elementList = tmxFile.ToElementList("elements"); elementWriter.AddElementList(elementList); elementWriter.Write("element_data.h"); elementWriter = null; mapWriter.Write("map_data.h"); mapWriter = null; }
public static TMXFile Load(string fileName) { TMXFile file = new TMXFile(); using (XmlReader reader = XmlReader.Create(fileName)) { while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name.ToLower()) { case "map": file.Map.TiledVersion = reader.GetAttribute("tiledversion"); switch (reader.GetAttribute("orientation")) { case "orthogonal": file.Map.Orientation = OrientationType.Orthogonal; break; case "isometric": file.Map.Orientation = OrientationType.Isometric; break; case "staggered": file.Map.Orientation = OrientationType.Staggered; break; case "hexagonal": file.Map.Orientation = OrientationType.Hexagonal; break; default: file.Map.Orientation = OrientationType.Orthogonal; break; } switch (reader.GetAttribute("renderorder")) { case "right-down": file.Map.RenderOrder = RenderOrderType.RightDown; break; case "right-up": file.Map.RenderOrder = RenderOrderType.RightUp; break; case "left-down": file.Map.RenderOrder = RenderOrderType.LeftDown; break; case "left-up": file.Map.RenderOrder = RenderOrderType.LeftUp; break; } file.Map.Width = Int32.Parse(reader.GetAttribute("width")); file.Map.Height = Int32.Parse(reader.GetAttribute("height")); file.Map.TileWidth = Int32.Parse(reader.GetAttribute("tilewidth")); file.Map.TileHeight = Int32.Parse(reader.GetAttribute("tileheight")); file.Map.NextObjectId = Int32.Parse(reader.GetAttribute("nextobjectid")); break; case "tileset": TMXTileset set = new TMXTileset(); set.FirstGid = Int32.Parse(reader.GetAttribute("firstgid")); set.Source = reader.GetAttribute("source"); if (reader.GetAttribute("name") != null) { set.Name = reader.GetAttribute("name"); } if (reader.GetAttribute("tilewidth") != null) { set.TileWidth = Int32.Parse(reader.GetAttribute("tilewidth")); } if (reader.GetAttribute("tileheight") != null) { set.TileHeight = Int32.Parse(reader.GetAttribute("tileheight")); } if (reader.GetAttribute("tilecount") != null) { set.TileCount = Int32.Parse(reader.GetAttribute("tilecount")); } if (reader.GetAttribute("columns") != null) { set.Columns = Int32.Parse(reader.GetAttribute("columns")); } if (set.Source != null) { set = LoadTileset(set, set.Source); } file.Map.Tilesets.Add(set); set = null; break; case "layer": TMXLayer layer = new TMXLayer(); layer.Name = reader.GetAttribute("name"); layer.Width = Int32.Parse(reader.GetAttribute("width")); layer.Height = Int32.Parse(reader.GetAttribute("height")); if (reader.ReadToDescendant("data")) { TMXData dat = new TMXData(); switch (reader.GetAttribute("encoding")) { case "base64": dat.Encoding = EncodingType.base64; break; case "csv": dat.Encoding = EncodingType.csv; break; } dat.Value = reader.ReadInnerXml(); layer.Data = dat; dat = null; } file.Map.Layers.Add(layer); break; } break; case XmlNodeType.Text: break; } } } return(file); }