コード例 #1
0
    public static XmlLoadResponse <CreatureBehaviorSet> LoadAll(string baseDir)
    {
        var ret     = new XmlLoadResponse <CreatureBehaviorSet>();
        var imports = new Dictionary <string, CreatureBehaviorSet>();

        foreach (var xml in GetXmlFiles(Path.Join(baseDir, DataDirectory)))
        {
            if (xml.Contains(".ignore"))
            {
                continue;
            }

            try
            {
                CreatureBehaviorSet set = LoadFromFile(xml);
                if (!string.IsNullOrEmpty(set.Import))
                {
                    imports.Add(xml, set);
                }
                else
                {
                    ret.Results.Add(set);
                }
            }
            catch (Exception e)
            {
                ret.Errors.Add(xml, e.ToString());
            }
        }

        // Now process imports. This could be made nicer
        foreach (var importset in imports)
        {
            var importedSet = ret.Results.FirstOrDefault(s => s.Name.ToLower() == importset.Value.Import.ToLower());
            if (importedSet == null)
            {
                ret.Errors.Add(importset.Key, $"Referenced import set {importset.Value.Import} not found");
                continue;
            }
            var newSet   = importedSet.Clone <CreatureBehaviorSet>();
            var resolved = importset.Value & newSet;
            resolved.Name = importset.Value.Name;
            ret.Results.Add(resolved);
        }
        return(ret);
    }
コード例 #2
0
ファイル: SpawnGroup.cs プロジェクト: hybrasyl/server
    public static XmlLoadResponse <SpawnGroup> LoadAll(string baseDir)
    {
        var ret = new XmlLoadResponse <SpawnGroup>();

        foreach (var xml in GetXmlFiles(Path.Join(baseDir, Directory)))
        {
            try
            {
                SpawnGroup group = LoadFromFile(xml);
                ret.Results.Add(group);
            }
            catch (Exception e)
            {
                ret.Errors.Add(xml, e.ToString());
            }
        }
        return(ret);
    }
コード例 #3
0
    public static XmlLoadResponse <Creature> LoadAll(string baseDir)
    {
        var ret = new XmlLoadResponse <Creature>();

        foreach (var xml in GetXmlFiles(Path.Join(baseDir, Directory)))
        {
            try
            {
                Creature c = LoadFromFile(xml);
                // Resolve subtypes
                foreach (var subtype in c.Types)
                {
                    var creatureVariant = c & subtype;
                    // xml is really annoying sometimes
                    if (string.IsNullOrEmpty(creatureVariant.Name))
                    {
                        ret.Errors.Add(xml, "subtype found with no name");
                    }
                    else
                    {
                        ret.Results.Add(c);
                    }
                }
                if (!string.IsNullOrEmpty(c.Name))
                {
                    ret.Results.Add(c);
                }
                else
                {
                    ret.Errors.Add(xml, "Creature has no name");
                }
            }
            catch (Exception e)
            {
                ret.Errors.Add(xml, e.ToString());
            }
        }
        return(ret);
    }