Exemplo n.º 1
0
        public async Task <ActionResult> OnPost()
        {
            if (FieldSize == "Back to Main Menu")
            {
                return(RedirectToPage("./MainMenu"));
            }

            if (ModelState.IsValid)
            {
                if (FieldSize == "Small Field")
                {
                    GameOptions.Height = 9;
                    GameOptions.Width  = 9;
                    GameOptions.Bombs  = 10;
                }

                if (FieldSize == "Medium Field")
                {
                    GameOptions.Height = 16;
                    GameOptions.Width  = 16;
                    GameOptions.Bombs  = 40;
                }

                if (FieldSize == "Large Field")
                {
                    GameOptions.Height = 16;
                    GameOptions.Width  = 30;
                    GameOptions.Bombs  = 99;
                }

                if (GameOptions.Bombs > GameOptions.Height * GameOptions.Width - 1)
                {
                    BombAmount = false;
                }

                foreach (GameSettings settings in _context.GameSettingses)
                {
                    if (settings.GameName == GameOptions.GameName)
                    {
                        isCorrect = false;
                    }
                }

                if (!isCorrect || !BombAmount)
                {
                    return(RedirectToPage("./StartGame", new { correct = isCorrect, bombAmount = BombAmount }));
                }

                var game = new GameEngine.Game(GameOptions.Height, GameOptions.Width);
                game.PlaceBomb(GameOptions.Height, GameOptions.Width, GameOptions.Bombs);
                string gameCells = "";
                foreach (CellState variable in game.GetBoard())
                {
                    gameCells += Convert.ToInt32(variable) + ",";
                }

                gameCells = gameCells.Remove(gameCells.Length - 1);

                var gameState = new GameSettings()
                {
                    BoardWidth  = GameOptions.Width,
                    BoardHeight = GameOptions.Height,
                    GameName    = GameOptions.GameName,
                    BombAmount  = GameOptions.Bombs,
                    GameState   = gameCells
                };
                _context.GameSettingses.Add(gameState);
                await _context.SaveChangesAsync();

                return(RedirectToPage("./PlayGame", new { gameId = gameState.GameId }));
            }

            return(Page());
        }