diff --git a/Assets/Scripts/Alterations/DrawExtraCards.cs b/Assets/Scripts/Alterations/DrawExtraCards.cs index ac38690b289f623df48d334ad5563964f067e4a2..9973b637ad9f0e625469463f63067a2a88625a5e 100644 --- a/Assets/Scripts/Alterations/DrawExtraCards.cs +++ b/Assets/Scripts/Alterations/DrawExtraCards.cs @@ -1,8 +1,11 @@ public class DrawExtraCards : Alteration { + private int mTimeApplyed = 0; + public DrawExtraCards(AlterationInfo info, AlterationPool pool) : base(info, pool) { CardEvent<Card>.Register(Event.CARD_DRAW, OnCardDrawn); + CardEvent<Card>.Register(Event.CARD_EFFECT_APPLIED, OnCardEffectApplied); } private void OnCardDrawn(Card param) @@ -11,10 +14,21 @@ { GameManager.Instance.Hand.ExtraDraw(); } + if (mValue < 0) + { + if (mTimeApplyed < -mValue) + GameManager.Instance.Hand.Discard(param,true); //actually just discard it + } + } + + private void OnCardEffectApplied(Card param) + { + mTimeApplyed = 0; } public override void CleanUp() { CardEvent<Card>.Unregister(Event.CARD_DRAW, OnCardDrawn); + CardEvent<Card>.Unregister(Event.CARD_EFFECT_APPLIED, OnCardEffectApplied); } } diff --git a/Assets/Scripts/CardEvents.cs b/Assets/Scripts/CardEvents.cs index 94d104048718bf4e48149fde92b87333e0113313..dff366c497815ef59eec3b053ae9a404ee737537 100644 --- a/Assets/Scripts/CardEvents.cs +++ b/Assets/Scripts/CardEvents.cs @@ -7,7 +7,8 @@ public enum Event SCORE_GAINED, CARD_PLAYED, CARD_DRAW, - CARD_DISCARD + CARD_DISCARD, + CARD_EFFECT_APPLIED } public class CardEvent<T> diff --git a/Assets/Scripts/Cards/Card.cs b/Assets/Scripts/Cards/Card.cs index aad4eb26d1af830f36f0d4ad7a4739c8b9b3734b..9e580926292c6ac4eeccdbce46e90e2aac7de7cb 100644 --- a/Assets/Scripts/Cards/Card.cs +++ b/Assets/Scripts/Cards/Card.cs @@ -61,6 +61,7 @@ public class Card : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler mEffectMultiplicator = 1; if (Player.Instance.Energy < mCost) return; + Player.Instance.Energy -= mCost; CardEvent<Card>.Trigger(Event.CARD_PLAYED, this); Effect endEffect = null; for (int i = 0; i < mEffectMultiplicator; i++) @@ -78,8 +79,8 @@ public class Card : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler break; } } + CardEvent<Card>.Trigger(Event.CARD_EFFECT_APPLIED, this); gameObject.GetComponentInParent<Hand>().Discard(this); - Player.Instance.Energy -= mCost; } else {