using System; using System.Collections; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class ClientGameTalkingSceneController : MonoBehaviour { public static ClientGameTalkingSceneController Instance; public static int playCount = 0; public GameObject introPanel; public GameObject playPanel; public GameObject stopPanel; public GameObject finishPanel; public TMP_Text playCountdownText; public TMP_Text playChatText; public TMP_InputField playMessageInputField; public Button playMessageSendButton; public Button finishGoToNextButton; public Button finishBackToMenuButton; private int playCountdownSecVal = GlobalData.GAME_TALK_COUNTDOWN_TIME; private void Awake() { Instance = this; } // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { if (finishGoToNextButton) { finishGoToNextButton.onClick.AddListener(finishGoToNextButton_onClicked); } if (finishBackToMenuButton) { finishBackToMenuButton.onClick.AddListener(finishBackToMenuButton_onClicked); } if (playMessageSendButton) { playMessageSendButton.onClick.AddListener(playMessageSendButton_onClicked); } processStep(1); } private void playMessageSendButton_onClicked() { if (playMessageInputField.text.Length > 0) { if (ClientMessageHandler.Instance) { ClientMessageHandler.Instance.SendMessageToServer("gameTalkingPeopleSay", playMessageInputField.text); } playChatText.text = "-信眾-
" + playMessageInputField.text + "
" + playChatText.text; playMessageInputField.text = ""; } } public void onReceivedChatMessage(string message) { playChatText.text = "-神明-
" + message + "
" + playChatText.text; } IEnumerator StatusCountdown() { yield return new WaitForSeconds(1f); playCountdownSecVal--; playCountdownText.text = "時間倒數 " + playCountdownSecVal.ToString() + "秒"; if (playCountdownSecVal > 0) { StartCoroutine(StatusCountdown()); } else { processStep(3); } } IEnumerator NextStep(int step, int waitSec) { yield return new WaitForSeconds(waitSec); processStep(step); } private void finishGoToNextButton_onClicked() { if (ClientMessageHandler.Instance) { ClientMessageHandler.Instance.SendMessageToServer("getWords", ""); } StartCoroutine(LoadNextScene("ClientGameBackToRealScene")); } private void finishBackToMenuButton_onClicked() { StartCoroutine(LoadNextScene("ClientGameScene")); } public void processStep(int step) { if (introPanel) { introPanel.SetActive( step == 1 ); if (step == 1) { playCount++; playCountdownSecVal = GlobalData.GAME_TALK_COUNTDOWN_TIME; } } if (playPanel) { playPanel.SetActive ( step == 2 ); if (step == 2) { StartCoroutine(StatusCountdown()); } } if (stopPanel) { stopPanel.SetActive ( step == 3 ); if (step == 3) { StartCoroutine(NextStep(4, 3)); } } if (finishPanel) { finishPanel.SetActive ( step == 4 ); } } IEnumerator LoadNextScene(string sceneName) { yield return new WaitForSeconds(0f); SceneManager.LoadScene(sceneName); } // Update is called once per frame void Update() { } }