TrialDraw.cs 5.6 KB

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