diff options
Diffstat (limited to 'Client/Assembly-CSharp/TranslationController.cs')
-rw-r--r-- | Client/Assembly-CSharp/TranslationController.cs | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/TranslationController.cs b/Client/Assembly-CSharp/TranslationController.cs new file mode 100644 index 0000000..66686f7 --- /dev/null +++ b/Client/Assembly-CSharp/TranslationController.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +public class TranslationController : DestroyableSingleton<TranslationController> +{ + private static readonly StringNames[] SystemTypesToStringNames = SystemTypeHelpers.AllTypes.Select(delegate(SystemTypes t) + { + StringNames result; + Enum.TryParse<StringNames>(t.ToString(), out result); + return result; + }).ToArray<StringNames>(); + + private static readonly StringNames[] TaskTypesToStringNames = TaskTypesHelpers.AllTypes.Select(delegate(TaskTypes t) + { + StringNames result; + Enum.TryParse<StringNames>(t.ToString(), out result); + return result; + }).ToArray<StringNames>(); + + public TextAsset[] Languages; + + public TranslatedImageSet[] Images; + + public LanguageUnit CurrentLanguage; + + public List<ITranslatedText> ActiveTexts = new List<ITranslatedText>(); + + public override void Awake() + { + base.Awake(); + if (DestroyableSingleton<TranslationController>.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<object>()); + } + + public string GetString(TaskTypes task) + { + return this.GetString(TranslationController.TaskTypesToStringNames[(int)((byte)task)], Array.Empty<object>()); + } +} |