public Task GameRoundStarted(RoundStartedDto data) { var settings = new EumelRoundSettings(data.StartingPlayer, data.TricksToPlay); _gameSeriesEventCallback(new RoundStarted(data.GameId, settings)); return(Task.CompletedTask); }
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 MoveToNextRound() { if (!HasMoreRounds) { throw new InvalidOperationException("No more rounds"); } _gameEventContext = _gameEventContext with { RoundIndex = _gameEventContext.RoundIndex + 1 }; CurrentRoundSettings = _plan.Rounds[_gameEventContext.RoundIndex]; State = GameState.Initial(_numPlayers, CurrentRoundSettings); _events.Clear(); }
public RoundStartedPayload(RoundStarted roundStarted) { Settings = roundStarted.Settings; }
public static GameRoundDto ConvertRoundSettingsToDto(EumelRoundSettings settings) => new GameRoundDto(settings.StartingPlayerIndex, settings.TricksToPlay);