Example #1
0
        public TmxLayer(XMLReader xLayer, int width, int height)
        {
            Name   = xLayer.Attribute("name") ?? "";
            Width  = width;
            Height = height;

            Opacity = xLayer.AttributeFloatN("opacity") ?? 1.0f;
            Visible = xLayer.AttributeBoolN("visible") ?? true;
            OffsetX = xLayer.AttributeFloat("offsetx");
            OffsetY = xLayer.AttributeFloat("offsety");

            Properties = TmxHelpers.GetPropertyDict(xLayer.Element("properties"));

            // Not a layer which contains tiles.
            if (width == 0)
            {
                return;
            }
            XMLReader xData    = xLayer.Element("data");
            string    encoding = xData.Attribute("encoding");

            Tiles = new Collection <TmxLayerTile>();
            switch (encoding)
            {
            case "csv":
            {
                string csvData = xData.CurrentContents();
                foreach (string s in csvData.Split(','))
                {
                    uint gid = uint.Parse(s.Trim());
                    Tiles.Add(new TmxLayerTile(gid));
                }

                break;
            }

            case null:
            {
                foreach (XMLReader e in xData.Elements("tile"))
                {
                    uint gid = e.AttributeUInt("gid");
                    Tiles.Add(new TmxLayerTile(gid));
                }

                break;
            }

            default:
                Engine.Log.Warning($"Unknown tmx layer encoding {encoding}", MessageSource.TMX);
                return;
            }
        }