Example #1
0
        public async Task <IGame> StartNewRound(IGame game, IOptionGrid grid)
        {
            game.NewRound(grid);

            await SaveGame(game);

            return(game);
        }
Example #2
0
        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);
            }
        }
Example #4
0
        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);
        }
Example #5
0
        protected static List <string> GetOptionsForThisRound(IOptionGrid optionGrid)
        {
            var options = optionGrid.Options.OrderBy(x => Guid.NewGuid()).Take(DefaultAmountOfRoundOptions);

            return(options.ToList());
        }