Пример #1
0
        public ConfigEntry <T> Bind <T>(ConfigDefinition configDefinition, T defaultValue, ConfigDescription configDescription = null, bool?serverAuthoritative = null)
        {
            ConfigEntry <T> entry = new ConfigEntry <T>(_mod.Config.Bind(configDefinition, defaultValue, configDescription), serverAuthoritative != null ? (bool)serverAuthoritative : _DefaultBindAuthority);

            _configEntries[entry.BaseEntry.Definition.ToString()] = entry;
            return(entry);
        }
Пример #2
0
 public ConfigStringConvar(string name, string defaultValue, string helpText, ConfigFile configFile, ConfigDefinition configDefinition, ConVarFlags flags = ConVarFlags.None) : base(name, defaultValue, helpText, flags)
 {
     file       = configFile;
     definition = configDefinition;
     SetString(configFile.Wrap <string>(configDefinition).Value);
     onValueChanged += valuechanged;
 }
Пример #3
0
        private static ConfigEntry <T> BindConfig <T>(ConfigFile file, ConfigDefinition definition, ConfigDescription cd, T defaultValue)
        {
            baseVRConfigID++;
            var entry = file.Bind <T>(definition, defaultValue, cd);

            return(entry);
        }
Пример #4
0
 private ConfigData GetDefaultConfigData(ConfigDefinition configDefinition)
 {
     return(new ConfigData(configDefinition,
                           configDefinition.DefaultValue,
                           ConfigScope.Default,
                           ConfigFilter.GlobalAppliesTo));
 }
 private void InitProperties(string section, string key, Type defaultValueType, object defaultValue, string description, int order = 0)
 {
     ConfigDefinition  = new ConfigDefinition(section, key);
     FieldType         = defaultValueType;
     DefaultValue      = defaultValue;
     ConfigDescription = string.IsNullOrEmpty(description) ? null : new ConfigDescription(description);
     Order             = order;
 }
        public void CanRegisterConfigs(ConfigDefinition config)
        {
            ConfigManager manager = GetConfigManager() as ConfigManager;

            manager.RegisterConfig(config);
            manager.BuildConfig();
            Assert.Equal(config.DefaultValue, manager.GetConfigValueInternal(config.Key, null));
        }
Пример #7
0
        internal static bool configfloat(string catagorie, string description, float defaultvalue, out float value)
        {
            ConfigDefinition configDefinition = new ConfigDefinition(catagorie, description);
            var bindConfig = configFile.Bind(configDefinition, defaultvalue);

            value = bindConfig.Value;
            return(true);
        }
Пример #8
0
        public OmegaMod()
        {
            Config = base.Config;
            Logger = base.Logger;
            var sizeDescription = new ConfigDescription("Shield Growth Rate");
            var sizeDefinition  = new ConfigDefinition("Shield", "SizePerSecond");

            _sizePerSecond = Config.Bind(sizeDefinition, 1f, sizeDescription);
        }
Пример #9
0
        public static ConfigEntry <T> GetConfigEntry <T>(this ConfigFile configFile, ConfigDefinition definition)
        {
            if (!configFile.TryGetEntry <T>(definition, out var entry))
            {
                throw new InvalidOperationException("Config entry has not been added yet.");
            }

            return(entry);
        }
Пример #10
0
        private static ConfigEntry <bool> BindBool(ConfigFile file, string section, string key, bool defaultVal, string description, string title)
        {
            ConfigDefinition  def = new ConfigDefinition(section, key);
            ConfigDescription cd  = new ConfigDescription(description);
            var entry             = BindConfig(file, def, cd, defaultVal);

            VRSettings.Add(new BepinGTFOSettingBool(title, eSettingInputType.BoolToggle, (eCellSettingID)baseVRConfigID, entry, defaultVal));
            return(entry);
        }
Пример #11
0
        private static ConfigEntry <float> BindFloat(ConfigFile file, string section, string key, float defaultVal, float minVal, float maxVal, string description, string title)
        {
            AcceptableValueBase a   = new AcceptableValueRange <float>(minVal, maxVal);
            ConfigDefinition    def = new ConfigDefinition(section, key);
            ConfigDescription   cd  = new ConfigDescription(description, a);
            var entry = BindConfig(file, def, cd, defaultVal);

            VRSettings.Add(new BepinGTFOSettingFloat(title, eSettingInputType.FloatSlider, (eCellSettingID)baseVRConfigID, entry, defaultVal, minVal, maxVal));
            return(entry);
        }
Пример #12
0
        private static ConfigEntry <string> BindStringDropdown(ConfigFile file, string section, string key, string defaultVal, string description, string title, string[] possibleValues)
        {
            AcceptableValueList <string> acceptableValues = new AcceptableValueList <string>(possibleValues);
            ConfigDefinition             def = new ConfigDefinition(section, key);
            ConfigDescription            cd  = new ConfigDescription(description, acceptableValues);
            var entry = BindConfig(file, def, cd, defaultVal);

            VRSettings.Add(new BepinGTFOSettingString(title, eSettingInputType.StringArrayDropdown, (eCellSettingID)baseVRConfigID, entry, defaultVal, possibleValues));
            return(entry);
        }
Пример #13
0
 /// <summary>
 /// Gets the value of a config from only the specified provider.
 /// </summary>
 /// <param name="section"></param>
 /// <param name="definition"></param>
 /// <param name="providerId"></param>
 /// <returns></returns>
 private object GetConfigValueOrDefault(IConfigurationSection section, ConfigDefinition definition, string providerId)
 {
     try
     {
         return(section.Get(definition.ValueType, providerId));
     }
     catch (InvalidOperationException ex)
     {
         WriteWarning($"[ConfigManager] Failed to get value for [{definition.Key}]. Using the default value [{definition.DefaultValue}] instead. Error: {ex.Message}. {ex.InnerException?.Message}");
         WriteDebug($"[ConfigManager] Exception: {ex.Message}, stack trace: \n{ex.StackTrace}");
         return(definition.DefaultValue);
     }
 }
 public override void LoadConfig()
 {
     foreach (var entry in ConfigManager.ConfigElements)
     {
         var key = entry.Key;
         var def = new ConfigDefinition(CTG_NAME, key);
         if (Config.ContainsKey(def) && Config[def] is ConfigEntryBase configEntry)
         {
             var config = entry.Value;
             config.BoxedValue = configEntry.BoxedValue;
         }
     }
 }
Пример #15
0
 internal ConfigEntry(ConfigFile configFile,
                      ConfigDefinition definition,
                      T defaultValue,
                      ConfigDescription configDescription) : base(configFile, definition, typeof(T),
                                                                  defaultValue, configDescription)
 {
     configFile.SettingChanged += (sender, args) =>
     {
         if (args.ChangedSetting == this)
         {
             SettingChanged?.Invoke(sender, args);
         }
     };
 }
Пример #16
0
        public bool checkKeyCode(string configkey)
        {
            var entry = new ConfigDefinition("Keyboard Shortcuts", configkey);

            if (entry != null)
            {
                if (Config.ContainsKey(entry))
                {
                    BepInEx.Configuration.KeyboardShortcut shortcut = (BepInEx.Configuration.KeyboardShortcut)Config[entry].BoxedValue;
                    return(shortcut.IsDown());
                }
            }
            return(false);
        }
Пример #17
0
        public string GetMotS(string stageName)
        {
            string name = stageName.ToLower();

            if (stageMessages.ContainsKey(name))
            {
                return(stageMessages[name].Value);
            }
            var configDef = new ConfigDefinition(ModuleName, name);

            if (PluginEntry.Configuration.ContainsKey(configDef))
            {
                stageMessages.Add(name, PluginEntry.Configuration.Bind <string>(configDef, ""));
                return(stageMessages[name].Value);
            }
            return("");
        }
Пример #18
0
 /// <inheritdoc/>
 public void RegisterConfig(ConfigDefinition config)
 {
     // check if key already taken
     if (_configDefinitionMap.ContainsKey(config.Key))
     {
         if (_configDefinitionMap[config.Key] == config)
         {
             Debug.WriteLine($"Config with key [{config.Key}] was registered twice");
         }
         else
         {
             throw new AzPSArgumentException($"Duplicated config key. [{config.Key}] was already taken.", nameof(config.Key));
         }
         return;
     }
     // configure environment variable provider
     EnvironmentVariableParsers[config.Key] = config.ParseFromEnvironmentVariables;
     _configDefinitionMap[config.Key]       = config;
 }
Пример #19
0
        public static bool SaveOptions()
        {
            try
            {
                List <PropertyInfo> properties = AccessTools.GetDeclaredProperties(typeof(MultiplayerOptions));
                foreach (PropertyInfo prop in properties)
                {
                    ConfigDefinition key = new ConfigDefinition(SECTION_NAME, prop.Name);
                    configFile[key].BoxedValue = prop.GetValue(Options);
                }
                configFile.Save();
            }
            catch (Exception e)
            {
                Log.Error($"Could not load {OPTION_SAVE_FILE}", e);
                return(false);
            }

            return(true);
        }
Пример #20
0
        PluginEntry()
        {
#if DEBUG
            Logger.LogWarning("This is an experimental build!");
#endif
            rng           = new Random();
            statDefs      = new List <DumbStat>();
            StatsToAdd    = Config.Bind("main", "amount", 5, "How many stats to add to the end screen.");
            disablePoints = Config.Bind("miscellaneous", "Disable points in the end screen?", false);

            List <string> stringBuilder = new List <string>();
            var           types         = Assembly.GetExecutingAssembly().GetTypes();
            foreach (Type tInfo in types)
            {
                if (typeof(DumbStat).IsAssignableFrom(tInfo))
                {
                    var statAttrs = tInfo.GetCustomAttribute <DumbStatDefAttribute>();
                    if (statAttrs != null)
                    {
                        var stat = (DumbStat)Activator.CreateInstance(tInfo);
                        statDefs.Add(stat);
                        stringBuilder.Add(stat.Definition.displayToken);
                    }
                }
            }
            ConfigDefinition  bl  = new ConfigDefinition("main", "blacklist");
            ConfigDescription bld = new ConfigDescription("Possible values: " + string.Join(";", stringBuilder));
            blackList = Config.Bind <string>(bl, "", bld);
            var version = Config.Bind <string>("miscellaneous", "config version", VERSION);
            if (Version.Parse(VERSION).CompareTo(Version.Parse(version.Value)) != 0)
            {
                string hold = blackList.Value;
                blackList = null;
                Config.Remove(bl);
                Config.Save();
                version.Value   = VERSION;
                blackList       = Config.Bind <string>(bl, "", bld);
                blackList.Value = hold;
            }
            BlackList = new List <string>(blackList.Value.Split(';', ',', ' '));
        }
Пример #21
0
        void Awake()
        {
            // Setup/Apply Config file
            List <ConfigDefinition> configList = new List <ConfigDefinition>();

            foreach (var enemy in TrophyXPDict.Keys)
            {
                configList.Add(new ConfigDefinition("ExpScaling", enemy));
            }

            ConfigDefinition bossConsumption =
                new ConfigDefinition("BossConsumption", "CanConsumeBosses");

            foreach (var config in configList)
            {
                TrophyXPDict[config.Key] = Config.Bind(config, TrophyXPDict[config.Key]).Value;
            }
            CanConsumeBosses = Config.Bind(bossConsumption, true).Value;

            Harmony.PatchAll();
        }
Пример #22
0
 /// <inheritdoc/>
 public void RegisterConfig(ConfigDefinition config)
 {
     // check if key already taken
     if (_configDefinitionMap.ContainsKey(config.Key))
     {
         if (_configDefinitionMap[config.Key] == config)
         {
             Debug.WriteLine($"Config with key [{config.Key}] was registered twice");
         }
         else
         {
             throw new AzPSArgumentException($"Duplicated config key. [{config.Key}] was already taken.", nameof(config.Key));
         }
         return;
     }
     // configure environment variable providers
     if (!string.IsNullOrEmpty(config.EnvironmentVariableName))
     {
         EnvironmentVariableToKeyMap[config.EnvironmentVariableName] = ConfigPathHelper.GetPathOfConfig(config.Key);
     }
     _configDefinitionMap[config.Key] = config;
 }
Пример #23
0
        public void UpdateDescription(T vanillaValue, bool ignoreAlreadyUpdated = false)
        {
            if (!ignoreAlreadyUpdated && _updatedDescription)
            {
                return;
            }

            _updatedDescription = true;
            string           desc = Entry.Description.Description;
            T                val  = Value;
            ConfigDefinition def  = Entry.Definition;
            ConfigFile       file = Entry.ConfigFile;

            file.Remove(def);
            Entry = file.Bind(def, (T)(Entry.DefaultValue is bool?vanillaValue: Entry.DefaultValue),
                              new ConfigDescription(desc + (desc.EndsWith(".") ? "" : ".") + " Vanilla value: " + vanillaValue));
            if (Changer != null)
            {
                Entry.SettingChanged += (sender, args) => ChangeAction.Invoke(Changer);
            }
            Entry.Value = val is bool && _updateBoolValue ? vanillaValue : val;
            Entry.ConfigFile.Save();
        }
Пример #24
0
        /// <summary>
        ///     Types of defaultValue and definition.AcceptableValues have to be the same as settingType.
        /// </summary>
        internal ConfigEntryBase(ConfigFile configFile,
                                 ConfigDefinition definition,
                                 Type settingType,
                                 object defaultValue,
                                 ConfigDescription configDescription)
        {
            ConfigFile  = configFile ?? throw new ArgumentNullException(nameof(configFile));
            Definition  = definition ?? throw new ArgumentNullException(nameof(definition));
            SettingType = settingType ?? throw new ArgumentNullException(nameof(settingType));

            Description = configDescription ?? ConfigDescription.Empty;
            if (Description.AcceptableValues != null &&
                !SettingType.IsAssignableFrom(Description.AcceptableValues.ValueType))
            {
                throw new
                      ArgumentException("configDescription.AcceptableValues is for a different type than the type of this setting");
            }

            DefaultValue = defaultValue;

            // Free type check and automatically calls ClampValue in case AcceptableValues were provided
            BoxedValue = defaultValue;
        }
        private void config()
        {
            const string sectionName = "may the day treat you well";

            ConfigDefinition  moveSpeedDef  = new ConfigDefinition(sectionName, "Set Move Speed");
            ConfigDescription moveSpeedDesc = new ConfigDescription($"Set Beetle Move Speed to this amount (base is {_origBaseMoveSpeed})");

            SetMoveSpeed = Config.Bind <float>(moveSpeedDef, 9.5f, moveSpeedDesc);

            ConfigDefinition  attackSpeedDef  = new ConfigDefinition(sectionName, "Attack Speed Multiplier");
            ConfigDescription attackSpeedDesc = new ConfigDescription("Multiply Beetle Attack Speed by this amount");

            MultAttackSpeed = Config.Bind <float>(attackSpeedDef, 2f, attackSpeedDesc);

            ConfigDefinition  levelAttackSpeedDef  = new ConfigDefinition(sectionName, "Set Level Attack speed");
            ConfigDescription levelAttackSpeedDesc = new ConfigDescription("Set Beetle Attack speed gained per level");

            SetLevelAttackSpeed = Config.Bind <float>(levelAttackSpeedDef, 0.1f, levelAttackSpeedDesc);

            ConfigDefinition  damageDef  = new ConfigDefinition(sectionName, "Damage Multipier");
            ConfigDescription damageDesc = new ConfigDescription("Multiply Beetle Damage by this amount");

            MultDamage = Config.Bind <float>(damageDef, 0.8f, damageDesc);
        }
Пример #26
0
        public void SetMotS(string stageName, string newArgs)
        {
            string name = stageName.ToLower();

            if (stageMessages.ContainsKey(name))
            {
                stageMessages[name].Value = newArgs;
            }
            else
            {
                var configDef = new ConfigDefinition(ModuleName, name);
                if (PluginEntry.Configuration.ContainsKey(configDef))
                {
                    stageMessages.Add(name, PluginEntry.Configuration.Bind <string>(configDef, ""));
                    stageMessages[name].Value = newArgs;
                }
                else
                {
                    ConfigEntry <string> entry = PluginEntry.Configuration.Bind <string>(configDef, "", new ConfigDescription(_MOTSHelp));
                    entry.Value = newArgs;
                    stageMessages.Add(name, entry);
                }
            }
        }
Пример #27
0
 private string GenerateKey(ConfigDefinition def) => $"{rwMod.ModID}_{def.Section}_{def.Key}";
Пример #28
0
 private static bool TryGetBase(ConfigFile file, ConfigDefinition key, out ConfigEntryBase entryBase)
 {
     try { entryBase = file[key]; return(true); }
     catch (Exception) { entryBase = null; }
     return(false);
 }
Пример #29
0
 private static int CompareCDkey(ConfigDefinition x, ConfigDefinition y)
 {
     return(x.Key.CompareTo(y.Key));
 }
Пример #30
0
        private void ParseConfig(ConfigFile configFile)
        {
            // Settings
            var startingSkillPointsPerAbilityPointConfig = new ConfigDefinition("main", "StartingSkillPointsPerAbilityPoint");
            var startingAbilityPointsConfig = new ConfigDefinition("main", "StartingAbilityPoints");
            var maxSkillValueAtCreation     = new ConfigDefinition("main", "MaximumSkillValueAtCreation");
            var skillPointsAbilityLimit     = new ConfigDefinition("main", "SkillPointsAbilityLimited");

            bool reload = false;

            if (configFile.GetSetting <int>(startingAbilityPointsConfig) == null)
            {
                configFile.AddSetting <int>(startingAbilityPointsConfig, 8, new ConfigDescription("The amount of Ability points you get at character creation. Default is 8."));
                configFile.Save();
                reload = true;
            }
            if (configFile.GetSetting <int>(startingSkillPointsPerAbilityPointConfig) == null)
            {
                configFile.AddSetting <int>(startingSkillPointsPerAbilityPointConfig, 5, new ConfigDescription("The amount of Skill points you get at character creation, per starting Ability point.\nFor example: the default value of 5, combined with the default value of 8 for starting Ability points, results in a total of 40 Skill points to spend at character creation."));
                configFile.Save();
                reload = true;
            }

            if (configFile.GetSetting <int>(maxSkillValueAtCreation) == null)
            {
                configFile.AddSetting <int>(maxSkillValueAtCreation, 6, new ConfigDescription("The maximum value of a Skill at character creation, regardless of Ability scores or total Skill points."));
                configFile.Save();
                reload = true;
            }

            if (configFile.GetSetting <int>(skillPointsAbilityLimit) == null)
            {
                configFile.AddSetting(skillPointsAbilityLimit, 1, new ConfigDescription("The manner in which skill point assignment is limited by Ability scores.\n1: For a given Ability, you can put skill points in a maximum number of skills tied to that Ability equal to the Ability's score (e.g. if you have Motorics 2, you can increase a maximum of 2 different Motorics skills).\n2: For a given Ability, you can distribute a maximum of StartingSkillPointsPerAbilityPoint times the Ability's value into Skills tied to that ability (e.g. if StartingSkillPointsPerAbilityPoint = 5 (default), and you have Motorics 2, you can distribute a total of 10 skill points in Motorics skills)\n0: No limit on skill points distribution based on Ability scores (not recommended).", new AcceptableValueRange <int>(0, 2)));
                configFile.Save();
                reload = true;
            }

            if (reload)
            {
                configFile.Reload();
            }

            _startingAbilityPoints = configFile.GetSetting <int>(startingAbilityPointsConfig).Value;
            _startingSkillPointsPerAbilityPoint = configFile.GetSetting <int>(startingSkillPointsPerAbilityPointConfig).Value;
            _maxSkillValue = configFile.GetSetting <int>(maxSkillValueAtCreation).Value;
            try
            {
                _abilityLimitSetting = (AbilityLimitationSetting)configFile.GetSetting <int>(skillPointsAbilityLimit).Value;
            }
            catch (Exception ex)
            {
                Console.WriteLine("ParseConfig: error parsing ability limit setting. Defaulting to 1.");
                _abilityLimitSetting = AbilityLimitationSetting.LIMIT_NR_OF_SKILLS;
            }

            Console.WriteLine("Advanced Character Creation Configuration:");
            Console.WriteLine($". Ability points at character creation: {_startingAbilityPoints}");
            Console.WriteLine($". Skill points per ability point at character creation: {_startingSkillPointsPerAbilityPoint}");
            Console.WriteLine($". => Total nr. of Skill points to spend on character creation: {_startingAbilityPoints * _startingSkillPointsPerAbilityPoint}");
            Console.WriteLine($". Maximum value of any Skill at character creation: {_maxSkillValue}");
            Console.WriteLine($". Ability score limitation on Skill point spending: {Enum.GetName(typeof(AbilityLimitationSetting), _abilityLimitSetting)}");
        }