Ejemplo n.º 1
0
        public ObservableEnumEngineOption(EnumEngineOption option) : base(option)
        {
            foreach (string value in option.Values)
            {
                Values.Add(value);
                FriendlyValues.Add(GetFriendly(value));
            }

            _selectedValueIndex = Array.IndexOf(option.Values, option.Value);
        }
Ejemplo n.º 2
0
        public EngineOptions Clone()
        {
            EngineOptions clone = new EngineOptions();

            foreach (EngineOption eo in this)
            {
                if (eo is BooleanEngineOption)
                {
                    clone._options[eo.Key] = new BooleanEngineOption()
                    {
                        Key   = eo.Key,
                        Value = ((BooleanEngineOption)eo).Value,
                    };
                }
                else if (eo is IntegerEngineOption)
                {
                    clone._options[eo.Key] = new IntegerEngineOption()
                    {
                        Key      = eo.Key,
                        Value    = ((IntegerEngineOption)eo).Value,
                        MinValue = ((IntegerEngineOption)eo).MinValue,
                        MaxValue = ((IntegerEngineOption)eo).MaxValue,
                    };
                }
                else if (eo is DoubleEngineOption)
                {
                    clone._options[eo.Key] = new DoubleEngineOption()
                    {
                        Key      = eo.Key,
                        Value    = ((DoubleEngineOption)eo).Value,
                        MinValue = ((DoubleEngineOption)eo).MinValue,
                        MaxValue = ((DoubleEngineOption)eo).MaxValue,
                    };
                }
                else if (eo is EnumEngineOption)
                {
                    EnumEngineOption eeo = new EnumEngineOption()
                    {
                        Key   = eo.Key,
                        Value = ((EnumEngineOption)eo).Value,
                    };
                    string[] values = new string[((EnumEngineOption)eo).Values.Length];
                    Array.Copy(((EnumEngineOption)eo).Values, values, values.Length);
                    eeo.Values = values;

                    clone._options[eo.Key] = eeo;
                }
            }

            return(clone);
        }
Ejemplo n.º 3
0
        public void ParseEngineOptionLines(string [] optionLines)
        {
            foreach (string optionLine in optionLines)
            {
                try
                {
                    string[] split = optionLine.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

                    string key   = split[0];
                    string type  = split[1];
                    string value = split[2];

                    EngineOption eo;

                    switch (type)
                    {
                    case "bool":
                        BooleanEngineOption beo = new BooleanEngineOption();
                        beo.Value = bool.Parse(value);
                        eo        = beo;
                        break;

                    case "int":
                        IntegerEngineOption ieo = new IntegerEngineOption();
                        ieo.Value = int.Parse(value);
                        if (split.Length >= 5)
                        {
                            ieo.MinValue = int.Parse(split[3]);
                            ieo.MaxValue = int.Parse(split[4]);
                        }
                        eo = ieo;
                        break;

                    case "double":
                        DoubleEngineOption deo = new DoubleEngineOption();
                        deo.Value = double.Parse(value);
                        if (split.Length >= 5)
                        {
                            deo.MinValue = double.Parse(split[3]);
                            deo.MaxValue = double.Parse(split[4]);
                        }
                        eo = deo;
                        break;

                    case "enum":
                        EnumEngineOption eeo = new EnumEngineOption();
                        eeo.Value  = value;
                        eeo.Values = new string[split.Length - 3];
                        Array.Copy(split, 3, eeo.Values, 0, eeo.Values.Length);
                        eo = eeo;
                        break;

                    default:
                        throw new Exception(string.Format("Unknown type \"{0}\"", type));
                    }

                    eo.Key = key;

                    _options[key] = eo;
                }
                catch (Exception ex)
                {
                    throw new Exception(string.Format("Unable to parse option line {0}", optionLine), ex);
                }
            }
        }