public XElement Store(Map map) { TiledMap tiledMap1 = new TiledMap(); tiledMap1.Version = "1.0"; tiledMap1.Orientation = "orthogonal"; int layerWidth = map.GetLayer("Back").LayerWidth; tiledMap1.Width = layerWidth; int layerHeight = map.GetLayer("Back").LayerHeight; tiledMap1.Height = layerHeight; int tileWidth = 16; // map.GetLayer("Back").TileWidth; tiledMap1.TileWidth = tileWidth; int tileHeight = 16; //map.GetLayer("Back").TileHeight; tiledMap1.TileHeight = tileHeight; List <TiledProperty> tiledPropertyList = new List <TiledProperty>(); tiledMap1.Properties = tiledPropertyList; List <TiledTileSet> tiledTileSetList = new List <TiledTileSet>(); tiledMap1.TileSets = tiledTileSetList; List <TiledLayer> tiledLayerList = new List <TiledLayer>(); tiledMap1.Layers = tiledLayerList; List <TiledObjectGroup> tiledObjectGroupList = new List <TiledObjectGroup>(); tiledMap1.ObjectGroups = tiledObjectGroupList; TiledMap tiledMap2 = tiledMap1; if (map.Description.Length > 0) { map.Properties["@Description"] = map.Description; } foreach (KeyValuePair <string, PropertyValue> property in map.Properties) { tiledMap2.Properties.Add(new TiledProperty(property.Key, property.Value)); } StoreTileSets(map, tiledMap2); StoreLayers(map, tiledMap2); StoreImageLayers(map, tiledMap2); StoreObjects(map, tiledMap2); return(tiledMap2.ToXml()); }
internal void StoreObjects(Map map, TiledMap tiledMap) { foreach (Layer layer in map.Layers) { TiledObjectGroup tiledObjectGroup = new TiledObjectGroup() { Name = layer.Id, Objects = new List <TiledObject>() }; for (int index1 = 0; index1 < layer.LayerHeight; ++index1) { for (int index2 = 0; index2 < layer.LayerWidth; ++index2) { Tile tile = layer.Tiles[index2, index1]; if ((tile != null ? tile.Properties : null) != null && tile.Properties.Any <KeyValuePair <string, PropertyValue> >()) { TiledObject tiledObject = new TiledObject() { ObjectId = tiledMap.NextObjectId, Name = "TileData", XPos = index2 * 16, YPos = index1 * 16, Width = 16, Height = 16, Properties = new List <TiledProperty>() }; foreach (KeyValuePair <string, PropertyValue> property in tile.Properties) { tiledObject.Properties.Add(new TiledProperty(property.Key, property.Value)); } tiledObjectGroup.Objects.Add(tiledObject); ++tiledMap.NextObjectId; } } } tiledMap.ObjectGroups.Add(tiledObjectGroup); } }
internal void StoreLayers(Map map, TiledMap tiledMap) { foreach (Layer layer in map.Layers) { TiledLayer tiledLayer1 = new TiledLayer(); tiledLayer1.Name = layer.Id; tiledLayer1.Width = layer.LayerWidth; tiledLayer1.Height = layer.LayerHeight; int num1 = !layer.Visible ? 1 : 0; tiledLayer1.Hidden = num1 != 0; tiledLayer1.Data = new TiledLayerData() { EncodingType = "csv" }; List <TiledProperty> tiledPropertyList = new List <TiledProperty>(); tiledLayer1.Properties = tiledPropertyList; TiledLayer tiledLayer2 = tiledLayer1; List <int> intList = new List <int>(); for (int index1 = 0; index1 < layer.LayerHeight; ++index1) { for (int index2 = 0; index2 < layer.LayerWidth; ++index2) { Tile tile = layer.Tiles[index2, index1]; if (tile is AnimatedTile animatedTile) { foreach (TiledTileSet tileSet in tiledMap.TileSets.Where(t => t.SheetName == animatedTile.TileSheet.Id)) { TiledTile tiledTile1 = tileSet.Tiles.FirstOrDefault(tiledTile => tiledTile.TileId == tile.TileIndex); if (tiledTile1 == null) { tileSet.Tiles.Add(new TiledTile() { TileId = tile.TileIndex, Animation = ((IEnumerable <StaticTile>)animatedTile.TileFrames).Select(frame => new TiledAnimationFrame() { TileId = frame.TileIndex, Duration = (int)animatedTile.FrameInterval }).ToList() }); } else if (tiledTile1.Animation == null) { tiledTile1.Animation = ((IEnumerable <StaticTile>)animatedTile.TileFrames).Select(frame => new TiledAnimationFrame() { TileId = frame.TileIndex, Duration = (int)animatedTile.FrameInterval }).ToList(); } } } int num2 = 0; if (tile != null) { int tileIndex = tile.TileIndex; TiledTileSet tiledTileSet = tiledMap.TileSets.FirstOrDefault(tileSet => tileSet.SheetName == tile.TileSheet.Id); int num3 = tiledTileSet != null ? tiledTileSet.FirstGid : 1; num2 = tileIndex + num3; } intList.Add(num2); } } tiledLayer2.Data.Data = string.Join(",", intList); if (layer.Description.Length > 0) { tiledLayer2.Properties.Add(new TiledProperty("@Description", layer.Description)); } tiledMap.Layers.Add(tiledLayer2); } }
internal void StoreTileSets(Map map, TiledMap tiledMap) { int num = 1; foreach (TileSheet tileSheet in map.TileSheets) { TiledTileSet tiledTileSet1 = new TiledTileSet(); tiledTileSet1.FirstGid = num; string id = tileSheet.Id; tiledTileSet1.SheetName = id; int tileWidth = tileSheet.TileWidth; tiledTileSet1.TileWidth = tileWidth; int tileHeight = tileSheet.TileHeight; tiledTileSet1.TileHeight = tileHeight; int spacingWidth = tileSheet.SpacingWidth; tiledTileSet1.Spacing = spacingWidth; int marginWidth = tileSheet.MarginWidth; tiledTileSet1.Margin = marginWidth; int tileCount = tileSheet.TileCount; tiledTileSet1.TileCount = tileCount; int sheetWidth = tileSheet.SheetWidth; tiledTileSet1.Columns = sheetWidth; tiledTileSet1.Image = new TiledTileSetImage() { Source = tileSheet.ImageSource, Width = tileSheet.SheetWidth * tileSheet.TileWidth, Height = tileSheet.SheetHeight * tileSheet.TileHeight }; List <TiledTile> tiledTileList = new List <TiledTile>(); tiledTileSet1.Tiles = tiledTileList; TiledTileSet tiledTileSet2 = tiledTileSet1; foreach (KeyValuePair <string, PropertyValue> property in tileSheet.Properties) { if (property.Key.StartsWith("@Tile@") || property.Key.StartsWith("@TileIndex@")) { string[] strArray = property.Key.Split(new char[1] { '@' }, StringSplitOptions.RemoveEmptyEntries); int tileIndex = int.Parse(strArray[1]); string name = strArray[2]; TiledTile tiledTile1; if ((tiledTile1 = tiledTileSet2.Tiles.FirstOrDefault(tiledTile => tiledTile.TileId == tileIndex)) != null) { tiledTile1.Properties.Add(new TiledProperty(name, tileSheet.Properties[property.Key])); } else { tiledTileSet2.Tiles.Add(new TiledTile() { TileId = tileIndex, Properties = new List <TiledProperty>() { new TiledProperty(name, tileSheet.Properties[property.Key]) } }); } } } tiledMap.TileSets.Add(tiledTileSet2); num += tileSheet.TileCount; } }
public Map Load(Stream stream) { TiledMap = new TiledMap(XElement.Load(stream)); return(Load(TiledMap)); }
public Map Load(XmlReader xmlReader) { TiledMap = new TiledMap(XElement.Load(xmlReader)); return(Load(TiledMap)); }
public void StoreImageLayers(Map map, TiledMap tiled) { }