CardsAgainstIRC3.Game.States.VoteForCards.Activate C# (CSharp) Method

Activate() public method

public Activate ( ) : void
return void
        public override void Activate()
        {
            if (!Manager.AllUsers.Any(a => a.Bot != null || a.HasChosenCards))
            {
                Manager.SendToAll("Noone has chosen... Next round!");
                Manager.StartState(new ChoosingCards(Manager));
                return;
            }

            CardsetOrder = Manager.AllUsers.Where(a => (a.Bot != null && a.CanChooseCards) || a.HasChosenCards).OrderBy(a => Random.Next()).ToList();
            if (Manager.Mode != GameManager.GameMode.SovietRussia)
                ComradeOrder = new List<GameUser>() { Manager.CurrentCzar() };
            else
                ComradeOrder = CardsetOrder;

            Votes = ComradeOrder.Where(a => a.Bot == null || (a.Bot != null && a.CanVote)).ToDictionary(a => a.Guid, a => (List<int>) null);

            int i = 0;
            Manager.SendToAll("Everyone has chosen! The card sets are: ({0} - your time to choose)", string.Join(", ", ComradeOrder.Where(a => a.Bot == null).Select(a => a.Nick)));

            foreach (var or in CardsetOrder)
            {
                if (or.Bot != null)
                    CardSets[or.Guid] = or.Bot.ResponseToCard(Manager.CurrentBlackCard);
                else
                    CardSets[or.Guid] = or.ChosenCards.Select(a => or.Cards[a].Value).ToArray();

                Manager.SendToAll("{0}. {1}", i, Manager.CurrentBlackCard.Representation(CardSets[or.Guid]));

                i++;
            }

            foreach (var bot in ComradeOrder.Where(a => a.Bot != null && a.CanVote))
            {
                Votes[bot.Guid] = bot.Bot.WinningCardSet(CardsetOrder.Select(a => CardSets[a.Guid]).ToArray()).ToList();
            }

            SelectWinner();
        }