예제 #1
0
파일: TmxMap.cs 프로젝트: chickenlegs0/Luka
        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;
                    }
                }
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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;
                    }
                }
            }
        }