using System; using System.Diagnostics; using CIG.Translation; using CIGEnums; using SUISS.Core; using SUISS.Storage; using SUISSEngine; public sealed class CIGSettings : Singleton { //[DebuggerBrowsable(DebuggerBrowsableState.Never)] public event CIGSettings.LanguageChanged LanguageChangedEvent; private void FireLanguageChangedEvent() { if (this.LanguageChangedEvent != null) { this.LanguageChangedEvent(); } } //[DebuggerBrowsable(DebuggerBrowsableState.Never)] public event CIGSettings.CloudStorageStateChanged CloudStorageStateChangedEvent; private void FireCloudStorageStateChangedEvent(CloudStorageState state) { if (this.CloudStorageStateChangedEvent != null) { this.CloudStorageStateChangedEvent(state); } } public string DefaultLanguage { get { //TODODO Δ¬ΘΟΣοΡΤ return "Chinese_Simplified"; } } public bool MusicEnabled { get { return this.GetValue("MusicEnabled", true); } set { if (value != this.MusicEnabled) { this.SetValue("MusicEnabled", value); } if (SingletonMonobehaviour.IsAvailable) { SingletonMonobehaviour.Instance.EnableMusic(value); } } } public bool SoundEffectsEnabled { get { return this.GetValue("SoundEffectsEnabled", true); } set { if (value != this.SoundEffectsEnabled) { this.SetValue("SoundEffectsEnabled", value); } if (SingletonMonobehaviour.IsAvailable) { SingletonMonobehaviour.Instance.EnableSFX(value); } } } public bool NotificationsEnabled { get { return this.GetValue("NotificationsEnabled", true); } set { this.SetValue("NotificationsEnabled", value); } } public string CultureIdentifier { get { return this.GetValue("CultureIdentifier", this.DefaultLanguage); } set { this.SetValue("CultureIdentifier", value); } } public CloudStorageState CloudStorageState { get { return (CloudStorageState)this.GetValue("CloudStorageState", 0); } set { if (value != this.CloudStorageState) { this.SetValue("CloudStorageState", (int)value); this.FireCloudStorageStateChangedEvent(value); } } } public void SwitchLanguage(Localization.Culture newCulture) { Localization.CurrentCulture = newCulture; this.CultureIdentifier = newCulture.Identifier; this.FireLanguageChangedEvent(); } public void SwitchLanguage(string cultureIdentifier) { int count = Localization.AvailableCultures.Count; for (int i = 0; i < count; i++) { Localization.Culture culture = Localization.AvailableCultures[i]; if (culture.Identifier == cultureIdentifier) { this.SwitchLanguage(culture); break; } } } private T GetValue(string key, T defaultValue) { object obj; if (Storage.Get(StorageLifecycle.Player).Root.TryGetValue(key, out obj) && obj is T) { return (T)((object)obj); } return defaultValue; } private void SetValue(string key, object value) { Storage.Get(StorageLifecycle.Player).Root[key] = value; } private const string MusicEnabledKey = "MusicEnabled"; private const string SoundEffectsEnabledKey = "SoundEffectsEnabled"; private const string NotificationsEnabledKey = "NotificationsEnabled"; private const string CloudStorageStateKey = "CloudStorageState"; private const string LanguageKey = "Language"; public const string CultureIdentifierKey = "CultureIdentifier"; public delegate void LanguageChanged(); public delegate void CloudStorageStateChanged(CloudStorageState state); }