Collision.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Collections;
  3. public partial class CardEffectFactory
  4. {
  5. #region Static effect of [Collision] on oneself
  6. public static CollisionClass CollisionSelfStaticEffect(bool isInheritedEffect, CardSource card, Func<bool> condition, bool isLinkedEffect = false)
  7. {
  8. bool PermanentCondition(Permanent permanent) => permanent == card.PermanentOfThisCard();
  9. bool CanUseCondition()
  10. {
  11. if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
  12. {
  13. if (condition == null || condition())
  14. {
  15. return true;
  16. }
  17. }
  18. return false;
  19. }
  20. return CollisionStaticEffect(permanentCondition: PermanentCondition, isInheritedEffect: isInheritedEffect, card: card, condition: CanUseCondition, isLinkedEffect: isLinkedEffect);
  21. }
  22. #endregion
  23. #region Static effect of [Collision]
  24. public static CollisionClass CollisionStaticEffect(
  25. Func<Permanent, bool> permanentCondition,
  26. bool isInheritedEffect,
  27. CardSource card,
  28. Func<bool> condition,
  29. bool isLinkedEffect = false)
  30. {
  31. CollisionClass collisionClass = new();
  32. collisionClass.SetUpICardEffect("Collision", CanUseCondition, card);
  33. collisionClass.SetUpCollisionClass(PermanentCondition);
  34. collisionClass.SetIsInheritedEffect(isInheritedEffect);
  35. collisionClass.SetIsLinkedEffect(isLinkedEffect);
  36. bool PermanentCondition(Permanent permanent)
  37. {
  38. if (CardEffectCommons.IsPermanentExistsOnBattleArea(permanent))
  39. {
  40. if (permanentCondition == null || permanentCondition(permanent))
  41. {
  42. return true;
  43. }
  44. }
  45. return false;
  46. }
  47. bool CanUseCondition(Hashtable hashtable)
  48. {
  49. return condition == null || condition();
  50. }
  51. return collisionClass;
  52. }
  53. #endregion
  54. }