public async Task <IGame> StartNewRound(IGame game, IOptionGrid grid) { game.NewRound(grid); await SaveGame(game); return(game); }
public void NewRound(IOptionGrid optionGrid) { if (optionGrid == null) { throw new ArgumentNullException(nameof(optionGrid)); } if (CurrentRound != null) { PreviousRounds.Add(CurrentRound); } var newRound = Round.NewRound(optionGrid, Players); CurrentRound = newRound; }
public static void RegisterOptionGrid(IOptionGrid grid, params IOptionGridGroup[] groups) { AllOptionGrids.Add(grid.Id, grid); foreach (var group in groups) { var hasOptionGroup = AllOptionGridGroups.ContainsKey(group.Id); if (!hasOptionGroup) { AllOptionGridGroups.Add(group.Id, group); } AllOptionGridGroups[group.Id].OptionGrids.Add(grid); } }
public static Round NewRound(IOptionGrid optionGrid, IEnumerable <IPlayer> players) { var optionsInThisRound = GetOptionsForThisRound(optionGrid); var round = new Round { AllOptions = optionsInThisRound, Id = Guid.NewGuid() }; round.Word = optionsInThisRound.OrderBy(x => Guid.NewGuid()).First(); var list = players.ToList(); var imposter = list.OrderBy(x => Guid.NewGuid()).First(); foreach (var player in players) { var isImposter = imposter.Name == player.Name; round.Participants.Add(new RoundParticipant(player, isImposter)); } return(round); }
protected static List <string> GetOptionsForThisRound(IOptionGrid optionGrid) { var options = optionGrid.Options.OrderBy(x => Guid.NewGuid()).Take(DefaultAmountOfRoundOptions); return(options.ToList()); }