bool CanPlayCard(CardSceneObj c) { bool canPlay = (owner.actions >= c.card.ActionCost && owner.mana >= c.card.ManaCost || !c.isWaitingToPlay); return(canPlay); }
public bool DrawCard() { if (drawDeck.Count == 0) { Debug.Log("Draw Card Fail : Nothing Left in draw deck"); drawDeck.AddRange(discardPile.ToArray()); discardPile.Clear(); } if (drawDeck.Count == 0) { Debug.Log("Draw Card Fail : Nothing in draw deck or discard pile, the player has no cards (!!!???!)"); return(false); } CardSceneObj c = drawDeck[0]; hand.AddCard(c); drawDeck.Remove(c); Debug.Log("CARD DRAWN! : " + c.card.Name); hand.UpdateDeckSizes(); //statUI.SetStats(hero); return(true); }
IEnumerator PlayCards() { Debug.Log("Play Cards Start"); turnState = TurnState.PlayCards; bool isPlaying = false; do { // -- loop cards in card queue if (cardQueue.Count > 0 && !isPlaying) { CardSceneObj card = cardQueue.Dequeue(); isPlaying = true; Debug.Log("Got Card To Play..." + " card : " + card.card.Name + " of " + cardQueue.Count); yield return(StartCoroutine(card.PlayCard())); isPlaying = false; yield return(null); } yield return(null); }while (turnState == TurnState.PlayCards || cardQueue.Count > 0); Debug.Log("Play Cards End"); StartCoroutine(RunEndTurn()); yield return(null); }
public void AddCardToExhaustPile(CardSceneObj card) { owner.exhaustPile.Add(card.card); exhausePileSizeText.text = owner.exhaustPile.Count.ToString(); //card.gameObject.SetActive(false); Vector3 targetPos = Vector3.zero; RectTransform rt = card.GetComponent <RectTransform>(); targetPos.z = 10000; rt.position = targetPos; }
void CreateDeck() { currentDeck = initialDeck; for (int cLoop = 0; cLoop < initialDeck.cards.Count; cLoop++) { CardSceneObj c = CardManager.instance.GetCard(); RectTransform rt = c.GetComponent <RectTransform>(); rt.SetParent(hand.handTransform); rt.position = hand.startTransform.position; c.GetComponent <CardSceneObj>().SetupCard(initialDeck.cards[cLoop]); drawDeck.Add(c.GetComponent <CardSceneObj>()); } }
public void UpdateDrag(PointerEventData eventData, CardSceneObj card) { // show target at mouse cursor. target.GetComponent <RectTransform>().position = eventData.position; // keep card locked in highlighted position // -- what are we over? show color change. RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(eventData.position); if (Physics.Raycast(ray, out hit, 1000)) { if (hit.transform.gameObject.tag == "Player") { // hit player target.GetComponent <Image>().color = Color.red; } else if (hit.transform.gameObject.tag == "Enemy") { // hit player target.GetComponent <Image>().color = Color.green; } else { // hit nowt target.GetComponent <Image>().color = Color.gray; } } // -- if we go below y threshold cancel the drag if (eventData.position.y < CARD_DRAG_THRESHOLD && goneBeyondThreshold) { EndDrag(eventData, card); } // -- show dotted curve between card and cursor // -- check beyond threshold if (eventData.position.y > CARD_DRAG_THRESHOLD) { goneBeyondThreshold = true; } }
public void SetHoveredCard(CardSceneObj card) { if (card == null || card.isDragged) { hoveredCard = null; hoveredCardIndex = -1; } else { hoveredCardIndex = cards.IndexOf(card); for (int i = 0; i < cards.Count; i++) { cards[i].transform.SetSiblingIndex(i); } hoveredCard = card; prevHoverIndex = hoveredCardIndex; cards[prevHoverIndex].gameObject.transform.SetAsLastSibling(); } }
public void AddCard(CardSceneObj c) { RectTransform rt = c.GetComponent <RectTransform>(); rt.position = startTransform.position; //cardSceneObj.card = c; cards.Add(c); c.isWaitingToPlay = false; //gapSize = handWidth / cards.Count; //twistPerCard = totalTwist / cards.Count; //startTwist = -1f * (totalTwist / 2f); c.SetHand(this); //statUI.SetStats(); }
public void StartDrag(PointerEventData eventData, CardSceneObj card) { goneBeyondThreshold = false; }
public void EndDrag(PointerEventData eventData, CardSceneObj card) { // -- if somehow we have managed to play card twice (OnDrop & OnDragEnd at once etc...) //if (card.isWaitingToPlay) //{ // return; //} // -- what are we over? RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(eventData.position); if (Physics.Raycast(ray, out hit, 1000)) { if (CanPlayCard(card)) { if (hit.transform.gameObject.tag == "Player") { // hit player TurnController.instance.AddCardToPlayedQueue(card); owner.actions -= card.card.ActionCost; owner.mana -= card.card.ManaCost; card.isWaitingToPlay = true; cards.Remove(card); Vector3 targetPos = Vector3.zero; RectTransform rt = card.GetComponent <RectTransform>(); targetPos.z = 10000; rt.position = targetPos; // -- Send to proper pile - done at end of sequence not at start if (card.card.exhaust) { // -- send to exhaust pile AddCardToExhaustPile(card); } else { // -- send to discard pile AddCardToDiscardPile(card); } OnScreenDebug.instance.Log(card.card.Name); } else if (hit.transform.gameObject.tag == "Enemy") { TurnController.instance.AddCardToPlayedQueue(card); // hit enemy owner.actions -= card.card.ActionCost; owner.mana -= card.card.ManaCost; card.isWaitingToPlay = true; cards.Remove(card); // -- Send to proper pile - done at end of sequence not at start if (card.card.exhaust) { // -- send to exhaust pile AddCardToExhaustPile(card); } else { // -- send to discard pile AddCardToDiscardPile(card); } OnScreenDebug.instance.Log(card.card.Name); } else { // hit nowt if (card.card.TargetFlags == Card.Targets.None) { TurnController.instance.AddCardToPlayedQueue(card); //card.PlayCard(); owner.actions -= card.card.ActionCost; owner.mana -= card.card.ManaCost; card.isWaitingToPlay = true; cards.Remove(card); Vector3 targetPos = Vector3.zero; RectTransform rt = card.GetComponent <RectTransform>(); targetPos.z = 10000; rt.position = targetPos; // -- Send to proper pile - done at end of sequence not at start if (card.card.exhaust) { // -- send to exhaust pile AddCardToExhaustPile(card); } else { // -- send to discard pile AddCardToDiscardPile(card); } OnScreenDebug.instance.Log(card.card.Name); } } } } card.isDragged = false; // owner.statUI.SetStats(owner); UpdateDeckSizes(); }
public void AddCardToPlayedQueue(CardSceneObj card) { Debug.Log("Card Added To Play Queue : " + card.card.Name); cardQueue.Enqueue(card); }