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; } }
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); }