public async Task <MinesweeperTable> LoadAsync(string path)
        {
            using (StreamReader reader = new StreamReader(path)) // fájl megnyitása
            {
                String line = await reader.ReadLineAsync();

                MinesweeperTable table = new MinesweeperTable(Int32.Parse(line));
                line = await reader.ReadLineAsync();

                Enum.TryParse(line, out Player player);
                table.CurrPlayer = player;
                for (Int32 i = 0; i < table.Size; i++)
                {
                    for (Int32 j = 0; j < table.Size; j++)
                    {
                        line = await reader.ReadLineAsync();

                        String[] split;
                        split = line.Split(' ');
                        table.Map[i, j].value = Int32.Parse(split[0]);
                        Enum.TryParse(split[1], out FieldType fieldType);
                        table.Map[i, j].fieldType = fieldType;
                        table.Map[i, j].visible   = Boolean.Parse(split[2]);
                    }
                }
                return(table);
            }
        }
        public async Task SaveAsync(string path, MinesweeperTable gameTable)
        {
            using (StreamWriter writer = new StreamWriter(path)) // fájl megnyitása
            {
                await writer.WriteLineAsync(gameTable.Size.ToString());

                await writer.WriteLineAsync(gameTable.CurrPlayer.ToString());

                for (Int32 i = 0; i < gameTable.Size; i++)
                {
                    for (Int32 j = 0; j < gameTable.Size; j++)
                    {
                        await writer.WriteLineAsync(gameTable.Map[i, j].value.ToString() + " " + gameTable.Map[i, j].fieldType.ToString() + " " + gameTable.Map[i, j].visible.ToString());
                    }
                }
            }
        }
Example #3
0
        public async Task <MinesweeperTable> LoadAsync(string path)
        {
            GameDb game = await _context.Games
                          .Include(g => g.Fields)
                          .SingleAsync(g => g.Name == path);             // játék állapot lekérdezése

            MinesweeperTable table = new MinesweeperTable(game.MapSize); // játéktábla modell létrehozása

            table.CurrPlayer = game.Player;
            table.Size       = game.MapSize;

            foreach (FieldDb field in game.Fields) // mentett mezők feldolgozása
            {
                table.Map[field.X, field.Y].fieldType = field.FieldType;
                table.Map[field.X, field.Y].value     = field.Value;
                table.Map[field.X, field.Y].visible   = field.Visibility;
            }

            return(table);
        }
Example #4
0
        public async Task SaveAsync(string path, MinesweeperTable gameTable)
        {
            // játékmentés keresése azonos névvel
            GameDb overwriteGame = await _context.Games
                                   .Include(g => g.Fields)
                                   .SingleOrDefaultAsync(g => g.Name == path);

            if (overwriteGame != null)
            {
                _context.Games.Remove(overwriteGame); // törlés
            }
            GameDb dbGame = new GameDb
            {
                Name    = path,
                MapSize = gameTable.Size,
                Player  = gameTable.CurrPlayer
            }; // új mentés létrehozása

            for (Int32 i = 0; i < gameTable.Size; i++)
            {
                for (Int32 j = 0; j < gameTable.Size; j++)
                {
                    FieldDb field = new FieldDb
                    {
                        X          = i,
                        Y          = j,
                        Value      = gameTable.Map[i, j].value,
                        Visibility = gameTable.Map[i, j].visible,
                        FieldType  = gameTable.Map[i, j].fieldType
                    };
                    dbGame.Fields.Add(field);
                }
            } // mezők mentése

            _context.Games.Add(dbGame); // mentés hozzáadása a perzisztálandó objektumokhoz
            await _context.SaveChangesAsync(); // mentés az adatbázisba
        }