Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="input"></param>
        /// <param name="args"></param>
        /// <param name="variable"></param>
        /// <param name="suggestions"></param>
        /// <returns></returns>
        Suggestion AutoCompleteVariable(string input, string[] args, ConfigVariable variable)
        {
            var suggestion = new Suggestion(input);

            var type       = variable.TargetProperty.PropertyType;
            var candidates = new string[0];

            //
            //	Gather possible values :
            //
            if (type == typeof(bool))
            {
                candidates = new string[] { "True", "False" };
            }
            else if (type.IsEnum)
            {
                candidates = Enum.GetNames(type);
            }
            else
            {
                candidates = new string[] { variable.Get() };
            }

            //
            //	Only name of the variables is entered.
            //	Just show possible values.
            //
            if (args.Length == 1)
            {
                suggestion.Set(args[0] + " ");
                suggestion.AddRange(candidates.Select(c1 => args[0] + " " + c1));
                return(suggestion);
            }

            //
            //	Select candidates that starts with entered value.
            //
            var longest = LongestCommon(args[1], ref candidates);


            suggestion.AddRange(candidates.Select(c1 => args[0] + " " + c1));

            //	add quotes if longest common contains spaces :
            if (longest != null && longest.Any(c => char.IsWhiteSpace(c)))
            {
                longest = "\"" + longest;                // + "\"";
                if (candidates.Length == 1)
                {
                    //	only on suggestion - close quotes.
                    longest += "\"";
                }
            }
            else
            {
            }

            suggestion.Set(string.Format("{0} {1}", args[0], longest));

            return(suggestion);
        }
Example #2
0
        private void cmdAccept_Click(object sender, EventArgs e)
        {
            SelectedVariables = new List <ConfigVariable>();
            lvwVariables.Focus(); //make sure any last changes have been saved in list
            Application.DoEvents();
            foreach (ListViewItem lvi in lvwVariables.Items)
            {
                ConfigVariable cv = (ConfigVariable)lvi.Tag;
                if (cv.ReplaceValue.Length == 0)
                {
                    if (MessageBox.Show($"The variable '{cv.FindValue}' has no value! Do you want to accept this?", "Accept", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                    {
                        return;
                    }
                }
                SelectedVariables.Add(cv);
            }

            string modifiedConfig = InputConfig;

            foreach (ConfigVariable cv in SelectedVariables)
            {
                modifiedConfig = cv.ApplyOn(modifiedConfig);
            }
            FormattedConfig = modifiedConfig;
            DialogResult    = DialogResult.OK;
            Close();
        }
Example #3
0
        public string ApplyConfigVarsOnField(string field)
        {
            List <ConfigVariable> allConfigVars = new List <ConfigVariable>();

            //applying its own first
            foreach (ConfigVariable cv in ConfigVariables)
            {
                ConfigVariable existingCV = (from ConfigVariable c in allConfigVars
                                             where c.FindValue == cv.FindValue
                                             select c).FirstOrDefault();
                if (existingCV == null)
                {
                    allConfigVars.Add(cv.Clone());
                }
            }
            if (allConfigVars.Count == 0) //adds dummy entry so internal vars also get applied
            {
                allConfigVars.Add(new ConfigVariable()
                {
                    FindValue = DateTime.Now.Millisecond.ToString(), ReplaceValue = DateTime.Now.Millisecond.ToString()
                });
            }

            return(allConfigVars.ApplyOn(field));
        }
Example #4
0
 private void moveDownConfigVarToolStripButton_Click(object sender, EventArgs e)
 {
     if (lvwConfigVars.SelectedItems.Count == 1)
     {
         int index = lvwConfigVars.SelectedItems[0].Index;
         if (index < lvwConfigVars.Items.Count - 1)
         {
             loadConfigVarEntry = true;
             ConfigVariable tmpBottom = (ConfigVariable)lvwConfigVars.Items[index + 1].Tag;
             ConfigVariable tmpTop    = (ConfigVariable)lvwConfigVars.Items[index].Tag;
             lvwConfigVars.Items[index + 1].Tag              = tmpTop;
             lvwConfigVars.Items[index + 1].Text             = tmpTop.FindValue;
             lvwConfigVars.Items[index + 1].SubItems[1].Text = tmpTop.ReplaceValue;
             lvwConfigVars.Items[index].Tag              = tmpBottom;
             lvwConfigVars.Items[index].Text             = tmpBottom.FindValue;
             lvwConfigVars.Items[index].SubItems[1].Text = tmpBottom.ReplaceValue;
             lvwConfigVars.Items[index].Selected         = false;
             lvwConfigVars.Items[index].Focused          = false;
             lvwConfigVars.Items[index + 1].Selected     = true;
             lvwConfigVars.Items[index + 1].Focused      = true;
             lvwConfigVars.Items[index].EnsureVisible();
             loadConfigVarEntry = false;
         }
     }
 }
        public XmlConfigDataVariables InitConfigDataVariables(string sPath)
        {
            XmlConfigDataVariables xmlConfigDataVariables = null;

            if (File.Exists(sPath))
            {
                xmlConfigDataVariables = FastSerialisation.Instance().GetSaveStructInCurrentDirectory <XmlConfigDataVariables>(sPath);
                return(xmlConfigDataVariables);
            }
            xmlConfigDataVariables = new XmlConfigDataVariables()
            {
                listConfigVariable = new List <ConfigVariable>()
            };
            ConfigVariable configVariable = new ConfigVariable()
            {
                NomVariable = "VariableTest", FormuleVariable = eFormuleVariable.NC, NeedValidation = false, DefaultValue = "", listParamFormule = new List <BindingVariable>()
            };
            BindingVariable bindingVariable = new BindingVariable()
            {
                NomVariableBinding = "", SourceData = 0, DefaultValue = ""
            };

            configVariable.listParamFormule.Add(bindingVariable);
            xmlConfigDataVariables.listConfigVariable.Add(configVariable);
            string sReponse = FastSerialisation.Instance().SaveStructInCurrentDirectory <XmlConfigDataVariables>(xmlConfigDataVariables, sPath);

            SingleLogFileAsXml.Instance().AjouteLog("Init", "ConfigClient.Variables.xml  n'existe pas : creation : " + sReponse);
            return(xmlConfigDataVariables);
        }
        public void GetTest()
        {
            var d0 = new ConfigVariable("a", null);
            var d1 = new ConfigVariable("b", "c");

            Assert.Null(d0.GetValue <string>());
            Assert.Equal(1, d0.GetValue <int>(1));
            Assert.Equal(0, d1.GetValue <int>());
            Assert.Equal(1, d1.GetValue <int>(1));
        }
        public void Ctor2ArgTest()
        {
            string n0 = "a";
            int    v0 = 123;
            var    d0 = new ConfigVariable(n0, v0);

            Assert.Equal(n0, d0.Name);
            Assert.Equal(v0.ToString(), d0.Value);
            Assert.Throws <ArgumentException>(() => new ConfigVariable("123a", null));
        }
        public void CtorDefaultTest()
        {
            var d = new ConfigVariable();

            Assert.Equal("", d.Name);
            Assert.Null(d.Value);
            Assert.False(d.IsDirty);
            Assert.True(d.IsNull);
            Assert.Equal(ConfigVariable.Null, d);
        }
Example #9
0
 private void txtVariableValue_TextChanged(object sender, EventArgs e)
 {
     if (!loadingVar == true && lvwVariables.SelectedItems.Count > 0)
     {
         ConfigVariable cv = (ConfigVariable)lvwVariables.SelectedItems[0].Tag;
         if (txtVariableName.Text == cv.FindValue)
         {
             cv.ReplaceValue = txtVariableValue.Text;
         }
     }
 }
Example #10
0
 private void lvwVariables_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (lvwVariables.SelectedItems.Count > 0)
     {
         loadingVar = true;
         ConfigVariable cv = (ConfigVariable)lvwVariables.SelectedItems[0].Tag;
         txtVariableName.Text      = cv.FindValue;
         txtVariableValue.Text     = cv.ReplaceValue;
         txtVariableValue.ReadOnly = false;
         loadingVar = false;
     }
     else
     {
         loadingVar                = true;
         txtVariableName.Text      = "";
         txtVariableValue.Text     = "";
         txtVariableValue.ReadOnly = true;
         loadingVar                = false;
     }
 }
Example #11
0
 public bool ContainVariables()
 {
     if (InputConfig == "")
     {
         return(false);
     }
     else
     {
         System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex("(\\[\\[).*?(\\]\\])", System.Text.RegularExpressions.RegexOptions.Multiline);
         SelectedVariables = new List <ConfigVariable>();
         foreach (var m in re.Matches(InputConfig))
         {
             string variableUnformatted = m.ToString();
             string initialValue        = "";
             if (variableUnformatted.Contains(":"))
             {
                 initialValue = variableUnformatted.Substring(variableUnformatted.IndexOf(':') + 1).TrimEnd(']');
             }
             ConfigVariable cv = (from ConfigVariable c in SelectedVariables
                                  where c.FindValue == variableUnformatted
                                  select c).FirstOrDefault();
             if (cv == null)
             {
                 cv = new ConfigVariable()
                 {
                     FindValue = variableUnformatted, ReplaceValue = initialValue
                 };
                 cv.FindValue = variableUnformatted;
                 SelectedVariables.Add(cv);
             }
         }
         if (SelectedVariables.Count == 0)
         {
             return(false);
         }
         else
         {
             return(true);
         }
     }
 }
Example #12
0
        public void Awake()
        {
            var epicLootConfig = EpicLoot.EpicLoot.GetConfigObject();

            ConfigManager.RegisterMod(EpicLoot.EpicLoot.PluginId, epicLootConfig);

            ConfigManager.ServerConfigReceived += InitializeConfig;

            _gatedItemTypeModeConfig      = ReplaceConfigVar <GatedItemTypeMode>(epicLootConfig, "Balance", "Item Drop Limits");
            _bossesDropOneTrophyPerPlayer = ReplaceConfigVar <bool>(epicLootConfig, "Balance", "Bosses Drop One Trophy Per Player");

            ConfigManager.RegisterModConfigVariable(EpicLoot.EpicLoot.PluginId, _lootConfigFile);
            ConfigManager.RegisterModConfigVariable(EpicLoot.EpicLoot.PluginId, _magicEffectsConfigFile);
            ConfigManager.RegisterModConfigVariable(EpicLoot.EpicLoot.PluginId, _itemInfoConfigFile);
            ConfigManager.RegisterModConfigVariable(EpicLoot.EpicLoot.PluginId, _recipesConfigFile);
            ConfigManager.RegisterModConfigVariable(EpicLoot.EpicLoot.PluginId, _enchantCostsConfigFile);
            ConfigManager.RegisterModConfigVariable(EpicLoot.EpicLoot.PluginId, _itemNamesConfigFile);
            ConfigManager.RegisterModConfigVariable(EpicLoot.EpicLoot.PluginId, _adventureDataConfigFile);

            Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), PluginId);
        }
Example #13
0
 internal static bool GetValue <T>(ConfigVariable <T> configVariable, out T result)
 {
     if (!m_data.TryGetValue(configVariable.ConfigKey, out var obj))
     {
         result = default(T);
         return(false);
     }
     if (typeof(Enum).IsAssignableFrom(typeof(T)))
     {
         result = (T)Enum.Parse(typeof(T), obj.ToString());
     }
     else if (typeof(IConvertible).IsAssignableFrom(typeof(T)))
     {
         result = (T)Convert.ChangeType(obj, typeof(T));
     }
     else
     {
         result = JsonConvert.DeserializeObject <T>(JsonConvert.SerializeObject(obj));
     }
     return(true);
 }
        public void GetSetTest(Type t0, object v0, bool construct)
        {
            object u0 = v0;

            if (construct)
            {
                object[] ca = null;
                Type[]   ts = null;
                if (v0.GetType().IsArray)
                {
                    List <Type>   tl = new List <Type>();
                    List <object> al = new List <object>();
                    foreach (var v in v0 as IEnumerable)
                    {
                        al.Add(v);
                        tl.Add(v.GetType());
                    }
                    ca = al.ToArray();
                    ts = tl.ToArray();
                }
                else
                {
                    ts    = new Type[1];
                    ts[0] = v0.GetType();
                    ca    = new object[1];
                    ca[0] = v0;
                }
                var ctor = t0.GetConstructor(ts);
                u0 = ctor.Invoke(ca);
            }
            var d0 = new ConfigVariable("v", null);

            d0.SetValue(u0);
            var m  = d0.GetType().GetMethod("GetValue");
            var gm = m.MakeGenericMethod(t0);
            var v1 = gm.Invoke(d0, new object[] { null });

            Assert.Equal(u0, v1);
        }
Example #15
0
 internal static void Register <T>(ConfigVariable <T> configVariable)
 {
     m_sampleData[configVariable.ConfigKey] = configVariable.DefaultValue;
     File.WriteAllText(m_sampleConfigPath, JsonConvert.SerializeObject(m_sampleData, Formatting.Indented));
 }
        private ConfigObject FetchObject(List <Token> configSection)
        {
            if (configSection.Count == 0)
            {
                return(null);
            }

            ConfigObject resultObject = null;

            var sectionBeginningToken = configSection.First();

            if (sectionBeginningToken is VariableToken)
            {
                resultObject = new ConfigVariable
                {
                    Name  = (sectionBeginningToken as VariableToken).VariableName,
                    Value = (sectionBeginningToken as VariableToken).Value
                };
                return(resultObject);
            }

            if (sectionBeginningToken is ClassOpeningToken)
            {
                if ((sectionBeginningToken as ClassOpeningToken).ClassName == "data")
                {
                    var dataClassType = ConfigDataTypeHelper.GetType(
                        configSection.OfType <StandaloneStringToken>().First());

                    var     dataObject = (FetchObject(configSection.Skip(6).Take(configSection.Count - 7).ToList()));
                    dynamic dataValue  = ExtractDataValue(dataClassType, dataObject);

                    resultObject = new DataClass()
                    {
                        DataType = dataClassType,
                        Value    = dataValue
                    };
                }
                else if (Regex.Match((sectionBeginningToken as ClassOpeningToken).ClassName, @"^Item\d+$").Success)
                {
                    var fetchedObjects          = FetchListOfObjects(configSection.Skip(1).Take(configSection.Count - 2).ToList());
                    var fetchedReadOnlyProperty =
                        (fetchedObjects.FirstOrDefault(configObject => (configObject as ConfigVariable)?.Name == "readOnly")
                         as
                         ConfigVariable)?.Value;
                    resultObject = new ItemClass
                    {
                        Name =
                            (fetchedObjects.FirstOrDefault(configObject => (configObject as ConfigVariable)?.Name == "name") as
                             ConfigVariable)?.Value.ToString(),
                        Data     = fetchedObjects.OfType <DataClass>().First(),
                        ReadOnly = fetchedReadOnlyProperty == null ? default(bool?) : (int)fetchedReadOnlyProperty == 1
                    };
                }
                else
                {
                    resultObject = new GeneralClass()
                    {
                        ClassName = (sectionBeginningToken as ClassOpeningToken).ClassName,
                        Content   = FetchListOfObjects(configSection.Skip(1).Take(configSection.Count - 2).ToList())
                    };
                }
            }

            return(resultObject);
        }