using System; using System.Collections.Generic; using System.IO; using System.Text; namespace MetaAssets { public static class ContentLoader { public static T? loadFile(string dataDir, string fileName) where T : ContentTableBase { try { string exactPath = Path.GetFullPath(dataDir); string data = System.IO.File.ReadAllText(Path.Combine(dataDir, fileName)); return Newtonsoft.Json.JsonConvert.DeserializeObject(data); } catch (Exception ex) { throw new Exception($"content load fail. dataDir: {dataDir}, fileName: {fileName}", ex); } } public static T? loadMultipleFiles(string dataDir, string filePattern) where T : ContentTableBase { var files = Directory.GetFiles(dataDir, filePattern, SearchOption.TopDirectoryOnly); List tables = new List(); foreach (string file in files) { string data = System.IO.File.ReadAllText(file); T? json = Newtonsoft.Json.JsonConvert.DeserializeObject(data); if(json != null) tables.Add(json); } T? oneTable = null; foreach (var table in tables) { if (oneTable == null) oneTable = table; else oneTable.merge(table); } return oneTable; } } }