Beispiel #1
0
            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);
            }
Beispiel #2
0
            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));
                }
            }
Beispiel #3
0
            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
                });
            }
Beispiel #4
0
            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
                });
            }
Beispiel #5
0
            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;
                }
            }
Beispiel #6
0
            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);
            }
Beispiel #7
0
            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
                    });
                }
            }
Beispiel #8
0
            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);
            }