using System; namespace EasyTalk.Controller { /// /// The EasyTalkGameState is used to keep track of global settings used by the EasyTalk system during runtime. /// public class EasyTalkGameState { /// /// The active EasyTalkGameState instance. /// private static EasyTalkGameState instance; /// /// The session ID used for the current game/playthrough. /// private string sessionId = Guid.NewGuid().ToString(); /// /// The language currently being used by EasyTalk. /// private string language = "en"; private bool isLanguageOverridden = false; /// /// Defines a delegate method to be called when the language is changed. /// /// The old language being used. /// The new language to use. public delegate void OnLanguageChanged(string oldLanguage, string newLanguage); /// /// The callback which is triggered when the language changes. /// public event OnLanguageChanged onLanguageChanged; /// /// Gets or sets the language used by EasyTalk. If set, the onLanguageChanged callback will also be triggered. /// public string Language { get { return language; } set { string oldLanguage = language; this.language = value; if (!oldLanguage.Equals(value)) { isLanguageOverridden = true; if (onLanguageChanged != null) { onLanguageChanged(oldLanguage, language); } } } } public void SetLanguageWithoutOverride(string languageCode) { string oldLanguage = language; this.language = languageCode; if (!oldLanguage.Equals(languageCode)) { if (onLanguageChanged != null) { onLanguageChanged(oldLanguage, language); } } } public bool IsLanguageOverridden { get { return isLanguageOverridden; } } /// /// Gets or sets the session ID. /// public string SessionID { get { return sessionId; } set { this.sessionId = value; } } /// /// Gets the instance of the EasyTalk game state. /// public static EasyTalkGameState Instance { get { if (instance == null) { instance = new EasyTalkGameState(); } return instance; } } public void SetOriginalLanguage(string originalLanguageCode) { if(!isLanguageOverridden) { language = originalLanguageCode; } } } }