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; } }