public HashSet <PlayingCard> GetNewlyHappyCards() { HashSet <PlayingCard> newCards = new HashSet <PlayingCard>(); HashSet <Coordinate> happyCoordinates = CurrentPlayField.GetHappyCoordinates(); foreach (PlayingCard currentCard in PlayedCards.Where(card => happyCoordinates.Contains(card.OnCoordinate))) { if (!currentCard.IsHappy) { newCards.Add(currentCard); } } return(newCards); }
public void GetNewHypotheticalPlacementEffects(PlayingCard forCard, Coordinate onCoordinate, out HashSet <PlayingCard> newHypotheticalIncompleteableCards, out HashSet <PlayingCard> newHypotheticalHappyCards) { newHypotheticalIncompleteableCards = new HashSet <PlayingCard>(); newHypotheticalHappyCards = new HashSet <PlayingCard>(); PlayFieldData hypotheticalPlayField = CurrentPlayField.CloneData(); hypotheticalPlayField.SetCard(forCard.RepresentingCard, onCoordinate); IEnumerable <Coordinate> newHypotheticalIncompleteableCoordinates = hypotheticalPlayField.GetIncompleteableCoordinates().Except(CurrentPlayField.GetIncompleteableCoordinates()); IEnumerable <Coordinate> newHypotheticalHappyCoordinates = hypotheticalPlayField.GetHappyCoordinates().Except(CurrentPlayField.GetHappyCoordinates()); newHypotheticalIncompleteableCards = new HashSet <PlayingCard>(PlayedCards.Where(card => newHypotheticalIncompleteableCoordinates.Contains(card.OnCoordinate))); newHypotheticalHappyCards = new HashSet <PlayingCard>(PlayedCards.Where(card => newHypotheticalHappyCoordinates.Contains(card.OnCoordinate))); if (newHypotheticalIncompleteableCoordinates.Contains(onCoordinate)) { newHypotheticalIncompleteableCards.Add(forCard); } if (newHypotheticalHappyCoordinates.Contains(onCoordinate)) { newHypotheticalHappyCards.Add(forCard); } }