internal void FixExportedTilesets(string relativePath) { XMLSerializer objSerializer = new XMLSerializer(); for (int i = 0; i < Tilesets.Count; ++i) { TmxTileset tmxTileset = Tilesets[i]; if (!string.IsNullOrEmpty(tmxTileset.Source)) { int firstGid = tmxTileset.FirstGId; Tilesets[i] = tmxTileset = objSerializer.LoadFromXMLFile <TmxTileset>(Path.Combine(relativePath, tmxTileset.Source)); tmxTileset.FirstGId = firstGid; if (tmxTileset.TileCount == 0) { int horTiles = System.Convert.ToInt32(Math.Round((float)(tmxTileset.Image.Width - 2 * tmxTileset.Margin) / (tmxTileset.TileWidth + tmxTileset.Spacing))); int verTiles = System.Convert.ToInt32(Math.Round((float)(tmxTileset.Image.Height - 2 * tmxTileset.Margin) / (tmxTileset.TileHeight + tmxTileset.Spacing))); tmxTileset.Columns = horTiles; tmxTileset.TileCount = horTiles * verTiles; } } //if tileset is made of a collection of sprites, tile count needs to include padding tiles (tiles that were removed) if (tmxTileset.Image == null) { TmxTile tmxTile = tmxTileset.TilesWithProperties[tmxTileset.TilesWithProperties.Count - 1]; if (tmxTile.Image != null) { tmxTileset.TileCount = tmxTile.Id + 1; } } } }
public static TmxTilemap LoadFromFile(string sFilePath) { XMLSerializer objSerializer = new XMLSerializer(); TmxMap map = objSerializer.LoadFromXMLFile <TmxMap>(sFilePath); map.FixExportedTilesets(Path.GetDirectoryName(sFilePath)); TmxTilemap tilemap_ret = new TmxTilemap(map); tilemap_ret.FilePathDirectory = Path.GetDirectoryName(sFilePath); tilemap_ret.LoadImageData(); return(tilemap_ret); }
internal void FixExportedTilesets(string relativePath) { XMLSerializer objSerializer = new XMLSerializer(); for (int i = 0; i < Tilesets.Count; ++i) { if (!string.IsNullOrEmpty(Tilesets[i].Source)) { int firstGid = Tilesets[i].FirstGId; Tilesets[i] = objSerializer.LoadFromXMLFile <TmxTileset>(Path.Combine(relativePath, Tilesets[i].Source)); Tilesets[i].FirstGId = firstGid; if (Tilesets[i].TileCount == 0) { int horTiles = System.Convert.ToInt32(Math.Round((float)(Tilesets[i].Image.Width - 2 * Tilesets[i].Margin) / (Tilesets[i].TileWidth + Tilesets[i].Spacing))); int verTiles = System.Convert.ToInt32(Math.Round((float)(Tilesets[i].Image.Height - 2 * Tilesets[i].Margin) / (Tilesets[i].TileHeight + Tilesets[i].Spacing))); Tilesets[i].Columns = horTiles; Tilesets[i].TileCount = horTiles * verTiles; } } } }