public bool TryPlayerPlaysCard(PlayingCard playedCard, Coordinate toCoordinate) { if (!ActivePlayField.IsSpotValidForCard(playedCard, toCoordinate)) { return(false); } cardsInHand.Remove(playedCard); ActivePlayField.PlayCard(playedCard, toCoordinate); GameActions.Push(GameAction.FromCardPlayed(playedCard.RepresentingCard, toCoordinate)); CameraManagerInstance.UpdateCamera(ActivePlayField); ActivePlayField.UpdateCardVisuals(); ActivePlayField.SetPlayableSpaces(); UpdateScoreLabels(); DealToPlayer(); if (ActivePlayField.NoMovesArePossible(cardsInHand)) { NewPlayingField(); } ResetCardsInHandPosition(); return(true); }
List <GameAction> AllPossibleActions(PlayFieldData activePlayField, List <CardData> hand) { List <GameAction> possibleActions = new List <GameAction>(); HashSet <Coordinate> possibleCoordinates = activePlayField.GetValidPlayableSpaces(); foreach (CardData consideredCard in hand) { foreach (Coordinate consideredCoordinate in possibleCoordinates) { if (activePlayField.IsSpotValidForCard(consideredCard, consideredCoordinate)) { possibleActions.Add(GameAction.FromCardPlayed(consideredCard, consideredCoordinate)); } } } return(possibleActions); }