Files
OCTOPUS_TWIN-Demo/Assets/Scripts/UI/LanguageController.cs

70 lines
2.3 KiB
C#

using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace OCTOPUS_TWIN
{
public class LanguageDropdownController : MonoBehaviour, IPointerClickHandler
{
private TMP_Dropdown _languageDropdown; // 드롭다운 연결
private Transform _modalCanvasRoot;
private ToastPopup _unsupportedPopup;
private int previousIndex = 0; // 이전에 선택했던 정상적인 인덱스 (기본값 0: KOR)
private void Start()
{
_languageDropdown = GetComponent<TMP_Dropdown>();
// 리스너 등록
_languageDropdown.onValueChanged.AddListener(OnValueChanged);
_modalCanvasRoot = GameObject.Find("ModalCanvas").transform;
var allToastPopup = _modalCanvasRoot.GetComponentsInChildren<ToastPopup>(true);
_unsupportedPopup = allToastPopup.FirstOrDefault(x => x.name == "LanguageToastPanel");
}
private void OnValueChanged(int index)
{
// 선택된 옵션의 텍스트 가져오기
string selectedOption = _languageDropdown.options[index].text;
if (selectedOption == "ENG")
{
// 팝업 띄우기 (ToastPopup의 OnEnable -> PopupBase의 로직 실행됨)
if (_unsupportedPopup != null)
{
_unsupportedPopup.gameObject.SetActive(true);
}
// 값 되돌리기 (이벤트 없이)
_languageDropdown.SetValueWithoutNotify(previousIndex);
}
else
{
// 정상적인 언어(KOR)를 선택했다면
// 현재 인덱스를 '이전 인덱스'로 저장해둠 (나중에 돌아올 곳)
previousIndex = index;
// 여기에 실제 언어 변경 로직 추가 가능
Debug.Log($"언어가 {selectedOption}로 변경되었습니다.");
}
}
public void OnPointerClick(PointerEventData eventData)
{
var toggles = _languageDropdown.GetComponentsInChildren<Toggle>();
for (int i = 0; i < toggles.Length; i++)
{
if (toggles[i].isOn == false)
{
toggles[i].transform.Find("Item Checkmark").gameObject.SetActive(false);
}
}
}
}
}