using System; using UnityEngine; [AddComponentMenu("NGUI/Interaction/Saved Option")] public class UISavedOption : MonoBehaviour { private string key { get { return (!string.IsNullOrEmpty(this.keyName)) ? this.keyName : ("NGUI State: " + base.name); } } private void Awake() { this.mList = base.GetComponent(); this.mCheck = base.GetComponent(); this.mSlider = base.GetComponent(); } private void OnEnable() { if (this.mList != null) { EventDelegate.Add(this.mList.onChange, new EventDelegate.Callback(this.SaveSelection)); string @string = PlayerPrefs.GetString(this.key); if (!string.IsNullOrEmpty(@string)) { this.mList.value = @string; } } else if (this.mCheck != null) { EventDelegate.Add(this.mCheck.onChange, new EventDelegate.Callback(this.SaveState)); this.mCheck.value = (PlayerPrefs.GetInt(this.key, (!this.mCheck.startsActive) ? 0 : 1) != 0); } else if (this.mSlider != null) { EventDelegate.Add(this.mSlider.onChange, new EventDelegate.Callback(this.SaveProgress)); this.mSlider.value = PlayerPrefs.GetFloat(this.key, this.mSlider.value); } else { string string2 = PlayerPrefs.GetString(this.key); UIToggle[] componentsInChildren = base.GetComponentsInChildren(true); int i = 0; int num = componentsInChildren.Length; while (i < num) { UIToggle uitoggle = componentsInChildren[i]; uitoggle.value = (uitoggle.name == string2); i++; } } } private void OnDisable() { if (this.mCheck != null) { EventDelegate.Remove(this.mCheck.onChange, new EventDelegate.Callback(this.SaveState)); } else if (this.mList != null) { EventDelegate.Remove(this.mList.onChange, new EventDelegate.Callback(this.SaveSelection)); } else if (this.mSlider != null) { EventDelegate.Remove(this.mSlider.onChange, new EventDelegate.Callback(this.SaveProgress)); } else { UIToggle[] componentsInChildren = base.GetComponentsInChildren(true); int i = 0; int num = componentsInChildren.Length; while (i < num) { UIToggle uitoggle = componentsInChildren[i]; if (uitoggle.value) { PlayerPrefs.SetString(this.key, uitoggle.name); break; } i++; } } } public void SaveSelection() { PlayerPrefs.SetString(this.key, UIPopupList.current.value); } public void SaveState() { PlayerPrefs.SetInt(this.key, (!UIToggle.current.value) ? 0 : 1); } public void SaveProgress() { PlayerPrefs.SetFloat(this.key, UIProgressBar.current.value); } public string keyName; private UIPopupList mList; private UIToggle mCheck; private UIProgressBar mSlider; }