|
- using System;
- using System.Diagnostics;
- using CIG.Translation;
- using CIGEnums;
- using SUISS.Core;
- using SUISS.Storage;
- using SUISSEngine;
-
- public sealed class CIGSettings : Singleton<CIGSettings>
- {
- //[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<bool>("MusicEnabled", true);
- }
- set
- {
- if (value != this.MusicEnabled)
- {
- this.SetValue("MusicEnabled", value);
- }
- if (SingletonMonobehaviour<CIGAudioManager>.IsAvailable)
- {
- SingletonMonobehaviour<CIGAudioManager>.Instance.EnableMusic(value);
- }
- }
- }
-
- public bool SoundEffectsEnabled
- {
- get
- {
- return this.GetValue<bool>("SoundEffectsEnabled", true);
- }
- set
- {
- if (value != this.SoundEffectsEnabled)
- {
- this.SetValue("SoundEffectsEnabled", value);
- }
- if (SingletonMonobehaviour<CIGAudioManager>.IsAvailable)
- {
- SingletonMonobehaviour<CIGAudioManager>.Instance.EnableSFX(value);
- }
- }
- }
-
- public bool NotificationsEnabled
- {
- get
- {
- return this.GetValue<bool>("NotificationsEnabled", true);
- }
- set
- {
- this.SetValue("NotificationsEnabled", value);
- }
- }
-
- public string CultureIdentifier
- {
- get
- {
- return this.GetValue<string>("CultureIdentifier", this.DefaultLanguage);
- }
- set
- {
- this.SetValue("CultureIdentifier", value);
- }
- }
-
- public CloudStorageState CloudStorageState
- {
- get
- {
- return (CloudStorageState)this.GetValue<int>("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<T>(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);
- }
|