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();
}