TrialDraw.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.EventSystems;
  6. public class TrialDraw : MonoBehaviour
  7. {
  8. public CardPrefab_CreateDeck cardPrefab_CreateDeckPrefab;
  9. public Animator anim;
  10. public ScrollRect CardScroll;
  11. public DetailCard_DeckEditor detailCard;
  12. public Text DeckCountText;
  13. List<CEntity_Base> originalDeckCards = new List<CEntity_Base>();
  14. List<CEntity_Base> deckCards = new List<CEntity_Base>();
  15. List<CEntity_Base> drewCards = new List<CEntity_Base>();
  16. public Button drawButton;
  17. public IEnumerator SetUpTrialDraw(List<CEntity_Base> cEntity_Bases)
  18. {
  19. if (cEntity_Bases.Count == 0)
  20. {
  21. yield break;
  22. }
  23. detailCard.OffDetailCard();
  24. originalDeckCards = new List<CEntity_Base>();
  25. foreach (CEntity_Base cEntity_Base in cEntity_Bases)
  26. {
  27. originalDeckCards.Add(cEntity_Base);
  28. }
  29. yield return ContinuousController.instance.StartCoroutine(Set(originalDeckCards));
  30. }
  31. IEnumerator Set(List<CEntity_Base> cEntity_Bases)
  32. {
  33. drawButton.interactable = false;
  34. drawButton.transform.parent.gameObject.SetActive(false);
  35. deckCards = new List<CEntity_Base>();
  36. drewCards = new List<CEntity_Base>();
  37. foreach (CEntity_Base cEntity_Base in cEntity_Bases)
  38. {
  39. deckCards.Add(cEntity_Base);
  40. }
  41. deckCards = RandomUtility.ShuffledDeckCards(deckCards);
  42. //detailCard.OffDetailCard();
  43. for (int i = 0; i < CardScroll.content.childCount; i++)
  44. {
  45. Destroy(CardScroll.content.GetChild(i).gameObject);
  46. }
  47. yield return new WaitWhile(() => CardScroll.content.childCount > 0);
  48. for (int i = 0; i < 5; i++)
  49. {
  50. DrawCard();
  51. }
  52. yield return new WaitWhile(() => CardScroll.content.childCount < drewCards.Count);
  53. this.gameObject.SetActive(true);
  54. Open();
  55. drawButton.interactable = deckCards.Count >= 1;
  56. drawButton.transform.parent.gameObject.SetActive(deckCards.Count >= 1);
  57. }
  58. public void DrawCard()
  59. {
  60. if (deckCards.Count >= 1)
  61. {
  62. CEntity_Base drewCard = deckCards[0];
  63. deckCards.Remove(drewCard);
  64. drewCards.Add(drewCard);
  65. CardPrefab_CreateDeck _cardPrefab_CreateDeck = null;
  66. _cardPrefab_CreateDeck = Instantiate(cardPrefab_CreateDeckPrefab, CardScroll.content);
  67. _cardPrefab_CreateDeck.OnEnterAction = (cardPrefab) => { OnDetailCard(drewCard); };
  68. //_cardPrefab_CreateDeck.OnExitAction = (cardPrefab) => { OffDetailCard(); };
  69. SetUpDeckCard(_cardPrefab_CreateDeck, drewCard);
  70. //_cardPrefab_CreateDeck.HideDeckCardTab();
  71. ContinuousController.instance.StartCoroutine(Align());
  72. }
  73. EventSystem.current.SetSelectedGameObject(transform.GetChild(0).gameObject);
  74. drawButton.interactable = deckCards.Count >= 1;
  75. drawButton.transform.parent.gameObject.SetActive(deckCards.Count >= 1);
  76. SetDeckCountText();
  77. }
  78. IEnumerator Align()
  79. {
  80. yield return new WaitForSeconds(Time.deltaTime);
  81. CardScroll.verticalNormalizedPosition = 0;
  82. }
  83. public void Open()
  84. {
  85. On();
  86. anim.SetInteger("Open", 1);
  87. anim.SetInteger("Close", 0);
  88. }
  89. public void Close()
  90. {
  91. //OffDetailCard();
  92. anim.SetInteger("Open", 0);
  93. anim.SetInteger("Close", 1);
  94. }
  95. public void On()
  96. {
  97. this.gameObject.SetActive(true);
  98. }
  99. public void Off()
  100. {
  101. this.gameObject.SetActive(false);
  102. //Close();
  103. }
  104. #region Card Detail View
  105. public void OffDetailCard()
  106. {
  107. //detailCard.GetComponent<DetailCard_DeckEditor>().OffDetailCard();
  108. }
  109. public void OnDetailCard(CEntity_Base cEntity_Base)
  110. {
  111. detailCard.GetComponent<DetailCard_DeckEditor>().SetUpDetailCard(cEntity_Base);
  112. }
  113. #endregion
  114. public void SetUpDeckCard(CardPrefab_CreateDeck _cardPrefab_CreateDeck, CEntity_Base cEntity_Base)
  115. {
  116. foreach (ScrollRect _scroll in _cardPrefab_CreateDeck.scroll)
  117. {
  118. _scroll.content = CardScroll.content;
  119. _scroll.viewport = CardScroll.viewport;
  120. }
  121. _cardPrefab_CreateDeck.SetUpCardPrefab_CreateDeck(cEntity_Base);
  122. _cardPrefab_CreateDeck.ShowCardImage();
  123. _cardPrefab_CreateDeck.Parent.localScale = new Vector3(1.1f, 1.1f, 1.1f);
  124. }
  125. public void SetDeckCountText()
  126. {
  127. DeckCountText.text = LocalizeUtility.GetLocalizedString(
  128. EngMessage: $"Remaining Cards in Deck : {deckCards.Count}/{originalDeckCards.Count}",
  129. JpnMessage: $"�f�b�LŽc‚č–‡�” : {deckCards.Count}/{originalDeckCards.Count}"
  130. );
  131. if (deckCards.Count >= 1)
  132. {
  133. DeckCountText.color = new Color32(255, 255, 255, 255);
  134. }
  135. else
  136. {
  137. DeckCountText.color = new Color32(255, 64, 64, 255);
  138. }
  139. }
  140. public void OnClickRedrawButton()
  141. {
  142. ContinuousController.instance.StartCoroutine(Set(originalDeckCards));
  143. ContinuousController.instance.PlaySE(Opening.instance.DrawSE);
  144. }
  145. public void OnClick1DrawButton()
  146. {
  147. ContinuousController.instance.PlaySE(Opening.instance.DrawSE);
  148. DrawCard();
  149. }
  150. public void OnClickCloseButton()
  151. {
  152. ContinuousController.instance.PlaySE(Opening.instance.CancelSE);
  153. Close();
  154. }
  155. }