Fortitude.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 Trigger effect of [Fortitude] on oneself
  9. public static ActivateClass FortitudeSelfEffect(bool isInheritedEffect, CardSource card, Func<bool> condition)
  10. {
  11. Permanent targetPermanent = card.PermanentOfThisCard() ?? new Permanent(new List<CardSource>() { card });
  12. bool CanUseCondition()
  13. {
  14. if (condition == null || condition())
  15. {
  16. return true;
  17. }
  18. return false;
  19. }
  20. return FortitudeEffect(
  21. targetPermanent: targetPermanent,
  22. isInheritedEffect: isInheritedEffect,
  23. condition: CanUseCondition,
  24. rootCardEffect: null, card);
  25. }
  26. #endregion
  27. #region Trigger effect of [Fortitude]
  28. public static ActivateClass FortitudeEffect(Permanent targetPermanent, bool isInheritedEffect, Func<bool> condition, ICardEffect rootCardEffect, CardSource card)
  29. {
  30. if (targetPermanent == null) return null;
  31. if (targetPermanent.TopCard == null) return null;
  32. if (card == null) return null;
  33. ActivateClass activateClass = new ActivateClass();
  34. activateClass.SetUpICardEffect("Fortitude", CanUseCondition, card);
  35. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, DataBase.FortitudeEffectDiscription());
  36. activateClass.SetHashString($"Fortitude_{card.CardID}" + (isInheritedEffect ? "_inherited" : ""));
  37. activateClass.SetIsInheritedEffect(isInheritedEffect);
  38. if (rootCardEffect != null)
  39. {
  40. activateClass.SetIsInheritedEffect(false);
  41. activateClass.SetEffectSourcePermanent(targetPermanent);
  42. activateClass.SetRootCardEffect(rootCardEffect);
  43. }
  44. bool CanUseCondition(Hashtable hashtable)
  45. {
  46. if (CardEffectCommons.CanTriggerFortitude(hashtable, card, activateClass))
  47. {
  48. if (condition == null || condition())
  49. {
  50. return true;
  51. }
  52. }
  53. return false;
  54. }
  55. bool CanActivateCondition(Hashtable hashtable)
  56. {
  57. return CardEffectCommons.CanActivateFortitude(hashtable, card, isInheritedEffect, activateClass);
  58. }
  59. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  60. {
  61. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.FortitudeProcess(_hashtable, card, activateClass));
  62. }
  63. return activateClass;
  64. }
  65. #endregion
  66. }