Petition-to-the-Gods-V3/Assets/Scripts/Server/ServerWorkMessageReplyWait1Panel.cs
2025-11-19 23:12:17 +08:00

97 lines
2.9 KiB
C#

using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using UnityEngine.Video;
public class ServerWorkMessageReplyWait1Panel : MonoBehaviour
{
public static ServerWorkMessageReplyWait1Panel Instance;
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
// ⭐【新增旗標】:追蹤是否收到「切換到 Step 2 (新願望)」的指令
private bool shouldGoToStep2 = false;
private void Awake()
{
Instance = this;
}
void Start()
{
SetupVideoPlayer();
// 重設旗標,確保每次播放都是從初始狀態開始
shouldGoToStep2 = false;
}
public void play()
{
if (videoPlayer != null)
{
videoPlayer.Play();
Debug.Log("ServerWorkMessageReplyWait1Panel: 開始播放影片 (Step 5)。");
}
}
public void stop()
{
if (videoPlayer != null)
{
videoPlayer.Stop();
}
}
void SetupVideoPlayer()
{
if (videoPlayer != null)
{
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示 (略)
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
videoPlayer.renderMode = VideoRenderMode.RenderTexture;
RenderTexture rt = new RenderTexture(1920, 1080, 24);
videoPlayer.targetTexture = rt;
videoDisplay.texture = rt;
}
}
}
// 影片播放結束時呼叫
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("ServerWorkMessageReplyWait1Panel: 影片播放完成。");
// ⭐【核心邏輯修正】:檢查是否有暫存的「新願望」指令
if (shouldGoToStep2)
{
// ✅ 修正點:如果收到新願望,切換到 Step 2 (MessagePanel)
Debug.Log("ServerWorkMessageReplyWait1Panel: 收到新願望訊號,切換到 Step 2 (MessagePanel)。");
if (ServerWorkSceneController.Instance != null)
{
ServerWorkSceneController.Instance.processStep(2); // **切換到 Step 2**
}
}
else
{
// 正常流程:沒有新願望訊號,切換到 Step 6 (Wait1WorkingPanel)
Debug.Log("ServerWorkMessageReplyWait1Panel: 無新願望訊號,切換到 Step 6 (Wait1WorkingPanel)。");
if (ServerWorkSceneController.Instance != null)
{
ServerWorkSceneController.Instance.processStep(6);
}
}
}
// 供 NetworkMessageHandler 呼叫,設定「鎖定」旗標
public void ReceiveNewWorkMessage()
{
Debug.Log("ServerWorkMessageReplyWait1Panel: 收到來自客戶端的新願望訊號,設定鎖定旗標。");
shouldGoToStep2 = true;
}
}