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); }
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); }
public override void ExecuteCard(CardTier _tier, GridType _moveType) { MovementJokerPanelControls.sJokerTier = _tier; }
public override void ExecuteCard(CardTier _tier, GridType _moveType) { GameManager.Instance.Player.SetMovementType(_moveType); }
public override void ExecuteCard(CardTier _tier, GridType _moveType) { SmashPanelControls.sSmashTier = _tier; }
/// <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());
public void SetCard(CardType _type, CardTier _tier) { mCardData.Type = _type; mCardData.Tier = _tier; }
private Sprite GetSprite(CardType _type, CardTier _tier) { return(cardSprites[Array.IndexOf(cardSpriteNames, "Card_" + _type.ToString() + "_" + _tier.ToString())]); }
public CardData(CardType _type, CardTier _tier, GridType _moveType) { Type = _type; Tier = _tier; MoveType = _moveType; }
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); }
public abstract void ExecuteCard(CardTier _tier, GridType _moveType);
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; }