CanNotBeTrashedByEffect.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System;
  4. using System.Linq;
  5. using UnityEngine;
  6. public partial class CardEffectFactory
  7. {
  8. #region Static effect that can't be trashed by effect
  9. public static ImmuneStackTrashingClass CanNotBeTrashedBySkillStaticEffect(Func<Permanent, bool> permanentCondition, Func<ICardEffect, bool> cardEffectCondition, bool isInheritedEffect, CardSource card, Func<bool> condition, string effectName)
  10. {
  11. ImmuneStackTrashingClass canNotBeTrashedBySkillClass = new ImmuneStackTrashingClass();
  12. canNotBeTrashedBySkillClass.SetUpICardEffect(effectName, CanUseCondition, card);
  13. canNotBeTrashedBySkillClass.SetUpImmuneFromStackTrashingClass(PermanentCondition, CardEffectCondition);
  14. if (isInheritedEffect)
  15. {
  16. canNotBeTrashedBySkillClass.SetIsInheritedEffect(true);
  17. }
  18. bool CanUseCondition(Hashtable hashtable)
  19. {
  20. return condition == null || condition();
  21. }
  22. bool PermanentCondition(Permanent permanent)
  23. {
  24. if (CardEffectCommons.IsPermanentExistsOnField(permanent))
  25. {
  26. if (!permanent.TopCard.CanNotBeAffected(canNotBeTrashedBySkillClass))
  27. {
  28. if (permanentCondition == null || permanentCondition(permanent))
  29. {
  30. return true;
  31. }
  32. }
  33. }
  34. return false;
  35. }
  36. bool CardEffectCondition(ICardEffect cardEffect)
  37. {
  38. if (cardEffectCondition == null || cardEffectCondition(cardEffect))
  39. {
  40. return true;
  41. }
  42. return false;
  43. }
  44. return canNotBeTrashedBySkillClass;
  45. }
  46. #endregion
  47. }