public override void Activate()
{
foreach (var person in Manager.AllUsers.Where(a => a.WantsToLeave).Select(a => a.Nick).ToArray())
{
Manager.UserQuit(person);
}
Manager.UpdateCzars();
var czar = Manager.NextCzar();
Manager.NewBlackCard();
if (Manager.AllUsers.Count() < 3)
{
Manager.SendToAll("Not enough players, stopping game");
Manager.Reset();
return;
}
foreach (var person in Manager.AllUsers)
{
person.HasChosenCards = person.HasVoted = false;
if (person.Bot == null && person.CanChooseCards && (person != czar || Manager.Mode == GameManager.GameMode.SovietRussia))
WaitingOnUsers.Add(person);
}
Manager.Rounds++;
if (Manager.Mode != GameManager.GameMode.SovietRussia)
Manager.SendToAll("Round {0}! {1} is czar! {2}, choose your cards!", Manager.Rounds, czar.Nick, string.Join(", ", WaitingOnUsers.Select(a => a.Nick)));
else
Manager.SendToAll("Round {0}! {1}, choose your cards!", Manager.Rounds, string.Join(", ", WaitingOnUsers.Select(a => a.Nick)));
Manager.SendToAll("Current Card: {0}", Manager.CurrentBlackCard.Representation());
bool outOfCards = false;
foreach (var user in WaitingOnUsers)
if (!user.UpdateCards())
{
outOfCards = true;
break;
}
if (!outOfCards && Manager.CurrentBlackCard.Parts.Length > 3)
foreach (var user in WaitingOnUsers)
if (!user.AddExtraCards(Manager.CurrentBlackCard.Parts.Length - 2))
{
outOfCards = true;
break;
}
foreach (var user in WaitingOnUsers)
user.SendCards();
if (outOfCards)
Manager.SendToAll("WARNING: Not enough cards to continue another round! Continuing, but please add another deck.");
CheckReady();
}