Files
Studio/Assets/NewStudioJYM/Scripts/Panel_MultilingualSettingModal.cs

102 lines
3.1 KiB
C#
Raw Normal View History

2025-05-14 17:00:44 +09:00
using System;
2025-05-07 17:13:21 +09:00
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;
2025-05-14 17:00:44 +09:00
using Studio.UVC.UI;
2025-05-07 17:13:21 +09:00
2025-05-20 16:25:58 +09:00
namespace Studio
2025-05-07 17:13:21 +09:00
{
[Serializable]
public class LanguageConfig
{
public string defaultLanguage;
public Dictionary<string, string> languages;
}
public class Panel_MultilingualSettingModal : PanelBase
{
2025-05-14 17:00:44 +09:00
public UVCDropDown Dropdown_Languages;
2025-05-07 17:13:21 +09:00
public Button Button_OpenFile;
public Button Button_Save;
private string selectedLanguage;
private Dictionary<string, string> languages = new Dictionary<string, string>();
private string json;
public string saveLanguage;
public override void AfterAwake()
{
2025-05-14 17:00:44 +09:00
Dropdown_Languages = GetComponentInChildren<UVCDropDown>();
Dropdown_Languages.Init();
2025-05-07 17:13:21 +09:00
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<ItemWithStream> items)
{
if (items != null && items.Count > 0)
{
var item = items[0];
2025-05-14 17:00:44 +09:00
if(string.IsNullOrEmpty(item.Name))
{
//TODO 팝업창 or 그냥 닫음
Debug.Log("취소");
return;
}
2025-05-07 17:13:21 +09:00
using (var reader = new StreamReader(item.OpenStream(), Encoding.UTF8))
{
json = reader.ReadToEnd();
}
}
else
{
2025-05-14 17:00:44 +09:00
Debug.LogWarning("파일을 선택하지 않았습니다.");
2025-05-07 17:13:21 +09:00
}
var data = JsonConvert.DeserializeObject<LanguageConfig>(json);
if (data == null || data.languages == null)
{
2025-05-14 17:00:44 +09:00
Debug.LogError("데이터가 존재하지 않습니다.");
2025-05-07 17:13:21 +09:00
return;
}
languages = data.languages;
SetLanguageDropdown();
}
private void SetLanguageDropdown()
{
2025-05-14 17:00:44 +09:00
//Dropdown_Languages.ClearOptions();
2025-05-07 17:13:21 +09:00
List<string> options = new List<string>();
foreach (var language in languages.Keys)
{
options.Add(language);
}
2025-05-14 17:00:44 +09:00
Dropdown_Languages.SetOptions(options);
Dropdown_Languages.OnValueChange+=OnLanguageDropdownValueChanged;
2025-05-07 17:13:21 +09:00
2025-05-14 17:00:44 +09:00
var languageKey = Dropdown_Languages.GetSelectOptionName();
2025-05-07 17:13:21 +09:00
selectedLanguage = languages[languageKey];
}
private void OnLanguageDropdownValueChanged(int index)
{
2025-05-14 17:00:44 +09:00
var languageKey = Dropdown_Languages.GetSelectOptionName();
2025-05-07 17:13:21 +09:00
selectedLanguage = languages[languageKey];
}
}
}