예제 #1
0
        public static List <String> LoadConfigurationLinesFromMultipleSources(String AssetPath)
        {
            var result = new List <String>();

            foreach (var resolvedAssetPath in AssetManager.EnumerateMatchingPaths(AssetPath))
            {
                result.AddRange(global::System.IO.File.ReadAllLines(resolvedAssetPath));
            }

            return(result);
        }
예제 #2
0
        /// <summary>
        /// Load a json list from all enabled mods, combining entries into one list. JSON must contain a List<T> as the top level element.</T>
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="AssetPath"></param>
        /// <param name="Context"></param>
        /// <param name="Name">Given a T, this func must return a unique name - this is used to compare items to see if they should be overriden by the mod.</param>
        /// <returns></returns>
        public static List <T> LoadJsonListFromMultipleSources <T>(String AssetPath, Object Context, Func <T, String> Name)
        {
            var result = new Dictionary <String, T>();

            foreach (var resolvedAssetPath in AssetManager.EnumerateMatchingPaths(AssetPath))
            {
                var list = LoadJsonFromAbsolutePath <List <T> >(resolvedAssetPath, Context);
                foreach (var item in list)
                {
                    var name = Name(item);
                    if (!result.ContainsKey(name))
                    {
                        result.Add(name, item);
                    }
                }
            }

            return(new List <T>(result.Values));
        }