using System; using System.Collections.Generic; using System.Linq; using UnityEngine; public class TranslationController : DestroyableSingleton { private static readonly StringNames[] SystemTypesToStringNames = SystemTypeHelpers.AllTypes.Select(delegate(SystemTypes t) { StringNames result; Enum.TryParse(t.ToString(), out result); return result; }).ToArray(); private static readonly StringNames[] TaskTypesToStringNames = TaskTypesHelpers.AllTypes.Select(delegate(TaskTypes t) { StringNames result; Enum.TryParse(t.ToString(), out result); return result; }).ToArray(); public TextAsset[] Languages; public TranslatedImageSet[] Images; public LanguageUnit CurrentLanguage; public List ActiveTexts = new List(); public override void Awake() { base.Awake(); if (DestroyableSingleton.Instance == this) { this.CurrentLanguage = new LanguageUnit(this.Languages[(int)SaveManager.LastLanguage], this.Images[(int)SaveManager.LastLanguage].Images); } } public void SetLanguage(TextAsset lang) { int num = this.Languages.IndexOf(lang); Debug.Log("Set language to " + num); SaveManager.LastLanguage = (uint)num; this.CurrentLanguage = new LanguageUnit(this.Languages[num], this.Images[num].Images); for (int i = 0; i < this.ActiveTexts.Count; i++) { this.ActiveTexts[i].ResetText(); } } public Sprite GetImage(ImageNames id) { return this.CurrentLanguage.GetImage(id); } public string GetString(StringNames id, params object[] parts) { return this.CurrentLanguage.GetString(id, parts); } public string GetString(SystemTypes room) { return this.GetString(TranslationController.SystemTypesToStringNames[(int)room], Array.Empty()); } public string GetString(TaskTypes task) { return this.GetString(TranslationController.TaskTypesToStringNames[(int)((byte)task)], Array.Empty()); } }