/// <summary> /// Reaction to be called when pointer-like input is released /// </summary> private void OnInputRelease() { if (currentDeckInputOver != null) { if (currentDeckInputOver.deckType == DeckController.DeckType.Column) { //Check if the card added is one more greater than actual and if they are of the same seed if (CheckIfCardMatch(currentDeckInputOver.GetTopCardValue(), draggedCard.GetValue(), true)) { GameManager.I.MoveCtrl.RecordMove(0, draggedCard, draggedCardOriginalDeck, currentDeckInputOver); //Assing 5 points from a card that come in column from outside if (draggedCardOriginalDeck.deckType != DeckController.DeckType.Column) { AssignPoints(5); GameManager.I.MoveCtrl.GetLastMove().PointsGiven = 5; } //Assign a move AssignMove(); currentDeckInputOver.AddTopCard(draggedCard); ReleaseDraggedCard(false); } } else if (currentDeckInputOver.deckType == DeckController.DeckType.Seed) { //Check if the card added is one less than actual and if they are of the same seed if (CheckIfCardMatch(currentDeckInputOver.GetTopCardValue(), draggedCard.GetValue(), false)) { //Assign 10 points for a card in the seed decks AssignPoints(10); GameManager.I.MoveCtrl.RecordMove(10, draggedCard, draggedCardOriginalDeck, currentDeckInputOver); //Assign a move AssignMove(); currentDeckInputOver.AddTopCard(draggedCard); ReleaseDraggedCard(false); } //If won, show it if (CheckVictory()) { GameManager.I.InterfaceCtrl.DisplayVictoryMenu(); } } } ReleaseDraggedCard(true); }
/// <summary> /// Return the card to original deck /// </summary> private void ReleaseDraggedCard(bool _giveBackToOriginalDeck) { if (draggedCard == null) { return; } if (_giveBackToOriginalDeck) { draggedCardOriginalDeck.AddTopCard(draggedCard); //Return the card to original Deck } else if (draggedCardOriginalDeck.deckType == DeckController.DeckType.Column) { if (draggedCardOriginalDeck.IsTopCardFrontSide) //Add the card to the new deck and flip the top { draggedCardOriginalDeck.DrawCard(true, false); //card of the original deck if it wasn't already flipped (front side) } else { AssignPoints(5); //Special case: assign 5 points if a card in column is reveald draggedCardOriginalDeck.DrawCard(true, true); } } else if (draggedCardOriginalDeck.deckType == DeckController.DeckType.DrawnCards) { draggedCardOriginalDeck.DrawCard(true, false); //Never flip the drawn cards (they are already fron side) draggedCardOriginalDeck.OrderCards(); //Always update their displacement } draggedCard = null; isDragging = false; }
/// <summary> /// Transfer the card from this deck to another /// </summary> /// <param name="_newDeck"></param> public void TransferTopCard(DeckController _newDeck) { CardBehaviour card = RemoveTopCard(); if (card != null) { _newDeck.AddTopCard(card); } }