public override void ExposeData() { //Verse.Log.Message("Settings. ExposeData()"); if (Scribe.mode == LoadSaveMode.Saving) { // in save mode, it looks like it deletes any // existing keys in the save data // so each 'save' is starting from a blank slate //Verse.Log.Message("Scribe.mode(Saving)"); foreach (KeyValuePair <Category, CategorySetting> kvp in this.Values) { Category cat = kvp.Key; CategorySetting setting = kvp.Value; if (OgreStackMod._DEFAULTS[cat].Mode != setting.Mode || OgreStackMod._DEFAULTS[cat].Value != setting.Value) { string label = cat + "_"; Scribe_Values.Look <MultiplierMode>(ref setting.Mode, label + "Mode"); Scribe_Values.Look <string>(ref setting.Buffer, label + "Value"); //Verse.Log.Message(string.Format("[Save Write] {0}:{1}:{2}", // cat.ToString(), // setting.Mode.ToString(), // setting.Value.ToString() //)); } else { //Verse.Log.Message(string.Format("[Save Skip] {0}:{1}:{2}", // cat.ToString(), // setting.Mode.ToString(), // setting.Value.ToString() //)); } } if (this.IsDebug) { Scribe_Values.Look <bool>(ref this.IsDebug, "IsDebugCSV"); } if (this.DetermineIfModifyStacksIsNeeded()) { this.ReModify(); } this.HashCurrentSettings(); } else { if (!isLoaded) { isLoaded = true; //Verse.Log.Message("Scribe.mode(Loading)"); foreach (Category c in OgreStackMod._DEFAULTS.Keys) { string label = c.ToString() + "_"; MultiplierMode mode = MultiplierMode.Fixed; string value = "0"; // OgreStackMod._DEFAULTS[c].Value; Scribe_Values.Look <MultiplierMode>(ref mode, label + "Mode", MultiplierMode.Fixed); Scribe_Values.Look <string>(ref value, label + "Value"); //if (string.Compare("0", value, true) != 0) if (!string.IsNullOrEmpty(value)) { this.Values[c] = new CategorySetting( mode: mode, buffer: value ); this.Values[c].ParseBuffer(); } else { this.Values[c] = new CategorySetting( mode: OgreStackMod._DEFAULTS[c].Mode, buffer: OgreStackMod._DEFAULTS[c].Value.ToString() ); } } Scribe_Values.Look <bool>(ref this.IsDebug, "IsDebugCSV", false); this.HashCurrentSettings(); } else { //Verse.Log.Message("Scribe.mode(Loading) [SKIP: Already Loaded]"); } } }
public CategorySetting(MultiplierMode mode) { this.Mode = mode; }
//=====================================================================================================\\ public CategorySetting(MultiplierMode mode, string buffer) { this.Mode = mode; this.Buffer = buffer; this.Value = float.TryParse(buffer, out this.Value) ? this.Value : 0f; }
//=====================================================================================================\\ public void Modify(MultiplierMode mode, float value, string buffer) { this.Mode = mode; this.Value = value; this.Buffer = buffer; }
//=====================================================================================================\\ public CategorySetting(MultiplierMode mode, float value) { this.Mode = mode; this.Value = value; this.Buffer = value.ToString(); }