示例#1
0
    private void UpdateShopButtons()
    {
        for (int i = 0; i < knNumCardsForSale; i++)
        {
            CardTier tier = (CardTier)(i / 3);

            mCardBtnImages[i].sprite = GetSprite(cardTypes[i], tier);
        }
    }
    public void DrawSpecificCard(CardType _type, CardTier _tier)
    {
        for (int i = 0; i < knMaxCardsInHand; i++)
        {
            if (mCards[i].Enabled == false)
            {
                AudioManager.PlayCardDrawSound();
                DrawCardTo(i, _type, _tier);
                return;
            }
        }

        Debug.LogWarning("UNABLED TO DRAW CARD: No empty slots.");
    }
    // Card pos should be 0-4
    private void SetCard(int _cardSlotID, CardType _type, CardTier _tier, GridType _moveType)
    {
        mCards[_cardSlotID].ToggleCard(true);
        if (_type == CardType.Movement)
        {
            mCards[_cardSlotID].SpecificMovementCard(_moveType);
        }
        else
        {
            mCards[_cardSlotID].SetCard(_type, _tier);
        }

        mCards[_cardSlotID].UpdateSprite();
        mCards[_cardSlotID].SetCardDraggable(true);
    }
示例#4
0
    public void BuyCard(int _cardID)
    {
        // Check if there is even a slot for cards to be purchased.
        if (DeckManager.Instance.GetNumCardsInHand() >= DeckManager.knMaxCardsInHand)
        {
            // No slots!
            InfoPanelManager.Instance.DisplayInfoPanel("You do not have space for more cards!");
            return;
        }

        // Check the tier of the card being purchased and calculate the price.
        CardTier tier = (CardTier)(_cardID / 3);
        int      cost = -1;

        switch (tier)
        {
        case CardTier.Bronze:
            cost = 2;
            break;

        case CardTier.Silver:
            cost = 5;
            break;

        case CardTier.Gold:
            cost = 15;
            break;
        }

        // Check if enough coins.
        if (GameManager.Instance.Player.Coins < cost)
        {
            // Display not enough coins message.
            InfoPanelManager.Instance.DisplayInfoPanel("You do not have enough coins!");

            return;
        }

        // Spend the coins and draw the purchased card.
        GameManager.Instance.Player.SpendCoins(cost);
        DeckManager.Instance.DrawSpecificCard(cardTypes[_cardID], tier);
        CloseShop();
    }
    // Card pos should be 0 - 4
    private void DrawCardTo(int _cardSlotID, CardType _type, CardTier _tier)
    {
        // Replace card sprite with card back.
        mCards[_cardSlotID].ToggleCard(true);
        mCards[_cardSlotID].SetCardDraggable(false);
        mCards[_cardSlotID].CardImage.sprite = CardBackSprite;
        mCards[_cardSlotID].SetCard(_type, _tier);

        // Move the card to slot
        mCardTransforms[_cardSlotID].position = svec3DrawPos;
        mCardTransforms[_cardSlotID].SetAsLastSibling();
        MoveToAction moveToSlot = new MoveToAction(mCardTransforms[_cardSlotID], Graph.InverseExponential, mCards[_cardSlotID].OriginPos, 0.6f);

        moveToSlot.OnActionFinish += () => {
            mCardTransforms[_cardSlotID].SetSiblingIndex(mCards[_cardSlotID].OriginSiblingIndex);
        };

        // Flip the Card
        // 0 to 90, snap -90, -90 to 0
        mCardTransforms[_cardSlotID].localEulerAngles = Vector3.zero;
        RotateToAction rotHide = new RotateToAction(mCardTransforms[_cardSlotID], Graph.Linear, Vector3.up * 90.0f, 0.5f);

        rotHide.OnActionFinish += () => {
            mCardTransforms[_cardSlotID].localEulerAngles = Vector3.up * 270.0f;
            mCards[_cardSlotID].UpdateSprite();
        };
        RotateToAction rotReveal   = new RotateToAction(mCardTransforms[_cardSlotID], Graph.Linear, Vector3.up * 360.0f, 0.5f);
        ActionSequence cardFlipSeq = new ActionSequence(rotHide, rotReveal);

        // Combine all actions here.
        ActionSequence drawCardSeq = new ActionSequence(moveToSlot, cardFlipSeq);

        drawCardSeq.OnActionFinish += () => {
            mCards[_cardSlotID].SetCardDraggable(true);
        };

        ActionHandler.RunAction(drawCardSeq);
    }
示例#6
0
 public override void ExecuteCard(CardTier _tier, GridType _moveType)
 {
     MovementJokerPanelControls.sJokerTier = _tier;
 }
示例#7
0
 public override void ExecuteCard(CardTier _tier, GridType _moveType)
 {
     GameManager.Instance.Player.SetMovementType(_moveType);
 }
 public override void ExecuteCard(CardTier _tier, GridType _moveType)
 {
     SmashPanelControls.sSmashTier = _tier;
 }
示例#9
0
 /// <summary>
 /// Creates a random effect from the allowed pool. Data defaults to empty list.
 /// </summary>
 /// <returns>The random effect.</returns>
 public static Effect GetRandomEffect(CardTier tier) => CreateEffect(_availableRandomPool[tier].Random());
示例#10
0
 public void SetCard(CardType _type, CardTier _tier)
 {
     mCardData.Type = _type;
     mCardData.Tier = _tier;
 }
示例#11
0
 private Sprite GetSprite(CardType _type, CardTier _tier)
 {
     return(cardSprites[Array.IndexOf(cardSpriteNames, "Card_" + _type.ToString() + "_" + _tier.ToString())]);
 }
示例#12
0
 public CardData(CardType _type, CardTier _tier, GridType _moveType)
 {
     Type     = _type;
     Tier     = _tier;
     MoveType = _moveType;
 }
示例#13
0
    private Vector2[] GetAffectedPos(CardTier _tier, PlayerPiece _player)
    {
        Vector2 playerPos = new Vector2(_player.PosX, _player.PosY);

        Vector2[] affectedPos = null;
        switch (_tier)
        {
        case CardTier.Bronze:
            affectedPos = new Vector2[4];
            // Up down left right
            affectedPos[0] = new Vector2(playerPos.x, playerPos.y + 1);
            affectedPos[1] = new Vector2(playerPos.x, playerPos.y - 1);
            affectedPos[2] = new Vector2(playerPos.x + 1, playerPos.y);
            affectedPos[3] = new Vector2(playerPos.x - 1, playerPos.y);
            break;

        case CardTier.Silver:
            affectedPos = new Vector2[8];
            // Up down left right
            affectedPos[0] = new Vector2(playerPos.x, playerPos.y + 1);
            affectedPos[1] = new Vector2(playerPos.x, playerPos.y - 1);
            affectedPos[2] = new Vector2(playerPos.x + 1, playerPos.y);
            affectedPos[3] = new Vector2(playerPos.x - 1, playerPos.y);

            // adjacent corners
            affectedPos[4] = new Vector2(playerPos.x + 1, playerPos.y + 1);
            affectedPos[6] = new Vector2(playerPos.x + 1, playerPos.y - 1);
            affectedPos[5] = new Vector2(playerPos.x - 1, playerPos.y + 1);
            affectedPos[7] = new Vector2(playerPos.x - 1, playerPos.y - 1);
            break;

        case CardTier.Gold:
            affectedPos = new Vector2[24];
            // Up down left right
            affectedPos[0] = new Vector2(playerPos.x, playerPos.y + 1);
            affectedPos[1] = new Vector2(playerPos.x, playerPos.y - 1);
            affectedPos[2] = new Vector2(playerPos.x + 1, playerPos.y);
            affectedPos[3] = new Vector2(playerPos.x - 1, playerPos.y);

            // Adjacent corners
            affectedPos[4] = new Vector2(playerPos.x + 1, playerPos.y + 1);
            affectedPos[6] = new Vector2(playerPos.x + 1, playerPos.y - 1);
            affectedPos[5] = new Vector2(playerPos.x - 1, playerPos.y + 1);
            affectedPos[7] = new Vector2(playerPos.x - 1, playerPos.y - 1);

            // Top outer row
            affectedPos[8]  = new Vector2(playerPos.x - 2, playerPos.y + 2);
            affectedPos[9]  = new Vector2(playerPos.x - 1, playerPos.y + 2);
            affectedPos[10] = new Vector2(playerPos.x, playerPos.y + 2);
            affectedPos[11] = new Vector2(playerPos.x + 1, playerPos.y + 2);
            affectedPos[12] = new Vector2(playerPos.x + 2, playerPos.y + 2);

            // Bottom outer row
            affectedPos[13] = new Vector2(playerPos.x - 2, playerPos.y - 2);
            affectedPos[14] = new Vector2(playerPos.x - 1, playerPos.y - 2);
            affectedPos[15] = new Vector2(playerPos.x, playerPos.y - 2);
            affectedPos[16] = new Vector2(playerPos.x + 1, playerPos.y - 2);
            affectedPos[17] = new Vector2(playerPos.x + 2, playerPos.y - 2);

            // Outer right
            affectedPos[18] = new Vector2(playerPos.x + 2, playerPos.y + 1);
            affectedPos[19] = new Vector2(playerPos.x + 2, playerPos.y);
            affectedPos[20] = new Vector2(playerPos.x + 2, playerPos.y - 1);

            // Outer left
            affectedPos[21] = new Vector2(playerPos.x - 2, playerPos.y + 1);
            affectedPos[22] = new Vector2(playerPos.x - 2, playerPos.y);
            affectedPos[23] = new Vector2(playerPos.x - 2, playerPos.y - 1);
            break;
        }

        for (int i = 0; i < affectedPos.Length; i++)
        {
            // If not a valid pos, default to player pos (which will have no effect when processed above).
            if (DungeonManager.Instance.IsValidCell((int)affectedPos[i].x, (int)affectedPos[i].y) == false)
            {
                affectedPos[i] = playerPos;
            }
        }

        return(affectedPos);
    }
示例#14
0
 public abstract void ExecuteCard(CardTier _tier, GridType _moveType);
示例#15
0
    void Start()
    {
        // Draw 3 cards.
        ActionParallel drawParallel = new ActionParallel();

        if (PlayerPrefs.HasKey(Constants.kStrNumCardsInHand))
        {
            int numCards = PlayerPrefs.GetInt(Constants.kStrNumCardsInHand);
            for (int i = 0; i < numCards; i++)
            {
                DelayAction draw = new DelayAction(i * 0.3f);

                CardType type = (CardType)PlayerPrefs.GetInt(Constants.kStrCardType[i]);
                if (type == CardType.Movement)
                {
                    GridType moveType = (GridType)PlayerPrefs.GetInt(Constants.kStrCardMoveType[i]);
                    draw.OnActionFinish += () => {
                        DeckManager.Instance.DrawCard(moveType);
                    };
                }
                else
                {
                    CardTier tier = (CardTier)PlayerPrefs.GetInt(Constants.kStrCardTier[i]);
                    draw.OnActionFinish += () => {
                        DeckManager.Instance.DrawSpecificCard(type, tier);
                    };
                }

                drawParallel.Add(draw);
            }
        }
        else
        {
            DelayAction firstDraw = new DelayAction(0.1f);
            firstDraw.OnActionFinish += () => { DeckManager.Instance.DrawCard(); };
            DelayAction secondDraw = new DelayAction(0.1f + 0.3f);
            secondDraw.OnActionFinish += () => { DeckManager.Instance.DrawCard(); };
            DelayAction thirdDraw = new DelayAction(0.1f + 0.3f + 0.3f);
            secondDraw.OnActionFinish += () => { DeckManager.Instance.DrawCard(); };
            drawParallel = new ActionParallel(firstDraw, secondDraw, thirdDraw);
        }

        Vector3     vec3PlayerPos = DungeonManager.Instance.GridPosToWorldPos(Player.PosX, Player.PosY);
        Vector3     vec3ExitPos   = DungeonManager.Instance.GridPosToWorldPos(DungeonManager.Instance.ExitPosX, DungeonManager.Instance.ExitPosY);
        DelayAction pan           = new DelayAction(2.0f);

        pan.OnActionStart += () => {
            BoardScroller.Instance.FocusCameraToPos(vec3ExitPos, 1.5f, Graph.SmoothStep);
        };
        pan.OnActionFinish += () => {
            BoardScroller.Instance.FocusCameraToPos(vec3PlayerPos, 0.5f, Graph.SmoothStep);
        };

        DelayAction phaseAnimDelay = new DelayAction(0.6f);

        phaseAnimDelay.OnActionFinish += () => {
            EventAnimationController.Instance.ExecutePhaseAnimation(GamePhase.PlayerPhase);
            mbGameStarted = true;
        };

        ActionSequence startSeq = new ActionSequence(drawParallel, pan, phaseAnimDelay);

        ActionHandler.RunAction(startSeq);
    }
 public override void ExecuteCard(CardTier _tier, GridType _moveType)
 {
     DrawCardPanelControls.sDrawTier = _tier;
 }
 public override void ExecuteCard(CardTier _tier, GridType _moveType)
 {
     RepeatPanelControls.sRepeatTier = _tier;
 }
 public override void ExecuteCard(CardTier _tier, GridType _moveType)
 {
     TempShieldPanelControls.sShieldTier = _tier;
 }