using System; using System.IO; namespace ResBuilder { class UIResPacker { public readonly string inputPath; public readonly string outputFile; public UIResPacker(string input , string output) { this.inputPath = input; this.outputFile = Path.Combine(output , "ur.bin"); } string GetWriteFileName(string fp) { if (fp.StartsWith(inputPath)) { fp = fp.Substring(fp.IndexOf("res")); fp = fp.Replace('\\', '/'); } return fp; } public void Pack() { var files = Directory.GetFiles(inputPath, "*.*", SearchOption.AllDirectories); files = Array.FindAll(files, (str) => str.EndsWith(".bin") || str.EndsWith(".png") || str.EndsWith(".jpg")); using (var fs = new FileStream(outputFile, FileMode.Create)) { var bw = new BinaryWriter(fs); bw.Write(files.Length); foreach (var f in files) { var bytes = File.ReadAllBytes(f); bw.Write(GetWriteFileName(f)); bw.Write(bytes.Length); bw.Write(bytes); } } } } }