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