예제 #1
0
        private void Load(XmlElement tilesetElement)
        {
            Name     = tilesetElement.GetAttribute("name");
            TileSize = new Size(int.Parse(tilesetElement.GetAttribute("tilewidth")), int.Parse(tilesetElement.GetAttribute("tileheight")));
            Spacing  = tilesetElement.HasAttribute("spacing") ? float.Parse(tilesetElement.GetAttribute("spacing"), System.Globalization.CultureInfo.InvariantCulture) : 0f;
            Margin   = tilesetElement.HasAttribute("margin") ? float.Parse(tilesetElement.GetAttribute("margin"), System.Globalization.CultureInfo.InvariantCulture) : 0f;
            Count    = int.Parse(tilesetElement.GetAttribute("tilecount"));
            Columns  = int.Parse(tilesetElement.GetAttribute("columns"));

            if (tilesetElement.HasAttribute("firstgid"))
            {
                FirstGid = int.Parse(tilesetElement.GetAttribute("firstgid"));
            }

            XmlElement e = tilesetElement["tileoffset"];

            if (e != null)
            {
                Offset = new Vector2(float.Parse(e.GetAttribute("x"), System.Globalization.CultureInfo.InvariantCulture), float.Parse(e.GetAttribute("y"), System.Globalization.CultureInfo.InvariantCulture));
            }

            e = tilesetElement["properties"];
            if (e != null)
            {
                foreach (XmlElement propertyElement in e)
                {
                    Properties.Add(propertyElement.GetAttribute("name"), new TiledProperty(propertyElement));
                }
            }

            e = tilesetElement["image"];
            if (e != null)
            {
                SpriteSheet = new TiledImage(Path, e);
            }

            e = tilesetElement["terraintypes"];
            if (e != null)
            {
                foreach (XmlElement terrainTypeElement in e)
                {
                    TerrainTypes.Add(new TiledTerrainType(terrainTypeElement));
                }
            }

            foreach (XmlElement tileElement in tilesetElement.GetElementsByTagName("tile"))
            {
                Tiles.Add(uint.Parse(tileElement.GetAttribute("id")), new TiledTilesetTile(Path, tileElement));
            }
        }
예제 #2
0
        public TiledImageLayer(string tmxPath, XmlElement layerElement)
        {
            Name    = layerElement.GetAttribute("name");
            Opacity = layerElement.HasAttribute("opacity") ? float.Parse(layerElement.GetAttribute("opacity"), System.Globalization.CultureInfo.InvariantCulture) : 1f;
            Visible = layerElement.HasAttribute("visible") ? (int.Parse(layerElement.GetAttribute("visible")) != 0) : true;
            Offset  = new Vector2(layerElement.HasAttribute("offsetx") ? float.Parse(layerElement.GetAttribute("offsetx"), System.Globalization.CultureInfo.InvariantCulture) : 0f, layerElement.HasAttribute("offsety") ? float.Parse(layerElement.GetAttribute("offsety"), System.Globalization.CultureInfo.InvariantCulture) : 0f);

            Properties = new Dictionary <string, TiledProperty>();
            XmlElement e = layerElement["properties"];

            if (e != null)
            {
                foreach (XmlElement propertyElement in e)
                {
                    Properties.Add(propertyElement.GetAttribute("name"), new TiledProperty(propertyElement));
                }
            }

            e = layerElement["image"];
            if (e != null)
            {
                Image = new TiledImage(tmxPath, e);
            }
        }
예제 #3
0
        public TiledTilesetTile(string tsxPath, XmlElement tileElement)
        {
            Properties  = new Dictionary <string, TiledProperty>();
            Id          = int.Parse(tileElement.GetAttribute("id"));
            Probability = tileElement.HasAttribute("probability") ? float.Parse(tileElement.GetAttribute("probability"), System.Globalization.CultureInfo.InvariantCulture) : 1f;

            TerrainCorners = new int?[4] {
                null, null, null, null
            };
            if (tileElement.HasAttribute("terrain"))
            {
                string[] terrainCorners = tileElement.GetAttribute("terrain").Split(',');
                if (terrainCorners[0].Length > 0)
                {
                    TerrainTopLeftCorner = int.Parse(terrainCorners[0]);
                }

                if (terrainCorners[1].Length > 0)
                {
                    TerrainTopRightCorner = int.Parse(terrainCorners[1]);
                }

                if (terrainCorners[2].Length > 0)
                {
                    TerrainBottomLeftCorner = int.Parse(terrainCorners[2]);
                }

                if (terrainCorners[3].Length > 0)
                {
                    TerrainBottomRightCorner = int.Parse(terrainCorners[3]);
                }
            }

            XmlElement e = tileElement["animation"];

            if (e != null)
            {
                Animation = new TiledAnimation(e);
            }

            e = tileElement["objectgroup"];
            if (e != null)
            {
                ObjectGroup = new TiledObjectGroup(e);
            }

            e = tileElement["image"];
            if (e != null)
            {
                Image = new TiledImage(tsxPath, e);
            }

            e = tileElement["properties"];
            if (e != null)
            {
                foreach (XmlElement propertyElement in e)
                {
                    Properties.Add(propertyElement.GetAttribute("name"), new TiledProperty(propertyElement));
                }
            }
        }