public void Collect() { int cardCount = 0; //cardModel.isPick = false; if (CardModel.waitingCards.Count == 3) { foreach (int i in deck.GetDeck()) { cardModel = cards[i].GetComponent <CardModel>(); if (!cardModel.isPick) { float x = cardOffset * cardCount; Vector3 spos = cards[i].transform.position; Vector3 epos = originalCard.position + new Vector3(-x, 0f, -x); Quaternion rotation = cards[i].transform.rotation; StartCoroutine(cardModel.Move(spos, epos, rotation, rotation, 1f)); cardCount++; } else { //wcards.setList(i); WaitingCards.indexList.Add(i); cardModel.setPickingPhase(false); } //else cardModel.inPickingPhase = false; } StartCoroutine(TransitionToNewScreen()); } Debug.Log("print: " + CardModel.waitingCards.Count); }
//Compress cards into two decks public IEnumerator PutIntoTwoDecks() { //Seperate cards into two piles int halfLength = cards.Length / 2; int cardCount = 0; //Add Left and right card prefab //Count the number of cards on the list and divide by two //Then use the divided number into two new lists for the cards for (int i = 0; i < halfLength; ++i) { //For LeftCard float x = spaceBetweenCard * cardCount; Vector3 end = new Vector3(cardCount * 0.05f, 0, x); Vector3 startPos = cards[i].transform.position; Quaternion rotation = cards[i].transform.rotation; // Vector3 temp = start + new Vector3(-x, 0, -x); cardModel = cards[i].GetComponent <CardModel>(); StartCoroutine(cardModel.Move(startPos, end, rotation, rotation, 1f)); cardCount++; } yield return(new WaitForSeconds(.4f)); //De_Spread(); for (int i = halfLength; i < cards.Length; ++i) { //For RightCard float x = spaceBetweenCard * cardCount; Vector3 end = new Vector3(cardCount * -0.05f, 0, x); Vector3 startPos = -cards[i].transform.position; Quaternion rotation = cards[i].transform.rotation; // Vector3 temp = start + new Vector3(-x, 0, -x); cardModel = cards[i].GetComponent <CardModel>(); StartCoroutine(cardModel.Move(startPos, end, rotation, rotation, 1f)); cardCount++; } yield return(new WaitForSeconds(.4f)); foreach (int i in deck.GetDeck()) { float x = spaceBetweenCard * cardCount; Vector3 end = start + new Vector3(.001f, 0, -0.15f); Vector3 startPos = cards[i].transform.position; Quaternion rotation = cards[i].transform.rotation; cardModel = cards[i].GetComponent <CardModel>(); StartCoroutine(cardModel.Move(startPos, end, rotation, rotation, 2f)); cardModel.isPick = false; //reset the picking card condition cardCount++; } }
// Extract cards from the deck void SpreadCards() { mainSound.clip = clipArray[0]; //Spread sound mainSound.PlayOneShot(mainSound.clip); int cardCount = 0; foreach (int i in deck.GetDeck()) { float x = spaceBetweenCard * cardCount; Vector3 end = start + new Vector3(x, 0f); Vector3 startPos = cards[i].transform.position; Quaternion rotation = cards[i].transform.rotation; cardModel = cards[i].GetComponent <CardModel>(); StartCoroutine(cardModel.Move(startPos, end, rotation, rotation, 1f)); cardCount++; } }
// Compress cards into the deck void De_Spread() { mainSound.clip = clipArray[1]; //De SPread sound mainSound.PlayOneShot(mainSound.clip); cardModel.setEmptyQueue(); // Clear current queue float spaceBetweenCard = 0.001f; int cardCount = 0; foreach (int i in deck.GetDeck()) { float x = spaceBetweenCard * cardCount; Vector3 startPos = cards[i].transform.position; Vector3 endPos = start + new Vector3(-x, 0f, -x); Quaternion rotation = cards[i].transform.rotation; cardModel = cards[i].GetComponent <CardModel>(); StartCoroutine(cardModel.Move(startPos, endPos, rotation, rotation, 2f)); cardModel.isPick = false; //reset the picking card condition cardCount++; } }
public IEnumerator Shuffle() { Queue <int> leftQueue = new Queue <int>(); Queue <int> rightQueue = new Queue <int>(); //Seperate cards into two piles int halfLength = cards.Length / 2; int cardCount = 0; Vector3 endPos; Vector3 startPos; Quaternion endRotation; foreach (int i in deck.GetDeck()) { float x = cardOffset * cardCount; if (cardCount < halfLength) { endPos = leftCard.position + new Vector3(-x, 0, -x); endRotation = leftCard.rotation; leftQueue.Enqueue(i); } else { if (cardCount == halfLength) { yield return(new WaitForSeconds(.4f)); } //reset offset value for the right deck float x2 = cardOffset * (cardCount - halfLength); endPos = rightCard.position + new Vector3(x2, 0, x2); endRotation = rightCard.rotation; rightQueue.Enqueue(i); } startPos = cards[i].transform.position; Quaternion startRotation = cards[i].transform.rotation; cardModel = cards[i].GetComponent <CardModel>(); StartCoroutine(cardModel.Move(startPos, endPos, startRotation, endRotation, 1f)); cardCount++; } yield return(new WaitForSeconds(.4f)); mainSound.clip = clipArray[2]; //shullfe sound mainSound.PlayOneShot(mainSound.clip); endRotation = originalCard.rotation; for (int i = 0; i < cards.Length; ++i) { int index; float x = cardOffset * cardCount; if (i % 2 == 0) { index = leftQueue.Dequeue(); } else { index = rightQueue.Dequeue(); } endPos = originalCard.position + new Vector3(-x, 0, -x); startPos = cards[index].transform.position; Quaternion startRotation = cards[index].transform.rotation; cardModel = cards[index].GetComponent <CardModel>(); StartCoroutine(cardModel.Move(startPos, endPos, startRotation, endRotation, 1.9f)); cardModel.isPick = false; //reset the picking card condition cardCount++; yield return(new WaitForSeconds(.05f)); } }