using UnityEngine; using UnityEngine.UI; using TMPro; using System; /// /// UI overlay for confirming a level switch. Displays level info and handles confirm/cancel actions. /// public class LevelSwitchMenu : MonoBehaviour { [Header("UI References")] public Image iconImage; public TMP_Text levelNameText; public Button confirmButton; public Button cancelButton; private Action _onConfirm; private Action _onCancel; private LevelSwitchData _switchData; /// /// Initialize the menu with data and callbacks. /// public void Setup(LevelSwitchData switchData, Action onConfirm, Action onCancel) { _switchData = switchData; _onConfirm = onConfirm; _onCancel = onCancel; if (iconImage) iconImage.sprite = switchData?.mapSprite; if (levelNameText) levelNameText.text = switchData?.targetLevelSceneName ?? ""; if (confirmButton) confirmButton.onClick.AddListener(OnConfirmClicked); if (cancelButton) cancelButton.onClick.AddListener(OnCancelClicked); } private void OnDestroy() { if (confirmButton) confirmButton.onClick.RemoveListener(OnConfirmClicked); if (cancelButton) cancelButton.onClick.RemoveListener(OnCancelClicked); } private void OnConfirmClicked() { _onConfirm?.Invoke(); Destroy(gameObject); } private void OnCancelClicked() { _onCancel?.Invoke(); Destroy(gameObject); } }