private HandChangedEvent InitializeHand(Player player) { player.IsTurn = true; var initialHandCardCount = GetInitialHandCardCount(player); var shuffledCards = GetShuffledDeckCards(player); var handCards = shuffledCards.Take(initialHandCardCount).ToList(); shuffledCards.RemoveRange(0, initialHandCardCount); foreach (var handCard in handCards) { player.HandCards.Add(handCard); } player.DeckCards.Clear(); foreach (var card in shuffledCards) { player.DeckCards.Add(card); } Substates.Add(new RedrawPlayerSubstate { UserId = player.User.Id, RedrawCardCount = Constants.InitialRedrawCount }); return(new HandChangedEvent(player.User.Id) { HandCards = handCards.Select(c => c.Card.Id).ToList() }); }
public void Add(JsStatement statement) { if (Substates.Any()) { throw new Exception("Cannot add a statement to a state that contains substates"); } InternalAdd(statement); }
public override IEnumerable <Event> Initialize(Game game) { foreach (var player in game.Players) { bool canPickStartingPlayer = player.Deck.Faction == GwintFaction.Scoiatael; player.IsTurn = canPickStartingPlayer; Substates.Add(new PickStartingPlayerSubstate { UserId = player.User.Id, CanPickStartingPlayer = canPickStartingPlayer }); } yield break; }