public override void OnPlayerLoggedOut(Player player)
 {
     dynamic clients = _connectionManagerFactory().GetClients<GamesRoom>();
     var groupManager = (IGroupManager)clients;
     groupManager.RemoveFromGroup(player.Id, LoggedInUsersGroupName);
     clients[LoggedInUsersGroupName].playerLoggedOut(player);
 }
Exemplo n.º 2
0
 public GameSession(string id, Player owner)
 {
     Id = id;
     Owner = owner;
     GameIsOver = false;
     IsDraw = false;
     _gameBoard = new BoardMark?[9];
 }
 public virtual void OnPlayerLoggedOut(Player player)
 {
 }
Exemplo n.º 4
0
 /// <summary>
 /// End game with declaring looser
 /// </summary>
 public void EndWithLooser(Player looser)
 {
     EndWithWinner(looser == Owner ? Opponent : Owner);
 }
Exemplo n.º 5
0
 /// <summary>
 /// Desides if we have winner in game or not
 /// </summary>
 private bool WeHaveWinner(out Player winner)
 {
     Player won = null;
     WinningLines.ToList().ForEach(line =>
     {
         if (_gameBoard[line[0]].HasValue &&
             _gameBoard[line[0]] == _gameBoard[line[1]] &&
             _gameBoard[line[1]] == _gameBoard[line[2]])
         {
             won = _gameBoard[line[0]] == BoardMark.Owner ? Owner : Opponent;
         }
     });
     winner = won;
     if (winner != null)
     {
         return true;
     }
     return false;
 }
Exemplo n.º 6
0
        /// <summary>
        /// Validates turn in game
        /// </summary>
        private void ValidateTurn(Player player, int turn)
        {
            if (WhosTurn != player)
            {
                throw new NotThisPlayersTurn(string.Format("It is not {0} turn", player.NickName));
            }

            if (turn < 0 || turn > 8)
            {
                throw new EngineException("This is not valid turn");
            }

            if (_gameBoard[turn].HasValue)
            {
                throw new EngineException("This is not valid turn, there is already mark in that cell");
            }
        }
Exemplo n.º 7
0
 /// <summary>
 /// End game with declaring winner
 /// </summary>
 private void EndWithWinner(Player winner)
 {
     Winner = winner;
     Looser = winner == Owner ? Opponent : Owner;
     GameIsOver = true;
 }
Exemplo n.º 8
0
        /// <summary>
        /// Tries to make game turn
        /// </summary>
        public BoardMark MakeTurn(Player player, int turn)
        {
            ValidateTurn(player, turn);

            _gameBoard[turn] = player == Owner ? BoardMark.Owner : BoardMark.Opponent;

            WhosTurn = player == Owner ? Opponent : Owner;

            _turnCount++;

            CheckForGameEnd();

            return player == Owner ? BoardMark.Owner : BoardMark.Opponent;
        }
Exemplo n.º 9
0
        /// <summary>
        /// Opponent trying to joing game
        /// </summary>
        public void Join(Player opponent)
        {
            if (Opponent != null)
            {
                throw new ThisGameInstanceIsFull();
            }
            if (opponent == Owner)
            {
                throw new EngineException("You can not play with your self");
            }
            Opponent = opponent;

            SetStartingPlaer();
        }