Exemple #1
0
        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;
        }