/// <summary> /// Loads a map in tIDE format from the given stream /// </summary> /// <param name="stream">Input stream</param> /// <returns>Map instance loaded from stream</returns> public Map Load(Stream stream) { XmlTextReader xmlReader = new XmlTextReader(stream); xmlReader.WhitespaceHandling = WhitespaceHandling.None; XmlHelper xmlHelper = new XmlHelper(xmlReader); xmlHelper.AdvanceDeclaration(); xmlHelper.AdvanceStartElement("Map"); string mapId = xmlHelper.GetAttribute("Id"); Map map = new Map(mapId); xmlHelper.AdvanceStartElement("Description"); string mapDescription = xmlHelper.GetCData(); xmlHelper.AdvanceEndElement("Description"); map.Description = mapDescription; LoadTileSheets(xmlHelper, map); LoadLayers(xmlHelper, map); LoadProperties(xmlHelper, map); return(map); }
public Map Load(Stream stream) { // not implemented yet throw new Exception("This format is not supported yet"); XmlTextReader xmlReader = new XmlTextReader(stream); xmlReader.WhitespaceHandling = WhitespaceHandling.None; XmlHelper xmlHelper = new XmlHelper(xmlReader); xmlHelper.AdvanceDeclaration(); xmlHelper.AdvanceStartElement("map"); string orientation = xmlHelper.GetAttribute("orientation"); if (orientation != "orthogonal") { throw new Exception("Only orthogonal Tiled maps are supported."); } int mapWidth = xmlHelper.GetIntAttribute("width"); int mapHeight = xmlHelper.GetIntAttribute("height"); int tileWidth = xmlHelper.GetIntAttribute("tilewidth"); int tileHeight = xmlHelper.GetIntAttribute("tileheight"); Map map = new Map(); while (true) { XmlNodeType xmlNodeType = xmlHelper.AdvanceNode(); if (xmlNodeType == XmlNodeType.EndElement) { break; } if (xmlReader.Name == "tileset") { LoadTileSet(xmlHelper, map); } else if (xmlReader.Name == "layer") { LoadLayer(xmlHelper, map); } } LoadProperties(xmlHelper, map); return(map); }
/// <summary> /// Loads a map in tIDE format from the given stream /// </summary> /// <param name="stream">Input stream</param> /// <returns>Map instance loaded from stream</returns> public Map Load(Stream stream) { #if WINDOWS XmlTextReader xmlReader = new XmlTextReader(stream); xmlReader.WhitespaceHandling = WhitespaceHandling.None; XmlHelper xmlHelper = new XmlHelper(xmlReader); xmlHelper.AdvanceDeclaration(); xmlHelper.AdvanceStartElement("Map"); string mapId = xmlHelper.GetAttribute("Id"); Map map = new Map(mapId); xmlHelper.AdvanceStartElement("Description"); string mapDescription = xmlHelper.GetCData(); xmlHelper.AdvanceEndElement("Description"); map.Description = mapDescription; LoadTileSheets(xmlHelper, map); LoadLayers(xmlHelper, map); LoadProperties(xmlHelper, map); return map; #else throw new NotSupportedException(); #endif }
public Map Load(Stream stream) { XmlTextReader xmlReader = new XmlTextReader(stream); xmlReader.WhitespaceHandling = WhitespaceHandling.None; XmlHelper xmlHelper = new XmlHelper(xmlReader); xmlHelper.AdvanceDeclaration(); xmlHelper.AdvanceStartElement("map"); string orientation = xmlHelper.GetAttribute("orientation"); if (orientation != "orthogonal") throw new Exception("Only orthogonal Tiled maps are supported."); int mapWidth = xmlHelper.GetIntAttribute("width"); int mapHeight = xmlHelper.GetIntAttribute("height"); int tileWidth = xmlHelper.GetIntAttribute("tilewidth"); int tileHeight = xmlHelper.GetIntAttribute("tileheight"); Map map = new Map(); while (true) { XmlNodeType xmlNodeType = xmlHelper.AdvanceNode(); if (xmlNodeType == XmlNodeType.EndElement) break; if (xmlReader.Name == "properties") LoadProperties(xmlHelper, map); else if (xmlReader.Name == "tileset") LoadTileSet(xmlHelper, map); else if (xmlReader.Name == "layer") LoadLayer(xmlHelper, map); else xmlHelper.SkipToEndElement(xmlReader.Name); } // try to obtain map description via custom property if (map.Properties.ContainsKey("@Description")) map.Description = map.Properties["@Description"]; return map; }