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); }
/// <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)); }