示例#1
0
        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]");
                }
            }
        }
示例#2
0
 public CategorySetting(MultiplierMode mode)
 {
     this.Mode = mode;
 }
示例#3
0
        //=====================================================================================================\\

        public CategorySetting(MultiplierMode mode, string buffer)
        {
            this.Mode   = mode;
            this.Buffer = buffer;
            this.Value  = float.TryParse(buffer, out this.Value) ? this.Value : 0f;
        }
示例#4
0
        //=====================================================================================================\\

        public void Modify(MultiplierMode mode, float value, string buffer)
        {
            this.Mode   = mode;
            this.Value  = value;
            this.Buffer = buffer;
        }
示例#5
0
        //=====================================================================================================\\

        public CategorySetting(MultiplierMode mode, float value)
        {
            this.Mode   = mode;
            this.Value  = value;
            this.Buffer = value.ToString();
        }