private void LoadCommand(Element element, string attribute, string value) { value = value.Replace("(", @"\(").Replace(")", @"\)").Replace(".", @"\.").Replace("?", @"\?"); value = m_regex.Replace(value, MatchReplace); if (value.Contains("#")) { GameLoader.AddError(string.Format("Invalid command pattern '{0}.{1} = {2}'", element.Name, attribute, value)); } // Now split semi-colon separated command patterns string[] patterns = Utility.ListSplit(value); string result = string.Empty; foreach (string pattern in patterns) { if (result.Length > 0) { result += "|"; } result += "^" + pattern + "$"; } element.Fields.Set(attribute, result); }
public override void Load(Element element, string attribute, string value) { int num; if (int.TryParse(value, out num)) { element.Fields.Set(attribute, num); } else { GameLoader.AddError(string.Format("Invalid number specified '{0}.{1} = {2}'", element.Name, attribute, value)); } }
protected override AttributeLoadResult GetValueFromString(string s, string errorSource) { int num; if (int.TryParse(s, out num)) { return(new AttributeLoadResult { IsValid = true, Value = num }); } GameLoader.AddError(string.Format("Invalid number specified '{0} = {1}'", errorSource, s)); return(new AttributeLoadResult { IsValid = false }); }
protected override AttributeLoadResult GetValueFromString(string s, string errorSource) { double num; if (double.TryParse(s, System.Globalization.NumberStyles.AllowDecimalPoint | System.Globalization.NumberStyles.AllowLeadingSign, System.Globalization.CultureInfo.InvariantCulture, out num)) { return(new AttributeLoadResult { IsValid = true, Value = num }); } GameLoader.AddError(string.Format("Invalid number specified '{0} = {1}'", errorSource, s)); return(new AttributeLoadResult { IsValid = false }); }
public override void Load(Element element, string attribute, string value) { switch (value) { case "": case "true": element.Fields.Set(attribute, true); break; case "false": element.Fields.Set(attribute, false); break; default: GameLoader.AddError(string.Format("Invalid boolean specified '{0}.{1} = {2}'", element.Name, attribute, value)); break; } }
protected IDictionary <string, T> LoadDictionaryFromXElement(XElement xml, string errorSource) { var result = new Dictionary <string, T>(); var items = xml.Elements("item"); foreach (var item in items) { var key = item.Element("key"); var value = item.Element("value"); if (key == null) { GameLoader.AddError(string.Format("Missing key in dictionary for '{0}'", errorSource)); } else if (value == null) { GameLoader.AddError(string.Format("Missing value in dictionary for '{0}'", errorSource)); } else if (result.ContainsKey(key.Value)) { GameLoader.AddError(string.Format("Duplicate key '{1}' in dictionary for '{0}'", errorSource, key.Value)); } else { try { AddResultToDictionary(result, key.Value, value); } catch (Exception ex) { GameLoader.AddError(string.Format("Error adding key '{1}' to dictionary for '{0}': {2}", errorSource, key.Value, ex.Message)); } } } return(result); }
protected override AttributeLoadResult GetValueFromString(string s, string errorSource) { switch (s) { case "": case "true": return(new AttributeLoadResult { IsValid = true, Value = true }); case "false": return(new AttributeLoadResult { IsValid = true, Value = false }); default: GameLoader.AddError(string.Format("Invalid boolean specified '{0} = {1}'", errorSource, s)); return(new AttributeLoadResult { IsValid = false }); } }
public override void Load(Element element, string attribute, string value) { Dictionary <string, string> result = new Dictionary <string, string>(); string[] values = Utility.ListSplit(value); foreach (string pair in values) { if (pair.Length > 0) { string trimmedPair = pair.Trim(); int splitPos = trimmedPair.IndexOf('='); if (splitPos == -1) { GameLoader.AddError(string.Format("Missing '=' in dictionary element '{0}' in '{1}.{2}'", trimmedPair, element.Name, attribute)); return; } string key = trimmedPair.Substring(0, splitPos).Trim(); string dictValue = trimmedPair.Substring(splitPos + 1).Trim(); result.Add(key, dictValue); } } element.Fields.LazyFields.AddObjectDictionary(attribute, result); }