public ICollection <RoundTileDto> Resolve(RoundResult source, RoundResultDto destination, ICollection <RoundTileDto> destMember, ResolutionContext context) { var roundId = source.RoundId; var RoundPlayerTiles = _context.RoundTiles.Where(rt => rt.RoundId == roundId && rt.Owner == source.Player.UserName); return(_mapper.Map <ICollection <RoundTile>, ICollection <RoundTileDto> >(RoundPlayerTiles.ToList())); }
public void OnNext(RoundEnded ended) { var roundData = ConvertRoundSettingsToDto(ended.Settings); var resultData = new RoundResultDto(ended.GameUuid, roundData, ended.Result.PlayerResults.Select( pres => new PlayerRoundResultDto(pres.Guesses, pres.TricksWon, pres.Score) )); _client.GameRoundEnded(resultData); }
public async Task <RoundResultDto> GetMoveAsync(bool isFirst) { if (RoundTimeOut) { throw new GameFinishedException(GameEndReason.RoundTimeOut); } if (IsFinished) { throw new GameFinishedException(GameEndReason.RivalLeftGame); } if (Rounds.Count == 0) { throw new MoveException("User has not made a move yet"); } await _lockSlim.WaitAsync(); try { var lastRound = Rounds[Rounds.Count - 1]; if (lastRound.Player1Move == null || lastRound.Player2Move == null) { return(null); } if (isFirst) { var result = new RoundResultDto() { OpponentMove = lastRound.Player2Move.ToString(), Result = lastRound.WinType == WinType.Draw ? RoundResultFromUserSide.Draw : lastRound.WinType == WinType.FirstPlayer ? RoundResultFromUserSide.YouWin : RoundResultFromUserSide.OpponentWin }; return(result); } else { var result = new RoundResultDto() { OpponentMove = lastRound.Player1Move.ToString(), Result = lastRound.WinType == WinType.Draw ? RoundResultFromUserSide.Draw : lastRound.WinType == WinType.SecondPlayer ? RoundResultFromUserSide.YouWin : RoundResultFromUserSide.OpponentWin }; return(result); } } finally { _lockSlim.Release(); } }
public Task GameRoundEnded(RoundResultDto data) { var settings = new EumelRoundSettings(data.GameRound.StartingPlayer, data.GameRound.TricksToPlay); var res = new RoundResult(data.PlayerResults.Select( player => new PlayerRoundResult(player.Guesses, player.TricksWon, player.Score) ).ToList()); var e = new RoundEnded(data.GameId, settings, res); _gameSeriesEventCallback(e); return(Task.CompletedTask); }
public void PrintResult(RoundResultDto result) { string resultString = ""; ConsoleColor color = ConsoleColor.White; switch (result.Result) { case 1: _sessionResults.WinCount++; resultString = "Win"; color = ConsoleColor.Green; break; case 0: _sessionResults.DrawCount++; resultString = "Draw"; color = ConsoleColor.Yellow; break; case -1: _sessionResults.LossesCount++; resultString = "Lose"; color = ConsoleColor.Red; break; } PrintHeader(); MenuLibrary.WriteColor($"\nYour move: ", ConsoleColor.White); MenuLibrary.WriteLineColor($"{_currentMove}", ConsoleColor.DarkCyan); MenuLibrary.WriteColor($"Opponent move: ", ConsoleColor.White); MenuLibrary.WriteLineColor($"{result.OpponentMove}", ConsoleColor.DarkCyan); MenuLibrary.WriteColor($"\nResult: ", ConsoleColor.White); MenuLibrary.WriteLineColor(resultString, color); MenuLibrary.PressAnyKey(); }