public GameUser GetCurrentPlayerTurn() { if (turnsIndex >= GameUsers.Where((i) => i.State == GameUserState.Connected).ToList().Count) { turnsIndex = 0; } return(GameUsers.Where((i) => i.State == GameUserState.Connected).ToList()[turnsIndex]); }
public void EndTurn() { turnsIndex++; if (turnsIndex >= GameUsers.Where((i) => i.State == GameUserState.Connected).ToList().Count) { turnsIndex = 0; } }
public GameResult GetGameResult() { lock (gameLogicLock) { var usersRanked = GameUsers.OrderBy((i) => i.State != GameUserState.Connected).ThenBy((i) => i.Hand.Count).ToList(); return(new GameResult { UsersRanking = usersRanked, RankingScores = gameRankingScores }); } }
private bool IsVictory() { var gameUser = GetCurrentPlayerTurn(); if (gameUser.Hand.Count <= 0) { return(true); } if (GameUsers.Where((i) => i.State == GameUserState.Connected).Count() == 1) { return(true); } return(false); }
private async Task AddPlayersToGame(List <Player> playersId, string gameId) { var list = new List <GameUsers>(); foreach (var player in playersId) { var gameToUser = new GameUsers { GameId = gameId, UserId = player.Id }; list.Add(gameToUser); } await _gameUsersRepository.AddRange(list); }
public void GameUserLeave(ClaimsPrincipal userLeaving, Action <long> onTurnTimeout, Action <long> onGameFinish) { lock (gameLogicLock) { var user = GameUsers .Where((i) => i.UserPrincipal.GetUserLoginID() == userLeaving.GetUserLoginID()) .FirstOrDefault(); if (GetCurrentPlayerTurn().UserPrincipal.GetUserLoginID() == user.UserPrincipal.GetUserLoginID() && CurrentGamePhase == GamePhase.TurnPhase) { TurnTimer.Stop(); onTurnTimeout(GameLobbyID); } user.State = GameUserState.Disconnected; var rankToCountMappings = new Dictionary <string, int>(); user.Hand.Select((i) => i.Value).ToList().ForEach((value) => { if (rankToCountMappings.ContainsKey(value.Rank)) { rankToCountMappings[value.Rank] = rankToCountMappings[value.Rank] + 1; } else { rankToCountMappings[value.Rank] = 1; } }); var handList = new List <string>(); foreach (var pair in rankToCountMappings) { handList.Add($"×{pair.Value} {pair.Key}"); } ActionHistory.Add($"{user.UserPrincipal.GetUserName()} has left. His cards are out of play: {String.Join(",", handList)}"); if (IsVictory()) { onGameFinish(GameLobbyID); } } }
public GameUser GetPlayer(string userName) { return(GameUsers .Where(item => item.UserPrincipal.GetUserName() == userName) .FirstOrDefault()); }
public GameUser GetPlayer(ClaimsPrincipal user) { return(GameUsers .Where(item => item.UserPrincipal.GetUserLoginID() == user.GetUserLoginID()) .FirstOrDefault()); }