r2mods/ilspy_dump/ror2_csproj/RoR2.UI/LanguageDropdownController.cs

84 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using HG;
using TMPro;
using UnityEngine;
namespace RoR2.UI;
public class LanguageDropdownController : MonoBehaviour
{
public MPDropdown dropdown;
public GameObject stripPrefab;
private Language[] languages = Array.Empty<Language>();
private bool isProvidingPlatformOption;
public void Awake()
{
dropdown.onValueChanged.AddListener(OnDropdownValueChanged);
}
private void OnEnable()
{
SetupDropdownOptions();
}
private void SetupDropdownOptions()
{
dropdown.ClearOptions();
languages = Language.GetAllLanguages().ToArray();
string @string = Language.LanguageConVar.instance.GetString();
List<TMP_Dropdown.OptionData> list = new List<TMP_Dropdown.OptionData>(languages.Length + 1);
int num = -1;
int num2 = -1;
Language language = Language.FindLanguageByName(Language.GetPlatformLanguageName() ?? "");
isProvidingPlatformOption = language != null;
if (isProvidingPlatformOption)
{
list.Add(new TMP_Dropdown.OptionData(Language.GetStringFormatted("LANGUAGE_PLATFORM", language.selfName), language.iconSprite));
num2++;
if (@string == "platform")
{
num = num2;
}
}
for (int i = 0; i < languages.Length; i++)
{
num2++;
Language language2 = languages[i];
list.Add(new TMP_Dropdown.OptionData(language2.selfName, language2.iconSprite));
if (Language.currentLanguage == language2)
{
num = num2;
}
}
dropdown.AddOptions(list);
if (num != -1)
{
dropdown.SetValueWithoutNotify(num);
}
}
private void OnDropdownValueChanged(int value)
{
if (isProvidingPlatformOption)
{
if (value == 0)
{
Language.LanguageConVar.instance.SetString("platform");
return;
}
value--;
}
Language safe = ArrayUtils.GetSafe(languages, value);
if (safe != null)
{
Language.LanguageConVar.instance.SetString(safe.name);
}
}
}