/// <summary> /// Register a settings listener for a specific option. The settings listener /// will be called as soon as the option value changes, e.g. when modifying /// the configuration through the GUI, or when loading a game having a patch /// file defined. The settings listener is also called immediately by this /// method while registering. /// /// Only one settings listener can be defined for each name/option /// combination. This allows to call this method for the same listener /// multiple times and have it registered only once. /// </summary> /// <param name="name"> the name of the settings listener </param> /// <param name="option"> the settings option </param> /// <param name="listener"> the listener to be called when the settings option value /// changes </param> public virtual void registerSettingsListener(string name, string option, ISettingsListener listener) { removeSettingsListener(name, option); SettingsListenerInfo info = new SettingsListenerInfo(name, option, listener); allListeners.Add(info); IList <ISettingsListener> listenersForKey = listenersByKey[option]; if (listenersForKey == null) { listenersForKey = new LinkedList <ISettingsListener>(); listenersByKey[option] = listenersForKey; } listenersForKey.Add(listener); // Trigger the settings listener immediately if a value is defined string value = getProperty(option); if (!string.ReferenceEquals(value, null)) { listener.settingsValueChanged(option, value); } }
/// <summary> /// Отписывает слушателя от рассылки уведомлений /// </summary> public void RemoveListener(ISettingsListener listener) { _Listeners.Remove(listener); }
/// <summary> /// Добавить слушателя, который будет оповещен при изменении настроек /// </summary> public void AddListener(ISettingsListener listener) { _Listeners.Add(listener); }
protected internal virtual void setSettingsListener(string option, ISettingsListener settingsListener) { Settings.Instance.registerSettingsListener(Name, option, settingsListener); }
public SettingsListenerInfo(string name, string key, ISettingsListener listener) { this.name = name; this.key = key; this.listener = listener; }