예제 #1
0
    //Called when the button on top of the coverDeck is clicked, loops the cards in it and reset if the finish.
    public void OnCoverDeckClick()
    {
        //If there are still cards in the cover deck
        if (coveredDeckCardsRow.coveredCardsInRow.Count > 0)
        {
            addMove();
            Card card = coveredDeckCardsRow.coveredCardsInRow.DropLastMono();
            card.Uncover();
            uncoveredDeckCardsRow.AddCardToRow(card);
            undoEnum = UndoEnum.DeckClick;
        }
        else           //If cover deck is empty reset it and detract 100 points
        {
            if (uncoveredDeckCardsRow.uncoveredCardsInRow.Count > 0)
            {
                addMove();
                coveredDeckCardsRow.addCardsToRow(uncoveredDeckCardsRow.uncoveredCardsInRow, true);

                uncoveredDeckCardsRow.uncoveredCardsInRow.Clear();
                coveredDeckCardsRow.coveredCardsInRow.Reverse();
                addPoints(RESET_DECK_SCORE);
                undoEnum = UndoEnum.DeckReset;
            }
        }
    }
예제 #2
0
    //Check the last action and revert it
    public void UndoMove()
    {
        switch (undoEnum)
        {
        case UndoEnum.RowMove:         //row move
        {
            removeMove();
            addPoints(lastPointsAdded);
            MoveToLastUsedRow(lastUsedRow, lastUsedCard);
            break;
        }

        case UndoEnum.DeckClick:         //Deck click
        {
            removeMove();
            Card card = uncoveredDeckCardsRow.uncoveredCardsInRow.DropLastMono();
            card.Cover();
            coveredDeckCardsRow.AddCardToRow(card);
            undoEnum = UndoEnum.None;
            break;
        }

        case UndoEnum.DeckReset:         //Deck reset
        {
            if (coveredDeckCardsRow.coveredCardsInRow.Count > 0)
            {
                removeMove();
                coveredDeckCardsRow.coveredCardsInRow.Reverse();
                uncoveredDeckCardsRow.addCardsToRow(coveredDeckCardsRow.coveredCardsInRow, false);
                coveredDeckCardsRow.coveredCardsInRow.Clear();

                addPoints(lastPointsAdded);
                undoEnum = UndoEnum.None;
            }
            break;
        }

        case UndoEnum.RowMoveCover:
        {
            removeMove();
            addPoints(lastPointsAdded);
            lastUsedRow.uncoveredCardsInRow.ReadLastMono().Cover();
            lastUsedRow.coveredCardsInRow.Add(lastUsedRow.uncoveredCardsInRow.DropLastMono());
            MoveToLastUsedRow(lastUsedRow, lastUsedCard);
            break;
        }
        }
    }
예제 #3
0
    //Move cards to the destination row and add move and points
    public void ExecuteCardTransfer(Row destinationRow, Card firstCardOfMovableRow)
    {
        MoveToLastUsedRow(destinationRow, firstCardOfMovableRow);
        if (destinationRow != lastUsedRow)
        {
            addMove();
            lastPointsAdded = 0;
            if (destinationRow.b_isMasterSuitRow)
            {
                addPoints(MASTER_SUIT_SCORE);
            }
            undoEnum = UndoEnum.RowMove;
            if (lastUsedRow.UncoverLastCoveredCard())
            {
                undoEnum = UndoEnum.RowMoveCover;
                addPoints(UNCOVER_CARD_SCORE);
            }

            //lastUsedRow = null;
        }
    }