public Map(sLoadedMap mapInfo, MainGame game) { //Salvando as informações: _mapInfo = mapInfo; mExitTiles = new List<Tile>(); //Instanciando os tiles: _tiles = new Tile[(int)_mapInfo._mapSize.X, (int)_mapInfo._mapSize.Y]; for (int x = 0; x < _mapInfo._mapSize.X; x++) { for (int y = 0; y < _mapInfo._mapSize.Y; y++) { _tiles[x,y] = new Tile(game, _mapInfo.MapTiles[x, y]._type, _mapInfo.MapTiles[x, y]._mapPosition); } } //Acertando as posições de desenho: for (int y = 0; y < _mapInfo._mapSize.Y; y++) { for (int x = (int)_mapInfo._mapSize.X - 1; x >= 0; x--) { //Calculando a posição: _tiles[x, y].Sprite.DrawPosition = new Vector2((x * Tile.TILE_SIZE.X / 2) + (y * Tile.TILE_SIZE.X / 2), (y * Tile.TILE_SIZE.Y / 2) - (x * Tile.TILE_SIZE.Y / 2)); } } //Procurando o Spawn Point e as saídas: foreach (var tile in _tiles) { //É um spawn? if(tile.Type == TILE_TYPES.SPAWN) { mSpawnPoint = tile; } if(tile.Type == TILE_TYPES.EXIT) { mExitTiles.Add(tile); } } }
async Task LoadMapFiles() { //Buscando a pasta atual dos arquivos: var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; folder = await folder.GetFolderAsync("Stages"); //Lendo todos os arquivos na Pasta: var files = await folder.GetFilesAsync(); //Percorrendo os arquivoc encontrados e inserindo eles na lista: int _tmpCount = 1; foreach (var file in files) { //Arquivo temporário: var tempFile = new sLoadedMap(); //Salvando o arquivo: tempFile._mapFile = file; //Lendo as informações do mapa: var contents = await Windows.Storage.FileIO.ReadLinesAsync(file); //Obtendo o nome: tempFile._mapName = contents[0]; contents.RemoveAt(0); //Obtendo o tamanho do mapa: var mapSize = contents[0].Split(';'); int mapW = 0, mapH = 0; contents.RemoveAt(0); int.TryParse(mapSize[0], out mapW); int.TryParse(mapSize[0], out mapH); tempFile.MapTiles = new sTileInfo[mapW, mapH]; tempFile._mapSize = new Vector2(mapW, mapH); //Lendo as informações de cada linha: for (int y = 0; y < contents.Count; y++) { //Dividindo cada linha em tiles: var tiles = contents[y].Split(';'); //Processando CADA tile: for (int x = 0; x < tiles.Length; x++) { //Obtendo o tipo do tile: int tileType = 0; int.TryParse(tiles[x], out tileType); //Instanciando o tile com as informações: tempFile.MapTiles[x, y]._type = (TILE_TYPES)tileType; tempFile.MapTiles[x, y]._mapPosition = new Vector2(x, y); } } //Salvando o ID desse mapa: tempFile._mapId = _tmpCount; //Adicionando na lista: _loadedMapFiles.AddLast(tempFile); //Incrementando: _tmpCount++; } //Acabamos de processar os mapas, então salvando o primeiro como default: _currentMap = _loadedMapFiles.First; }