public override PlayerAction HandleInput(GameTime gameTime, GameState state)
 {
     // Local input
     if (GameCursor.LeftMouseState(gameTime) == MouseAction.CLICK)
     {
         // Check if you can't play
         if (state.GetDeck().Contains(GameCursor.MousePosition()) && state.GetDeck().CanDrawCard() && GameCursor.SelectedCards.Count == 0)
         {
             return(new PlayerAction(PlayerActionType.TRY_CARD));
         }
         else if (state.GetPile().Contains(GameCursor.MousePosition()) && GameCursor.SelectedCards.Count == 0 && state.GetPile().Pile.Count > 0)
         {
             return(new PlayerAction(PlayerActionType.PICK_UP_CARDS));
         }
         else
         {
             Card card = SelectedCard(GameCursor.MousePosition());
             if (card != null && GameCursor.SelectedCards.Count == 0 && (selectedCards.Count == 0 || selectedCards.ElementAt(0).CompareTo(card) == 0))
             {
                 List <Card> tempCards = new List <Card>();
                 tempCards.AddRange(selectedCards);
                 if (!selectedCards.Contains(card))
                 {
                     tempCards.Add(card);
                 }
                 selectedCards.Clear();
                 GameCursor.SelectedCards.AddRange(tempCards);
             }
         }
     }
     else if (GameCursor.RightMouseState(gameTime) == MouseAction.CLICK)
     {
         Card card = SelectedCard(GameCursor.MousePosition());
         if (card != null && !GameCursor.SelectedCards.Contains(card))
         {
             if (selectedCards.Contains(card))
             {
                 selectedCards.Remove(card);
             }
             else if (selectedCards.Count == 0)
             {
                 selectedCards.Add(card);
             }
             else if (selectedCards.ElementAt(0).CompareTo(card) == 0)
             {
                 selectedCards.Add(card);
             }
         }
     }
     else if (GameCursor.LeftMouseState(gameTime) == MouseAction.RELEASE)
     {
         if (state.GetPile().Contains(GameCursor.MousePosition()) && GameCursor.SelectedCards.Count > 0)
         {
             Card[] cards = GameCursor.SelectedCards.ToArray();
             foreach (Card card in cards)
             {
                 card.ResetPosition();
             }
             GameCursor.SelectedCards.Clear();
             return(new PlayerAction(PlayerActionType.PLAY_CARD, cards));
         }
         else
         {
             PlayerAction action = null;
             foreach (Card tableCard in tableCards)
             {
                 if (tableCard.Contains(GameCursor.MousePosition()) && GameCursor.SelectedCards.Count > 0)
                 {
                     action = new PlayerAction(PlayerActionType.SWAP_CARD, GameCursor.SelectedCards[0], tableCard);
                 }
             }
             foreach (Card card in GameCursor.SelectedCards)
             {
                 card.ResetPosition();
             }
             GameCursor.SelectedCards.Clear();
             return(action);
         }
     }
     return(null);
 }