From 66d4e82d4e2dc52e1627608fb06c20aa83b0287a Mon Sep 17 00:00:00 2001 From: Samir LABANE <samir.labane@ensiie.fr> Date: Mon, 5 Aug 2019 14:30:58 +0200 Subject: [PATCH] fix draw --- Assets/Scripts/Alterations/DrawExtraCards.cs | 14 ++++++++++++++ Assets/Scripts/CardEvents.cs | 3 ++- Assets/Scripts/Cards/Card.cs | 3 ++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Assets/Scripts/Alterations/DrawExtraCards.cs b/Assets/Scripts/Alterations/DrawExtraCards.cs index ac38690..9973b63 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 94d1040..dff366c 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 aad4eb2..9e58092 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 { -- GitLab