public static TileSheet FromXml(XElement sheetElement, string name, Texture texture)
        {
            var tileSize = MathUtil.ParseSize(sheetElement.Element("TileSize").Value);
            var tileSheet = new TileSheet(texture, name, tileSize);

            foreach (var definitionElement in sheetElement.Elements("Definitions").Elements())
            {
                var tileDefinition = FromXml(definitionElement, tileSheet);
                tileSheet.AddTileDefinition(tileDefinition);
            }

            return tileSheet;
        }
 public TileDefinition(TileSheet sheet, string name, RectangleInt rectangle)
 {
     this.Sheet = sheet;
     this.Name = name;
     this.Rectangle = rectangle;
 }
        private static TileDefinition FromXml(XElement definitionElement, TileSheet tileSheet)
        {
            var name = definitionElement.Attribute("name").Value;
            var rectangle = MathUtil.ParseRectangle(definitionElement.Attribute("rectangle").Value);

            return new TileDefinition(tileSheet, name, rectangle);
        }
 public static IEnumerable<object> GetXml(TileSheet tileSheet)
 {
     yield return new XElement("TileSize", tileSheet.TilesSize);
     yield return new XElement("Definitions", tileSheet.Definitions.Select(d => GetXml(d.Value)));
 }
 public void AddTileSheet(TileSheet sheet)
 {
     this.tileSheetDictionary.Add(sheet.Name, sheet);
 }
Example #6
0
        private static TileSheet LoadTileset(TmxTileset tileset, Size tilesSize, GameResourceManager gameResourceManager)
        {
            var texturePath = Path.Combine(Path.GetDirectoryName(tileset.Image.Source), Path.GetFileNameWithoutExtension(tileset.Image.Source))
                .Remove(0, ContentFolder.Length + 1);
            //var texture = gameResourceManager.GetTexture(@"Tiled\tmw_desert_spacing");
            var texture = gameResourceManager.GetTexture(texturePath);
            //var sheet = new TileSheet(texture, "Desert", new Size(tmxMap.TileWidth, tmxMap.TileHeight));

            var sheet = gameResourceManager.GetTileSheet(tileset.Name);
            if (sheet == null)
            {
                sheet = new TileSheet(texture, tileset.Name, tilesSize);

                var margin = tileset.Margin;
                var spacing = tileset.Spacing;
                var numTileWidth = (tileset.Image.Width - (2 * margin) + spacing) / (tileset.TileWidth + spacing);
                var numTileHeight = (tileset.Image.Height - (2 * margin) + spacing) / (tileset.TileHeight + spacing);

                for (var j = 0; j < numTileHeight; j++)
                    for (var i = 0; i < numTileWidth; i++)
                        sheet.CreateTileDefinition((tileset.FirstGid + i + numTileWidth * j).ToString(),
                            new Point(margin + i * (tileset.TileWidth + spacing), margin + j * (tileset.TileHeight + spacing)));

                gameResourceManager.AddTileSheet(sheet);
            }

            return sheet;
        }
        private TileLayer CreateTileLayer()
        {
            var texture = this.ResourceManager.GetTexture(@"Sandbox\TileSheet");
            var sheet = new TileSheet(texture, "Background", new Size(16, 16));
            var red = sheet.CreateTileDefinition("red", new Point(0, 0));
            var green = sheet.CreateTileDefinition("green", new Point(16, 0));
            var yellow = sheet.CreateTileDefinition("yellow", new Point(32, 0));
            var purple = sheet.CreateTileDefinition("purple", new Point(0, 16));
            sheet.CreateTileDefinition("orange", new Point(16, 16));
            sheet.CreateTileDefinition("blue", new Point(32, 16));

            //sheet.Save(@"C:\Users\Pascal\Dev\DotNet\GitHub\XNAGameEngine2D\Color TileSheet.xml");

            this.ResourceManager.AddTileSheet(sheet);

            var tileLayer = new TileLayer("Tiles", new Size(32, 32), new Size(16, 16));
            tileLayer[0, 0] = purple;
            tileLayer[0, 1] = green;
            tileLayer[1, 0] = yellow;
            tileLayer[1, 1] = red;
            tileLayer[10, 10] = purple;
            tileLayer[4, 20] = green;

            tileLayer.ParallaxScrollingVector = new Vector(2.0f, 2.0f);
            tileLayer.Offset = new Vector(0, -20);

            return tileLayer;
        }