Exemplo n.º 1
0
    private void Resolve(bool resolved, GameObject card, Effects.EffectType trigger = Effects.EffectType.None)
    {
        CardBase cardInfo = card.GetComponent <CardBase>();

        if (resolved)
        {
            if (cardInfo.cardType == CardBase.CardType.Spell)
            {
                cardInfo.owner.GraveYard.Add(cardInfo.gameObject);
                switch (cardInfo.currentLocation)
                {
                case DuelManager.CardLocations.Hand:
                    cardInfo.owner.Hand.Remove(cardInfo.gameObject);
                    break;

                default:
                    cardInfo.owner.Hand.Remove(cardInfo.gameObject);
                    break;
                }
                if (duelManager.turnPlayer == cardInfo.owner)
                {
                    cardInfo.owner.UseMana(cardInfo.manaCost);
                }
            }
        }
        else if (!resolved)
        {
            if (cardInfo.cardType == CardBase.CardType.Creature || cardInfo.cardType == CardBase.CardType.EvolutionCreature)
            {
                if (cardInfo.keyWord.Contains(CardBase.KeyWordEffects.MustResolveEffect))
                {
                    Destroy(cardInfo.owner, cardInfo.gameObject);
                }
            }
        }

        cardInfo.GetComponent <BoxCollider>().enabled = true;
        duelManager.activeCard = null;
        duelManager.targetCard = null;
        duelManager.evoTarget  = null;

        //This is where I will trigger effects for casting or summoning
        if (EffectListener.instance.DispatchEventToAllActiveCards(trigger, cardInfo, cardInfo.owner))
        {
            duelManager.duelState = DuelManager.DuelState.None;
        }
    }
Exemplo n.º 2
0
    public bool DispatchEventToAllActiveCards(Effects.EffectType eventType, CardBase cardPlayed, Player cardPlayedOwner)
    {
        Player playerToResolveFirst  = null;
        Player playerToResolveSecond = null;

        List <CardBase> effectResolutionQueue = new List <CardBase>();

        //turn Player will be checked first
        if (duelManager.turnPlayer == duelManager.player1)
        {
            playerToResolveFirst  = duelManager.player1;
            playerToResolveSecond = duelManager.player2;
        }
        else
        {
            playerToResolveFirst  = duelManager.player2;
            playerToResolveSecond = duelManager.player1;
        }

        //resolve all triggered effects of the turn player
        foreach (GameObject card in playerToResolveFirst.BattleZone)
        {
            CardBase cardInfo = card.GetComponent <CardBase>();
            if (cardInfo.effectType.Contains(eventType))
            {
                effectResolutionQueue.Add(cardInfo);
            }
        }

        foreach (GameObject card in playerToResolveSecond.BattleZone)
        {
            CardBase cardInfo = card.GetComponent <CardBase>();
            if (cardInfo.effectType.Contains(eventType))
            {
                effectResolutionQueue.Add(cardInfo);
            }
        }

        if (effectResolutionQueue.Count == 0)
        {
            return(true);
        }
        return(false);
    }