93 lines
2.7 KiB
C#
93 lines
2.7 KiB
C#
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;
|
|
|
|
namespace XED
|
|
{
|
|
[Serializable]
|
|
public class LanguageConfig
|
|
{
|
|
public string defaultLanguage;
|
|
public Dictionary<string, string> languages;
|
|
}
|
|
public class Panel_MultilingualSettingModal : PanelBase
|
|
{
|
|
public TMP_Dropdown Dropdown_Languages;
|
|
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()
|
|
{
|
|
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];
|
|
using (var reader = new StreamReader(item.OpenStream(), Encoding.UTF8))
|
|
{
|
|
json = reader.ReadToEnd();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning("파일을 선택하지 않았습니다.");
|
|
}
|
|
|
|
var data = JsonConvert.DeserializeObject<LanguageConfig>(json);
|
|
if (data == null || data.languages == null)
|
|
{
|
|
Debug.LogError("데이터가 존재하지 않습니다.");
|
|
return;
|
|
}
|
|
|
|
languages = data.languages;
|
|
SetLanguageDropdown();
|
|
}
|
|
private void SetLanguageDropdown()
|
|
{
|
|
Dropdown_Languages.ClearOptions();
|
|
List<string> options = new List<string>();
|
|
|
|
foreach (var language in languages.Keys)
|
|
{
|
|
options.Add(language);
|
|
}
|
|
Dropdown_Languages.AddOptions(options);
|
|
Dropdown_Languages.onValueChanged.AddListener(OnLanguageDropdownValueChanged);
|
|
|
|
var languageKey = Dropdown_Languages.options[0].text;
|
|
selectedLanguage = languages[languageKey];
|
|
}
|
|
|
|
private void OnLanguageDropdownValueChanged(int index)
|
|
{
|
|
var languageKey = Dropdown_Languages.options[index].text;
|
|
selectedLanguage = languages[languageKey];
|
|
}
|
|
}
|
|
}
|