Exemple #1
0
        public void LoadData(string dataDirectory, bool defaultToCompiled = true)
        {
            _dataDirectory = dataDirectory;

            LuaContext?.Dispose();
            LuaContext = new Lua();
            var dataSource = new JObject();

            var files        = Directory.GetFiles(dataDirectory, "*.*", SearchOption.AllDirectories);
            var jsonFinished = false;

            if (defaultToCompiled)
            {
                var compiledFile = files.FirstOrDefault(x => x.EndsWith("compiled.json"));

                if (compiledFile != null)
                {
                    var source = File.ReadAllText(compiledFile);
                    dataSource.Merge(JObject.Parse(source));
                    jsonFinished = true;
                }
            }

            foreach (string file in files)
            {
                var ext = Path.GetExtension(file);
                if (ext == ".lua")
                {
                    LuaContext.DoFile(file);
                }
                else if (!jsonFinished && ext == ".json")
                {
                    var text = File.ReadAllText(file);
                    dataSource.Merge(JObject.Parse(text));
                }
            }

            GameData = dataSource.ToObject <GameDataObject>();

            foreach (var skillTree in GameData.TalentTrees)
            {
                skillTree.Hellforge = this;
                foreach (var node in skillTree.Nodes)
                {
                    node.Graph = skillTree;
                }
            }

            foreach (var affix in GameData.Affixes)
            {
                if (!string.IsNullOrEmpty(affix.Inherits))
                {
                    var parent = GameData.Affixes.First(x => x.Name == affix.Inherits);
                    if (parent != null)
                    {
                        affix.Inherit(parent);
                    }
                }
            }
        }