public TileMap LoadMap(string sourceFile) { TileMap.Map loadedMap = new TileMap.Map(); loadedMap.rows = new List <TileMap.Row>(); var mapText = Resources.Load <TextAsset>(sourceFile); XDocument xFile = XDocument.Parse(mapText.text); if (xFile == null) { Debug.LogError("No map file found at path " + sourceFile + "; Loading failed!"); return(null); } XElement xMap = xFile.Element(XMLFields.ROOT); var xRows = xMap.Elements(XMLFields.ROW); float rowZ = mapProperties.startingPosition.z; foreach (var xRow in xRows) { if (!LoadRow(rowZ, xRow, loadedMap)) { Debug.LogError("Failed to load map! Couldn't load row with z = " + rowZ.ToString()); return(null); } //If successfully loaded row rowZ += mapProperties.tileWidth; } TileMap tileMap = new TileMap(loadedMap, mapProperties); return(tileMap); }
bool LoadRow(float rowZ, XElement xRow, TileMap.Map virtualMap) { TileMap.Row loadedRow = new TileMap.Row(); loadedRow.cells = new List <TileMap.Cell>(); var xCells = xRow.Elements(XMLFields.CELL); float cellX = mapProperties.startingPosition.x; foreach (var xCell in xCells) { if (!LoadCell(rowZ, cellX, xCell, loadedRow)) { Debug.Log("Couldn't load cell with z = " + rowZ.ToString() + ", x = " + cellX.ToString()); return(false); } cellX += mapProperties.tileWidth; } virtualMap.rows.Add(loadedRow); return(true); }