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); }
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); }
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); } } }