private void CompileTweakFiles(Cp77Project cp77Proj) { try { Directory.Delete(cp77Proj.PackedTweakDirectory, true); } catch (Exception e) { _loggerService.Error(e); } var tweakFiles = Directory.GetFiles(cp77Proj.TweakDirectory, "*.tweak", SearchOption.AllDirectories); foreach (var f in tweakFiles) { var text = File.ReadAllText(f); var folder = Path.GetDirectoryName(Path.GetRelativePath(cp77Proj.TweakDirectory, f)); var outDirectory = Path.Combine(cp77Proj.PackedTweakDirectory, folder); if (!Directory.Exists(outDirectory)) { Directory.CreateDirectory(outDirectory); } var filename = Path.GetFileNameWithoutExtension(f) + ".bin"; var outPath = Path.Combine(outDirectory, filename); try { if (!Serialization.Deserialize(text, out var dict)) { continue; } var db = new TweakDB(); //flats foreach (var(key, value) in dict.Flats) { db.Add(key, value); } //groups foreach (var(key, value) in dict.Groups) { db.Add(key, value); } db.Save(outPath); } catch (Exception e) { _loggerService.Error(e); continue; } } }
/// <summary> /// Converts .tweak files in paths provided into TweakDB .bin files. /// </summary> /// <param name="path">Folder with .tweak files (defaults to current directory)</param> /// <param name="outpath">Folder to export .bin files (defaults to current directory)</param> /// <param name="keep">Keep existing .bin folder, if specified</param> public void TweakTask(string path, string outpath, bool keep) { if (string.IsNullOrEmpty(path)) { path = @".\"; } try { if (string.IsNullOrEmpty(outpath)) { outpath = @".\"; } else { if (keep) { if (!Directory.Exists(outpath)) { Directory.CreateDirectory(outpath); } } else { if (Directory.Exists(outpath)) { Directory.Delete(outpath, true); } Directory.CreateDirectory(outpath); } } } catch (Exception e) { _loggerService.Error(e); return; } var tweakFiles = Directory.GetFiles(path, "*.tweak", SearchOption.AllDirectories); foreach (var f in tweakFiles) { var text = File.ReadAllText(f); var filename = Path.GetFileNameWithoutExtension(f) + ".bin"; var outFile = Path.Combine(outpath, filename); try { if (!Serialization.Deserialize(text, out var dict)) { continue; } var db = new TweakDB(); //flats foreach (var(key, value) in dict.Flats) { db.Add(key, value); } //groups foreach (var(key, value) in dict.Groups) { db.Add(key, value); } db.Save(outFile); _loggerService.Success($"Converted {f} to {outFile}."); } catch (Exception e) { _loggerService.Error(e); continue; } } }