70 lines
2.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|