Collision.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 of [Collision] on oneself
  9. public static ActivateClass CollisionSelfStaticEffect(bool isInheritedEffect, CardSource card, Func<bool> condition)
  10. {
  11. Permanent targetPermanent = card.PermanentOfThisCard();
  12. bool PermanentCondition(Permanent permanent) => permanent == card.PermanentOfThisCard();
  13. bool CanUseCondition()
  14. {
  15. if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
  16. {
  17. if (card.Owner.Enemy.GetBattleAreaDigimons().Count() > 0)
  18. {
  19. if (GManager.instance.attackProcess.IsAttacking)
  20. {
  21. if (GManager.instance.attackProcess.AttackingPermanent == card.PermanentOfThisCard())
  22. {
  23. if (condition == null || condition())
  24. {
  25. return true;
  26. }
  27. }
  28. }
  29. }
  30. }
  31. return false;
  32. }
  33. return CollisionStaticEffect(permanentCondition: PermanentCondition, isInheritedEffect: isInheritedEffect, card: card, condition: CanUseCondition);
  34. }
  35. #endregion
  36. #region Static effect of [Collision]
  37. public static ActivateClass CollisionStaticEffect(
  38. Func<Permanent, bool> permanentCondition,
  39. bool isInheritedEffect,
  40. CardSource card,
  41. Func<bool> condition)
  42. {
  43. ActivateClass activateClass = new ActivateClass();
  44. activateClass.SetUpICardEffect("Collision", CanUseCondition, card);
  45. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
  46. activateClass.SetIsInheritedEffect(isInheritedEffect);
  47. string EffectDiscription()
  48. {
  49. return DataBase.CollisionEffectDiscription();
  50. }
  51. bool PermanentCondition(Permanent permanent)
  52. {
  53. if (CardEffectCommons.IsPermanentExistsOnBattleArea(permanent))
  54. {
  55. if (permanentCondition == null || permanentCondition(permanent))
  56. {
  57. return true;
  58. }
  59. }
  60. return false;
  61. }
  62. bool CanUseCondition(Hashtable hashtable)
  63. {
  64. if (condition == null || condition())
  65. {
  66. if(PermanentCondition(card.PermanentOfThisCard()))
  67. return true;
  68. }
  69. return false;
  70. }
  71. bool CanActivateCondition(Hashtable hashtable)
  72. {
  73. return true;
  74. }
  75. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  76. {
  77. return CardEffectCommons.CollisionProcess(card, activateClass);
  78. }
  79. return activateClass;
  80. }
  81. #endregion
  82. }