diff --git a/Assets/Scripts/Cards/Card.cs b/Assets/Scripts/Cards/Card.cs index 9e580926292c6ac4eeccdbce46e90e2aac7de7cb..5591d62505c8765e6517e67d2542671a71ecca4c 100644 --- a/Assets/Scripts/Cards/Card.cs +++ b/Assets/Scripts/Cards/Card.cs @@ -62,6 +62,7 @@ public class Card : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler if (Player.Instance.Energy < mCost) return; Player.Instance.Energy -= mCost; + gameObject.GetComponentInParent<Hand>().Discard(this); CardEvent<Card>.Trigger(Event.CARD_PLAYED, this); Effect endEffect = null; for (int i = 0; i < mEffectMultiplicator; i++) @@ -79,8 +80,7 @@ public class Card : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler break; } } - CardEvent<Card>.Trigger(Event.CARD_EFFECT_APPLIED, this); - gameObject.GetComponentInParent<Hand>().Discard(this); + CardEvent<Card>.Trigger(Event.CARD_EFFECT_APPLIED, this); } else { diff --git a/Assets/Scripts/Deck/Deck.cs b/Assets/Scripts/Deck/Deck.cs index e965846fdc05c8ecc456b4ab11d5e284ee9752cc..b4d7a9882f8a3a1c8bebda9aa7163aefaa9d95f5 100644 --- a/Assets/Scripts/Deck/Deck.cs +++ b/Assets/Scripts/Deck/Deck.cs @@ -8,6 +8,8 @@ public class Deck : MonoBehaviour private List<Card> totalCards; [SerializeField] + private List<Card> deckPreview; + public Stack<Card> currentDeck; [SerializeField] @@ -20,12 +22,14 @@ public class Deck : MonoBehaviour { totalCards = new List<Card>(GetComponentsInChildren<Card>()); currentDeck = new Stack<Card>(); + foreach (Card card in totalCards) { initializer.InitCard(card); card.gameObject.SetActive(false); currentDeck.Push(card); } + deckPreview = currentDeck.ToList(); } } @@ -35,8 +39,13 @@ public class Deck : MonoBehaviour if(currentDeck.Count == 0) { Reshuffle(); + } - return currentDeck.Pop(); + Card result = currentDeck.Pop(); + deckPreview = currentDeck.ToList(); + return result; + + } @@ -70,6 +79,7 @@ public class Deck : MonoBehaviour totalCards.Insert(j, card); } PutCardInDeck(card); + deckPreview = currentDeck.ToList(); } public void PutCardInDeck(Card card) @@ -97,6 +107,7 @@ public class Deck : MonoBehaviour Card tmp = dump.Pop(); PutCardInDeck(tmp); ShuffleDeck(); + deckPreview = currentDeck.ToList(); } if(currentDeck.Count == 0) { diff --git a/Assets/Scripts/Deck/Dump.cs b/Assets/Scripts/Deck/Dump.cs index 028f065b4fbe7a549d75dc130e1cfc419de3ab86..9b4bb9e7431c1989d92fe1f6c79fdd376658c8f9 100644 --- a/Assets/Scripts/Deck/Dump.cs +++ b/Assets/Scripts/Deck/Dump.cs @@ -1,9 +1,13 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using System.Linq; public class Dump : MonoBehaviour { + [SerializeField] + private List<Card> dumpPreview; + public Stack<Card> dumpStack; public static Dump Instance @@ -24,6 +28,7 @@ public class Dump : MonoBehaviour } dumpStack = new Stack<Card>(); + dumpPreview = dumpStack.ToList(); } public void Discard(Card card) @@ -38,24 +43,12 @@ public class Dump : MonoBehaviour { CardEvent<Card>.Trigger(Event.CARD_DISCARD, card); card.transform.SetParent(transform); - card.gameObject.SetActive(false); dumpStack.Push(card); - } + card.gameObject.SetActive(false); + dumpStack.Push(card); + dumpPreview = dumpStack.ToList(); - public void Init() - { - if (Instance == null) - { - Instance = this; - } - else if(Instance != this) - { - DestroyImmediate(this); - } - - dumpStack = new Stack<Card>(); } - public Stack<Card> Recycle () { Stack<Card> result = new Stack<Card>(); @@ -64,13 +57,16 @@ public class Dump : MonoBehaviour { result.Push(dumpStack.Pop()); } - + dumpPreview = dumpStack.ToList(); return result; } public Card Draw() { - return dumpStack.Pop(); + + Card result = dumpStack.Pop(); + dumpPreview = dumpStack.ToList(); + return result; } diff --git a/Assets/Scripts/Deck/Hand.cs b/Assets/Scripts/Deck/Hand.cs index 171568636803ce05c4867b5a4fe5d81feb7128b1..475b27a2c472a4c13cd77c9af56841d442728c90 100644 --- a/Assets/Scripts/Deck/Hand.cs +++ b/Assets/Scripts/Deck/Hand.cs @@ -33,13 +33,12 @@ public class Hand : MonoBehaviour public void Draw() { - Debug.Log("Drawing"); Card newCard = deck.Draw(); - - if(hand.Count < MaxHandSize) + hand.Add(newCard); + if (hand.Count <= MaxHandSize) { - hand.Add(newCard); + newCard.transform.SetParent(transform); newCard.gameObject.SetActive(true); newCard.GetComponent<CardUi>().Show(); @@ -47,17 +46,17 @@ public class Hand : MonoBehaviour } else { - Discard(newCard); + + Discard(newCard,true); } } public void ExtraDraw() { Card newCard = deck.Draw(); - - if (hand.Count < MaxHandSize) + hand.Add(newCard); + if (hand.Count <= MaxHandSize) { - hand.Add(newCard); newCard.transform.SetParent(transform); newCard.gameObject.SetActive(true); newCard.GetComponent<CardUi>().Show(); @@ -65,7 +64,7 @@ public class Hand : MonoBehaviour } else { - Discard(newCard); + Discard(newCard,true); } }