public TmxLayer(XMLReader xLayer, int width, int height) { Name = xLayer.Attribute("name"); Width = width; Height = height; Opacity = xLayer.AttributeDoubleN("opacity") ?? 1.0; Visible = xLayer.AttributeBoolN("visible") ?? true; OffsetX = (float)xLayer.AttributeDouble("offsetx"); OffsetY = (float)xLayer.AttributeDouble("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; } }