Example #1
0
    public static void Click(Entity entity)
    {
        if (State != BattleActionState.SelectTargets || _activeCard == null)
        {
            return;
        }

        _targets.Add(entity);

        if (_activeCard.MeCard.NumTargets > _targets.Count)
        {
            return;
        }

        State = BattleActionState.HandleTurn;
        if (_activeCard.MeCard.NumTargets < _targets.Count)
        {
            Debug.Log("Too many targets! Card: " + _activeCard.GetType().FullName);
            _activeCard.MeCard.Cast(_targets.Take(_activeCard.MeCard.NumTargets).ToList());
        }
        else if (_activeCard.MeCard.NumTargets == _targets.Count)
        {
            _activeCard.MeCard.Cast(_targets);
        }

        Deck.Discards.Add(_activeCard.MeCard);
        _activeCard.DestroyCard();
        _activeCard = null;
        _targets.Clear();
        Deck.DrawCard();
        RoomMB.ActiveRoom.StartCoroutine(WaitAndAttackPlayer());
    }
Example #2
0
    public static void ClearActive()
    {
        if (State == BattleActionState.HandleTurn)
        {
            return;
        }

        _activeCard = null;
        _targets.Clear();
        State = BattleActionState.SelectCard;
    }
Example #3
0
    public static void Discard(CardMB cardMb)
    {
        if (!Hand.Contains(cardMb))
        {
            throw new Exception("Card isn't able to be discarded");
        }

        Hand.Remove(cardMb);
        Discards.Add(cardMb.MeCard);
        UnityEngine.Object.Destroy(cardMb.gameObject);
    }
Example #4
0
    private void Start()
    {
        YesButton.OnClick = Accept;
        NoButton.OnClick  = Reject;

        _card = (Card)Activator.CreateInstance(CardList.GetRandomCard());
        CardMB c = CardMB.Spawn(_card);

        _cardObject = c.gameObject;
        Destroy(c);
        _cardObject.transform.position = CardTarget.transform.position;
    }
Example #5
0
    public static void Click(CardMB cardMb)
    {
        if (State != BattleActionState.SelectCard)
        {
            return;
        }
        if (!Player.PlayerRef.CanCast(cardMb.MeCard))
        {
            return;
        }

        _activeCard = cardMb;
        State       = BattleActionState.SelectTargets;
    }
Example #6
0
    public static void InsertIntoHand(CardMB cardMb)
    {
        float cardMbX = cardMb.transform.position.x;

        for (int i = 0; i < Hand.Count; i++)
        {
            if (cardMbX < HandMB.CalculatePos(i))
            {
                Hand.Insert(i, cardMb);
                return;
            }
        }

        Hand.Add(cardMb);
    }
Example #7
0
    public static void DrawCard()
    {
        // if Draws empty, shuffle discard and put into Draws
        if (Draws.Count == 0)
        {
            Shuffle(Discards);
            Draws    = Discards;
            Discards = new List <Card>();
        }

        CardMB newCard = CardMB.Spawn(Draws[0]);

        Hand.Add(newCard);
        Draws.RemoveAt(0);
    }
Example #8
0
    public static CardMB Spawn(Card c)
    {
        GameObject cardObject = Instantiate(CardPrefab);
        CardMB     cardMb     = cardObject.GetComponent <CardMB>();

        switch (c.GetCardType())
        {
        case CardType.AttackCard:
            cardMb.CardSprite.sprite = CardBgs[0];
            break;

        case CardType.BuffCard:
            cardMb.CardSprite.sprite = CardBgs[1];
            break;

        case CardType.HealingCard:
            cardMb.CardSprite.sprite = CardBgs[2];
            break;

        case CardType.SummonCard:
            cardMb.CardSprite.sprite = CardBgs[3];
            break;

        default:
            throw new ArgumentException("Invalid card: " + c.GetType().FullName);
        }

        cardMb.CardArt.sprite = c.CardArt;

        TextMeshPro text = cardObject.GetComponentInChildren <TextMeshPro>();

        string[] textLines = c.Description.Split('\n');
        text.text = string.Format("<b>{0}</b>\n<i>{1}</i>\n{2}", textLines);

        cardMb.Init(c, new Vector2(HandMB.CalculatePos(Deck.Hand.Count), 1.5f));

        return(cardMb);
    }