using Core; using UnityEngine; using Script.Gameplay.Player; using TMPro; using System.Collections.Generic; namespace UI { public class PlayerGazeReminder : UIBase { [SerializeField] private GameObject reminderInteractPrefab; [SerializeField] private GameObject reminderReadPrefab; [SerializeField] private GameObject reminderConnectPrefab; [SerializeField] private GameObject reminderSetPointPrefab; [SerializeField] private GameObject reminderDeleteLinePrefab; private PlayerInteractorController playerInteractorController; private PlayerConnectController playerConnectController; private PlayerDialogueController playerDialogueController; protected override void Awake() { base.Awake(); ControllerLocator.Instance.TryGetWait(OnGetInteractorController); ControllerLocator.Instance.TryGetWait(OnGetConnectController); ControllerLocator.Instance.TryGetWait(OnGetDialogueController); } private void OnGetInteractorController(PlayerInteractorController controller) { playerInteractorController = controller; playerInteractorController.OnGazeEnter += (obj) => reminderInteractPrefab.SetActive(true); playerInteractorController.OnGazeExit += (obj) => reminderInteractPrefab.SetActive(false); } private void OnGetConnectController(PlayerConnectController controller) { playerConnectController = controller; playerConnectController.OnGazeEnter += (obj) => { reminderConnectPrefab.SetActive(true); reminderSetPointPrefab.SetActive(true); reminderDeleteLinePrefab.SetActive(true); }; playerConnectController.OnGazeExit += (obj) => { reminderConnectPrefab.SetActive(false); reminderSetPointPrefab.SetActive(false); reminderDeleteLinePrefab.SetActive(false); }; } private void OnGetDialogueController(PlayerDialogueController controller) { playerDialogueController = controller; playerDialogueController.OnGazeEnterDialogue += (obj) => reminderReadPrefab.SetActive(true); playerDialogueController.OnGazeExitDialogue += (obj) => reminderReadPrefab.SetActive(false); } } }