97 lines
2.9 KiB
C#
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;
|
|
}
|
|
} |