GiveEffectToPermanentOrPlayer.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System;
  4. using System.Linq;
  5. using UnityEngine;
  6. public partial class CardEffectCommons
  7. {
  8. #region Add effects to 1 target permanent
  9. public static void AddEffectToPermanent(Permanent targetPermanent, EffectDuration effectDuration, CardSource card, ICardEffect cardEffect, EffectTiming timing)
  10. {
  11. Func<EffectTiming, ICardEffect> getCardEffect = GetCardEffectByEffectTiming(timing: timing, cardEffect: cardEffect);
  12. switch (effectDuration)
  13. {
  14. case EffectDuration.UntilOpponentTurnEnd:
  15. if (IsOwnerPermanent(targetPermanent, card))
  16. {
  17. targetPermanent.UntilOpponentTurnEndEffects.Add(getCardEffect);
  18. }
  19. else
  20. {
  21. targetPermanent.UntilOwnerTurnEndEffects.Add(getCardEffect);
  22. }
  23. break;
  24. case EffectDuration.UntilOwnerTurnEnd:
  25. if (IsOwnerPermanent(targetPermanent, card))
  26. {
  27. targetPermanent.UntilOwnerTurnEndEffects.Add(getCardEffect);
  28. }
  29. else
  30. {
  31. targetPermanent.UntilOpponentTurnEndEffects.Add(getCardEffect);
  32. }
  33. break;
  34. case EffectDuration.UntilEachTurnEnd:
  35. targetPermanent.UntilEachTurnEndEffects.Add(getCardEffect);
  36. break;
  37. case EffectDuration.UntilEndAttack:
  38. targetPermanent.UntilEndAttackEffects.Add(getCardEffect);
  39. break;
  40. case EffectDuration.UntilNextUntap:
  41. targetPermanent.UntilNextUntapEffects.Add(getCardEffect);
  42. break;
  43. }
  44. }
  45. #endregion
  46. #region Add effects to 1 target player
  47. public static void AddEffectToPlayer(EffectDuration effectDuration, CardSource card, ICardEffect cardEffect, EffectTiming timing, Func<EffectTiming, ICardEffect> getCardEffect = null)
  48. {
  49. Player player = card.Owner;
  50. getCardEffect ??= GetCardEffectByEffectTiming(timing: timing, cardEffect: cardEffect);
  51. switch (effectDuration)
  52. {
  53. case EffectDuration.UntilOpponentTurnEnd:
  54. player.UntilOpponentTurnEndEffects.Add(getCardEffect);
  55. break;
  56. case EffectDuration.UntilOwnerTurnEnd:
  57. player.UntilOwnerTurnEndEffects.Add(getCardEffect);
  58. break;
  59. case EffectDuration.UntilEachTurnEnd:
  60. player.UntilEachTurnEndEffects.Add(getCardEffect);
  61. break;
  62. case EffectDuration.UntilEndBattle:
  63. player.UntilEndBattleEffects.Add(getCardEffect);
  64. break;
  65. case EffectDuration.UntilOwnerActivePhase:
  66. player.Enemy.UntilOwnerActivePhaseEffects.Add(getCardEffect);
  67. break;
  68. case EffectDuration.UntilCalculateFixedCost:
  69. player.UntilCalculateFixedCostEffect.Add(getCardEffect);
  70. break;
  71. }
  72. }
  73. #endregion
  74. }