public void PopulateShownCards() { if (Deck.Count < 10) { //Shuffle the discard pile into the deck var allCards = DiscardPile; allCards.AddRange(Deck.Pop(Deck.Count)); allCards.Shuffle(); Deck = allCards; DiscardPile = new List <TrainCard>(); } FlipShownCards(); var locomotiveCount = ShownCards.Where(x => x.Color == TrainColor.Locomotive).Count(); while (locomotiveCount >= 3) { Console.WriteLine("Shown cards has 3 or more locomotives! Burning the shown cards."); //Discard the shown cards DiscardPile.AddRange(ShownCards); ShownCards = new List <TrainCard>(); //Add a new set of shown cards FlipShownCards(); locomotiveCount = ShownCards.Where(x => x.Color == TrainColor.Locomotive).Count(); } }
public void DiscardCards(List <Card> cards) { DiscardPile.AddRange(cards); foreach (var card in cards) { Hand.Remove(card); card.RevealToAll(); } OnCardsDiscarded?.Invoke(this, new PlayerCardDraw() { Cards = new List <Card>(cards), Amount = cards.Count(), Player = this }); }
public static void GameReset() { Score = 0; Deck.Clear(); DiscardPile.Clear(); DiscardPile.AddRange(new Power[] { Power.AlternatePath, Power.AlternatePath, Power.AlternatePath, Power.Coin2x, Power.Coin2x, Power.Coin2x, Power.HalvePenalty, Power.HalvePenalty, Power.HalvePenalty, Power.Invincible, Power.Speed2x, Power.Speed2x }); PickNewPower(true); }
public void ExecuteTurn(ICardPool pool) { Hand.DiscardTo(DiscardPile); PlayedCards.DiscardTo(DiscardPile); FillHand(); while (Hand.Any()) { var card = Hand[0]; Hand.RemoveAt(0); card.Play(this, null, pool); PlayedCards.Add(card); } var availableFunds = PlayedCards.Select(c => c.EType).Concat(new [] { Element.Free }).GroupBy(e => e).ToDictionary(g => g.Key, g => g.Count()); DiscardPile.AddRange(pool.BuyAll(availableFunds)); Console.WriteLine("Own {0} Cards:{1}", Collection.Count(), string.Join(", ", Collection.OrderBy(c => c.CardId).Select(c => c.ToString()))); }
private void KillPokemon(PokemonCard pokemon) { DiscardPile.AddRange(pokemon.AttachedEnergy); pokemon.AttachedEnergy.Clear(); if (pokemon.EvolvedFrom != null) { DiscardPile.Add(pokemon.EvolvedFrom); if (pokemon.EvolvedFrom.EvolvedFrom != null) { DiscardPile.Add(pokemon.EvolvedFrom.EvolvedFrom); pokemon.EvolvedFrom.EvolvedFrom = null; } pokemon.EvolvedFrom = null; } DiscardPile.Add(pokemon); pokemon.DamageCounters = 0; pokemon.ClearStatusEffects(); }