public GameManagementWindow(GameManagementViewModel viewModel)
        {
            InitializeComponent();

            DataContext           = viewModel;
            viewModel.CloseAction = Close;
        }
Exemple #2
0
        public IActionResult EditGame(int gameId)
        {
            Game?game = gamesTable.GetGameById(gameId);

            if (game is null || game.IsRemoved)
            {
                return(RedirectToAction("GameNotFound", "ErrorPage"));
            }


            User user = usersTable.GetUserByEmail(User.Identity.Name !) !;

            ViewBag.User       = user;
            ViewData["layout"] = "~/Views/Shared/_AuthorizedLayout.cshtml";

            if (!user.IsAdmin)
            {
                return(RedirectToAction("AccessDenied", "ErrorPage"));
            }

            usersTable.SetCurrentlyEditedGame(user, game.Id);

            viewModel = new GameManagementViewModel {
                Game     = game,
                Genres   = genresTable.GetAllGenres(),
                Features = featuresTable.GetAllFeatures()
            };

            return(View(viewModel));
        }
        public async Task <GameManagementViewModel> AddGame([FromBody] GameManagementModel model)
        {
            var user = User.Identity.Name;

            var entity = await _service.CreateGameAsync(model, user);

            GameManagementViewModel viewModel = entity.ToViewModel();

            games.Add(viewModel);

            await _hubContext.Clients.All.GameAdded(viewModel);

            return(viewModel);
        }
Exemple #4
0
        public async Task GameJoin(Guid gameUid, string player, int playerNum)
        {
            GameManagementViewModel persGame = await _service.GetGameViewByUidAsync(gameUid);

            var game = GameStateManager.Instance.GameJoin(Context.ConnectionId, gameUid, player, playerNum, persGame);

            await Groups.AddToGroupAsync(Context.ConnectionId, gameUid.ToString());

            await Clients.Group(gameUid.ToString()).GamePlayerJoin(gameUid, game?.Player1, game?.Player2);

            if (game.Player1 != null && game.Player2 != null)
            {
                await Clients.Group(gameUid.ToString()).GameStart(game.ToShortModel());
            }
        }
Exemple #5
0
        public IActionResult AddGame()
        {
            User user = usersTable.GetUserByEmail(User.Identity.Name !) !;

            ViewBag.User       = user;
            ViewData["layout"] = "~/Views/Shared/_AuthorizedLayout.cshtml";

            if (!user.IsAdmin)
            {
                return(RedirectToAction("AccessDenied", "ErrorPage"));
            }

            viewModel = new GameManagementViewModel {
                Genres   = genresTable.GetAllGenres(),
                Features = featuresTable.GetAllFeatures()
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> JoinGame(Guid gameUid, [FromBody] GameManagementModel model)
        {
            try
            {
                var game = await _service.JoinAsync(gameUid, User.Identity.Name);

                GameManagementViewModel viewModel = game.ToViewModel();

                await _hubContext.Clients.All.GameJoined(viewModel);

                return(Ok(viewModel));
            }
            catch (ArgumentNullException ex)
            {
                return(NotFound(ex.Message));
            }
            catch (GameFullException ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemple #7
0
        public void AddGame()
        {
            GameListEntry newGame = new GameListEntry();

            // Create and show GameManagement view
            GameManagement          gameManagement = new GameManagement(newGame);
            GameManagementViewModel viewModel      = new GameManagementViewModel(gameManagement);
            GameManagementWindow    window         = new GameManagementWindow(viewModel);

            // Result is true if save button is pressed
            if (window.ShowDialog() == true)
            {
                if (_database.AddGame(newGame.ToDatabaseEntry()))
                {
                    _games.Add(newGame);
                }
                else
                {
                    MessageBox.Show("Failed to add game to database", "Data Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
Exemple #8
0
        public void EditGame(GameListEntry entry)
        {
            // Copy entry in case of user cancel
            GameListEntry newEntry = new GameListEntry(entry);

            // Create and show GameManagement view
            GameManagement          gameManagement = new GameManagement(newEntry);
            GameManagementViewModel viewModel      = new GameManagementViewModel(gameManagement);
            GameManagementWindow    window         = new GameManagementWindow(viewModel);

            // Result is true if save button is pressed
            if (window.ShowDialog() == true)
            {
                if (_database.EditGame(entry.Name, newEntry.ToDatabaseEntry()))
                {
                    entry.Copy(newEntry);
                }
                else
                {
                    MessageBox.Show("Failed to update game in database", "Data Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
        /// <summary>
        /// Jons player to a game
        /// </summary>
        /// <param name="connectionId">SignarR connection id</param>
        /// <param name="gameUid">Uid of the game</param>
        /// <param name="player"></param>
        /// <param name="playerNum"></param>
        /// <param name="persGame">Game stored in the DB with the givven game Uid</param>
        /// <returns></returns>
        public GameModel GameJoin(string connectionId, Guid gameUid,
                                  string player, int playerNum, GameManagementViewModel persGame)
        {
            games.TryGetValue(gameUid, out GameModel game);

            if (game == null)
            {
                game = new GameModel(persGame.PlayerSize ?? 8, persGame.Size, persGame.Size)
                {
                    GameUid = gameUid,
                    Level   = persGame?.GameLevel ?? 1,
                    Size    = persGame?.Size ?? 800
                };

                games[gameUid] = game;
            }

            var p = new Player(playerNum, game.ElementSize)
            {
                Name         = player,
                ConnectionId = connectionId,
            };

            lock (_myLock)
            {
                if (playerNum == 1)
                {
                    game.Player1 = p;
                }
                else
                {
                    game.Player2 = p;
                }
            }

            return(game);
        }