2025-10-21 13:07:48 +08:00
|
|
|
using Core;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using Script.Gameplay.Player;
|
|
|
|
|
using TMPro;
|
2025-10-21 14:23:54 +08:00
|
|
|
using System.Collections.Generic;
|
2025-10-26 22:13:15 +08:00
|
|
|
using Script.Gameplay.Interface;
|
2025-10-21 13:07:48 +08:00
|
|
|
|
|
|
|
|
namespace UI
|
|
|
|
|
{
|
|
|
|
|
public class PlayerGazeReminder : UIBase
|
|
|
|
|
{
|
2025-10-21 14:23:54 +08:00
|
|
|
[SerializeField] private GameObject reminderInteractPrefab;
|
2025-10-24 16:45:02 +08:00
|
|
|
[SerializeField] private GameObject reminderReadPrefab;
|
2025-10-21 14:23:54 +08:00
|
|
|
[SerializeField] private GameObject reminderConnectPrefab;
|
2025-10-26 22:13:15 +08:00
|
|
|
[SerializeField] private GameObject reminderSetLeftPointPrefab;
|
|
|
|
|
[SerializeField] private GameObject reminderSetRightPointPrefab;
|
2025-10-21 15:40:06 +08:00
|
|
|
[SerializeField] private GameObject reminderDeleteLinePrefab;
|
2025-10-26 22:13:15 +08:00
|
|
|
[SerializeField] private GameObject reminderEditPrefab;
|
|
|
|
|
[Header("Connect Status UI")]
|
|
|
|
|
[SerializeField] private GameObject ConnectStatus;
|
|
|
|
|
[SerializeField] private TMP_Text NeedCountText;
|
|
|
|
|
[SerializeField] private TMP_Text CurrentCountText;
|
|
|
|
|
|
2025-10-21 13:07:48 +08:00
|
|
|
private PlayerInteractorController playerInteractorController;
|
|
|
|
|
private PlayerConnectController playerConnectController;
|
2025-10-23 15:46:17 +08:00
|
|
|
private PlayerDialogueController playerDialogueController;
|
2025-10-26 22:13:15 +08:00
|
|
|
private PlayerEditController playerEditController;
|
2025-10-21 13:07:48 +08:00
|
|
|
|
|
|
|
|
protected override void Awake()
|
|
|
|
|
{
|
|
|
|
|
base.Awake();
|
|
|
|
|
ControllerLocator.Instance.TryGetWait<PlayerInteractorController>(OnGetInteractorController);
|
|
|
|
|
ControllerLocator.Instance.TryGetWait<PlayerConnectController>(OnGetConnectController);
|
2025-10-23 15:46:17 +08:00
|
|
|
ControllerLocator.Instance.TryGetWait<PlayerDialogueController>(OnGetDialogueController);
|
2025-10-26 22:13:15 +08:00
|
|
|
ControllerLocator.Instance.TryGetWait<PlayerEditController>(OnGetEditController);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnGetEditController(PlayerEditController obj)
|
|
|
|
|
{
|
|
|
|
|
playerEditController = obj;
|
|
|
|
|
playerEditController.OnGazeEnterEditableComponent += (obj) => reminderEditPrefab.SetActive(true);
|
|
|
|
|
playerEditController.OnGazeExitEditableComponent += (obj) => reminderEditPrefab.SetActive(false);
|
2025-10-21 13:07:48 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnGetInteractorController(PlayerInteractorController controller)
|
|
|
|
|
{
|
|
|
|
|
playerInteractorController = controller;
|
2025-10-23 15:46:17 +08:00
|
|
|
playerInteractorController.OnGazeEnter += (obj) => reminderInteractPrefab.SetActive(true);
|
|
|
|
|
playerInteractorController.OnGazeExit += (obj) => reminderInteractPrefab.SetActive(false);
|
2025-10-21 13:07:48 +08:00
|
|
|
}
|
2025-10-21 14:23:54 +08:00
|
|
|
|
2025-10-21 13:07:48 +08:00
|
|
|
private void OnGetConnectController(PlayerConnectController controller)
|
|
|
|
|
{
|
|
|
|
|
playerConnectController = controller;
|
2025-10-26 22:13:15 +08:00
|
|
|
playerConnectController.OnGazeEnterConnectable += (obj) =>
|
2025-10-23 15:46:17 +08:00
|
|
|
{
|
|
|
|
|
reminderConnectPrefab.SetActive(true);
|
2025-10-26 22:13:15 +08:00
|
|
|
reminderSetLeftPointPrefab.SetActive(true);
|
|
|
|
|
reminderSetRightPointPrefab.SetActive(true);
|
2025-10-23 15:46:17 +08:00
|
|
|
reminderDeleteLinePrefab.SetActive(true);
|
2025-10-26 22:13:15 +08:00
|
|
|
// 更新连接状态UI
|
|
|
|
|
ISignalReceiver connectableComponent = obj.GetComponent<ISignalReceiver>();
|
|
|
|
|
if (connectableComponent != null)
|
|
|
|
|
{
|
|
|
|
|
ConnectStatus.SetActive(true);
|
|
|
|
|
NeedCountText.text = connectableComponent.NeedSignalCount.ToString();
|
|
|
|
|
CurrentCountText.text = connectableComponent.CurrentNeedSignalCount.ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ConnectStatus.SetActive(false);
|
|
|
|
|
}
|
2025-10-23 15:46:17 +08:00
|
|
|
};
|
2025-10-26 22:13:15 +08:00
|
|
|
playerConnectController.OnGazeExitConnectable += (obj) =>
|
2025-10-23 15:46:17 +08:00
|
|
|
{
|
|
|
|
|
reminderConnectPrefab.SetActive(false);
|
2025-10-26 22:13:15 +08:00
|
|
|
reminderSetLeftPointPrefab.SetActive(false);
|
|
|
|
|
reminderSetRightPointPrefab.SetActive(false);
|
2025-10-23 15:46:17 +08:00
|
|
|
reminderDeleteLinePrefab.SetActive(false);
|
2025-10-26 22:13:15 +08:00
|
|
|
ConnectStatus.SetActive(false);
|
2025-10-23 15:46:17 +08:00
|
|
|
};
|
2025-10-21 13:07:48 +08:00
|
|
|
}
|
2025-10-23 15:46:17 +08:00
|
|
|
|
|
|
|
|
private void OnGetDialogueController(PlayerDialogueController controller)
|
2025-10-21 13:07:48 +08:00
|
|
|
{
|
2025-10-23 15:46:17 +08:00
|
|
|
playerDialogueController = controller;
|
2025-10-24 16:45:02 +08:00
|
|
|
playerDialogueController.OnGazeEnterDialogue += (obj) => reminderReadPrefab.SetActive(true);
|
|
|
|
|
playerDialogueController.OnGazeExitDialogue += (obj) => reminderReadPrefab.SetActive(false);
|
2025-10-21 13:07:48 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|