PlayLog.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Hypertext;
  5. using UnityEngine.UI;
  6. public class PlayLog : MonoBehaviour
  7. {
  8. [SerializeField]
  9. [Header("ログテキスト")] RegexHypertext regexHypertext;
  10. [SerializeField]
  11. [Header("スクロール")] ScrollRect scroll;
  12. string GetLogString()
  13. {
  14. string logString = "";
  15. foreach (string log in _logList)
  16. {
  17. logString += log;
  18. }
  19. return logString;
  20. }
  21. List<string> _logList = new List<string>();
  22. //16250, 13000
  23. int _maxLogCharacterLength = 11000;
  24. public void OnClickLiogButton()
  25. {
  26. if (gameObject.activeSelf)
  27. {
  28. OffPlayLog();
  29. }
  30. else
  31. {
  32. SetUpPlayLog();
  33. }
  34. }
  35. public void SetUpPlayLog()
  36. {
  37. ContinuousController.instance.StartCoroutine(SetUpPlayLogCoroutine());
  38. }
  39. IEnumerator SetUpPlayLogCoroutine()
  40. {
  41. this.gameObject.SetActive(true);
  42. if (Opening.instance != null)
  43. {
  44. Opening.instance.PlayDecisionSE();
  45. }
  46. else if (GManager.instance != null)
  47. {
  48. GManager.instance.PlayDecisionSE();
  49. }
  50. regexHypertext.text = GetLogString();
  51. scroll.content.GetComponent<ContentSizeFitter>().SetLayoutVertical();
  52. yield return new WaitForSeconds(Time.deltaTime);
  53. scroll.verticalNormalizedPosition = 0;
  54. }
  55. bool _first = false;
  56. public void OffPlayLog()
  57. {
  58. if (_first)
  59. {
  60. if (Opening.instance != null)
  61. {
  62. Opening.instance.PlayCancelSE();
  63. }
  64. else if (GManager.instance != null)
  65. {
  66. GManager.instance.PlayCancelSE();
  67. }
  68. }
  69. _first = true;
  70. gameObject.SetActive(false);
  71. }
  72. public void Init()
  73. {
  74. OffPlayLog();
  75. regexHypertext.text = "";
  76. _logList = new List<string>();
  77. }
  78. public void AddLogString(string logText)
  79. {
  80. ContinuousController.instance.StartCoroutine(AddLogStringCoroutine(DataBase.ReplaceToASCII(logText)));
  81. }
  82. IEnumerator AddLogStringCoroutine(string logText)
  83. {
  84. _logList.Add(logText);
  85. while (GetLogString().Length >= _maxLogCharacterLength)
  86. {
  87. if (_logList.Count >= 1)
  88. {
  89. _logList.RemoveAt(0);
  90. }
  91. }
  92. if (gameObject.activeSelf)
  93. {
  94. regexHypertext.text = GetLogString();
  95. yield break;
  96. scroll.content.GetComponent<ContentSizeFitter>().SetLayoutVertical();
  97. yield return new WaitForSeconds(Time.deltaTime);
  98. scroll.verticalNormalizedPosition = 0;
  99. }
  100. }
  101. public void AddOnClick_ShowCard(CardSource cardSource)
  102. {
  103. regexHypertext.OnClick(cardSource.CardID, new Color32(146, 246, 255, 255), ShowCard);
  104. static void ShowCard(string cardID)
  105. {
  106. CardSource founcdCardSource = GManager.instance.turnStateMachine.gameContext.ActiveCardList
  107. .Find(cardSource1 => cardSource1.CardID == cardID);
  108. if (founcdCardSource != null)
  109. {
  110. GManager.instance.cardDetail.OpenCardDetail(founcdCardSource, true);
  111. }
  112. }
  113. }
  114. }