using System; using System.Collections.Generic; using System.IO; using UnityEngine; using XRLib.UI; using TMPro; using UnityEngine.UI; using Newtonsoft.Json; using TriLibCore.SFB; using System.Text; using Studio.UVC.UI; namespace Studio { [Serializable] public class LanguageConfig { public string defaultLanguage; public Dictionary languages; } public class Panel_MultilingualSettingModal : PanelBase { public UVCDropDown Dropdown_Languages; public Button Button_OpenFile; public Button Button_Save; private string selectedLanguage; private Dictionary languages = new Dictionary(); private string json; public string saveLanguage; public override void AfterAwake() { Dropdown_Languages = GetComponentInChildren(); Dropdown_Languages.Init(); Button_OpenFile.onClick.AddListener(OnClickOpenFileButton); Button_Save.onClick.AddListener(OnClickSaveButton); } void OnClickOpenFileButton() { StandaloneFileBrowser.OpenFilePanelAsync("Open File", "", "json", false, LoadJson); } void OnClickSaveButton() { saveLanguage = selectedLanguage; } void LoadJson(IList items) { if (items != null && items.Count > 0) { var item = items[0]; if(string.IsNullOrEmpty(item.Name)) { //TODO 팝업창 or 그냥 닫음 Debug.Log("취소"); return; } using (var reader = new StreamReader(item.OpenStream(), Encoding.UTF8)) { json = reader.ReadToEnd(); } } else { Debug.LogWarning("파일을 선택하지 않았습니다."); } var data = JsonConvert.DeserializeObject(json); if (data == null || data.languages == null) { Debug.LogError("데이터가 존재하지 않습니다."); return; } languages = data.languages; SetLanguageDropdown(); } private void SetLanguageDropdown() { //Dropdown_Languages.ClearOptions(); List options = new List(); foreach (var language in languages.Keys) { options.Add(language); } Dropdown_Languages.SetOptions(options); Dropdown_Languages.OnValueChange+=OnLanguageDropdownValueChanged; var languageKey = Dropdown_Languages.GetSelectOptionName(); selectedLanguage = languages[languageKey]; } private void OnLanguageDropdownValueChanged(int index) { var languageKey = Dropdown_Languages.GetSelectOptionName(); selectedLanguage = languages[languageKey]; } } }