NextPhaseButton.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.Events;
  6. using Photon.Pun;
  7. using System;
  8. using Photon;
  9. using TMPro;
  10. public class NextPhaseButton : MonoBehaviourPunCallbacks
  11. {
  12. [Header("ボタンテキスト")]
  13. public TextMeshProUGUI ButtonText;
  14. [Header("ボタン")]
  15. public Button Button;
  16. Image ButtonImage;
  17. public GameObject Outline;
  18. public GameObject Cover;
  19. public Sprite MyTurnSprite;
  20. public Sprite OpponentTurnSprite;
  21. private void Awake()
  22. {
  23. if (Cover != null)
  24. {
  25. Cover.SetActive(false);
  26. Button.gameObject.SetActive(false);
  27. Outline.SetActive(false);
  28. }
  29. ButtonImage = Button.GetComponent<Image>();
  30. }
  31. public void OnClick()
  32. {
  33. if (!GManager.instance.turnStateMachine.isSync && !GManager.instance.turnStateMachine.IsSelecting && !GManager.instance.turnStateMachine.isExecuting && !GManager.instance.turnStateMachine.isSecurityCehck)
  34. {
  35. if (GManager.instance.turnStateMachine.gameContext.TurnPlayer.isYou)
  36. {
  37. if (GManager.instance.turnStateMachine.gameContext.TurnPhase == GameContext.phase.Breeding || GManager.instance.turnStateMachine.gameContext.TurnPhase == GameContext.phase.Main)
  38. {
  39. GManager.instance.turnStateMachine.isSync = true;
  40. photonView.RPC("NextPhase", RpcTarget.All);
  41. StartCoroutine(CoverCoroutine(1.5f));
  42. Button.interactable = false;
  43. SwitchTurnSprite();
  44. Button.interactable = true;
  45. }
  46. }
  47. }
  48. }
  49. public IEnumerator CoverCoroutine(float waitTime)
  50. {
  51. if (Cover != null)
  52. {
  53. Cover.SetActive(true);
  54. yield return new WaitForSeconds(waitTime);
  55. Cover.SetActive(false);
  56. }
  57. }
  58. bool oldActive = false;
  59. private void Update()
  60. {
  61. oldActive = Button.gameObject.activeSelf;
  62. bool active = false;
  63. if (GManager.instance != null)
  64. {
  65. if (GManager.instance.turnStateMachine != null)
  66. {
  67. if (GManager.instance.turnStateMachine.endGame || !GManager.instance.turnStateMachine.DoneStartGame)
  68. {
  69. return;
  70. }
  71. if (GManager.instance.turnStateMachine.gameContext != null)
  72. {
  73. if (GManager.instance.turnStateMachine.gameContext.TurnPlayer != null)
  74. {
  75. if (GManager.instance.turnStateMachine.gameContext.TurnPlayer.isYou)
  76. {
  77. if (!GManager.instance.attackProcess.IsAttacking && !GManager.instance.turnStateMachine.isSync && !GManager.instance.turnStateMachine.IsSelecting && !GManager.instance.turnStateMachine.isExecuting && !GManager.instance.turnStateMachine.isSecurityCehck)
  78. {
  79. switch (GManager.instance.turnStateMachine.gameContext.TurnPhase)
  80. {
  81. case GameContext.phase.Breeding:
  82. active = true;
  83. ButtonText.text = LocalizeUtility.GetLocalizedString(
  84. EngMessage: "End\nBreeding",
  85. JpnMessage: "育成\n終了"
  86. );
  87. break;
  88. case GameContext.phase.Main:
  89. active = true;
  90. ButtonText.text = LocalizeUtility.GetLocalizedString(
  91. EngMessage: "End\nTurn",
  92. JpnMessage: "ターン\n終了"
  93. );
  94. break;
  95. }
  96. }
  97. }
  98. else
  99. {
  100. active = true;
  101. ButtonText.text = LocalizeUtility.GetLocalizedString(
  102. EngMessage: "Opponent's\nTurn",
  103. JpnMessage: "相手\nターン"
  104. );
  105. }
  106. }
  107. }
  108. }
  109. }
  110. if (!active)
  111. {
  112. Button.gameObject.SetActive(false);
  113. Outline.SetActive(false);
  114. }
  115. else
  116. {
  117. Button.gameObject.SetActive(true);
  118. if (GManager.instance.turnStateMachine.gameContext.TurnPlayer.isYou)
  119. {
  120. Button.enabled = true;
  121. Outline.SetActive(true);
  122. if (!oldActive)
  123. {
  124. StartCoroutine(CoverCoroutine(0.3f));
  125. }
  126. }
  127. else
  128. {
  129. Button.enabled = false;
  130. Outline.SetActive(false);
  131. Cover.SetActive(true);
  132. }
  133. }
  134. }
  135. [PunRPC]
  136. public void NextPhase()
  137. {
  138. GManager.instance.turnStateMachine.NextPhase();
  139. }
  140. public void SwitchTurnSprite()
  141. {
  142. if (GManager.instance.turnStateMachine.gameContext.TurnPlayer.isYou)
  143. {
  144. SetMyTurnSprite();
  145. }
  146. else
  147. {
  148. EnemyTurnSprite();
  149. }
  150. //Button.gameObject.SetActive(false);
  151. //Outline.gameObject.SetActive(false);
  152. }
  153. public void SetMyTurnSprite()
  154. {
  155. ButtonImage.sprite = MyTurnSprite;
  156. }
  157. public void EnemyTurnSprite()
  158. {
  159. ButtonImage.sprite = OpponentTurnSprite;
  160. }
  161. }