/// <summary> /// This method reads the terrain from xml and forms the terrain using the methods in location class /// </summary> /// <param name="fileName"></param> public override void Construct(Terrain terrain, string fileName) { //empty the terrain ClearTerrain(terrain); using (XmlReader reader = XmlReader.Create(fileName)) { while (reader.Read()) { if (reader.IsStartElement()) { switch (reader.Name) { case "Location": ILocation iLoc; var name = reader["Name"]; var loc = new Location(name); var markedLoc = new MarkedLocation(loc); if (reader["ExitLocation"] == "true") { iLoc = new ExitLocation(markedLoc); } else { iLoc = markedLoc; } terrain.AddLocation(iLoc); break; } } } } using (XmlReader reader = XmlReader.Create(fileName)) { ILocation iLoc = null; while (reader.Read()) { if (reader.IsStartElement()) { switch (reader.Name) { case "Location": var name = reader["Name"]; iLoc = terrain.GetLocation(name); break; case "Neigbor": var directionStr = reader["Direction"]; if (reader.Read()) { var neigborLocName = reader.Value.Trim(); Directions direction; Enum.TryParse(directionStr, out direction); var neigborLocation = terrain.GetLocation(neigborLocName); if (neigborLocation == null) throw new Exception("There must be a location already defined by the name {0}" + neigborLocation); iLoc.AddNeighbor(terrain.GetLocation(neigborLocName), direction); } break; } } } } }
public void Setup() { location = new ExitLocation(new Location("exitlocation")); }