public static async ValueTask <bool> Initialize() { var enLocalResPath = Constants.EnLocalizationPath(Globals.Settings.ResourceDirectory); var ResEn = new GameResource(); await ResEn.Load(enLocalResPath); var WorkFileKoPath = Path.Combine(Globals.Settings.WorkingDirectory, Constants.JsonKoName); await Task.Run(() => { var jsonEnFilePath = Path.Combine(Globals.Settings.WorkingDirectory, Constants.JsonEnName); if (!File.Exists(jsonEnFilePath)) { File.WriteAllText(jsonEnFilePath, JsonConvert.SerializeObject(ResEn.TextMap, Formatting.Indented)); } if (!File.Exists(WorkFileKoPath)) { var Translated = ResEn.TextMap.ToDictionary(x => x.Key, x => { if (string.Compare(x.Key, "Manifest") == 0) { return(new(x.Value)); } else { return(x.Value.ToDictionary(x => x.Key, x => x.Value.EndsWith(".png") ? x.Value : "")); } }); File.WriteAllTextAsync(WorkFileKoPath, JsonConvert.SerializeObject(Translated, Formatting.Indented)); } var htmlEnFilePath = Path.Combine(Globals.Settings.WorkingDirectory, Constants.HtmlEnName); if (!File.Exists(htmlEnFilePath)) { File.WriteAllText(htmlEnFilePath, HtmlSerializer.Serialize(ResEn.TextMap)); } var txtZipEnFilePath = Path.Combine(Globals.Settings.WorkingDirectory, Constants.TxtZipEnName); if (!File.Exists(txtZipEnFilePath)) { File.WriteAllBytes(txtZipEnFilePath, TxtZipSerialier.Serialize(ResEn.TextMap)); } }); await Globals.UpdateAppSettings(); return(true); }
public static async ValueTask <bool> PatchTextHtml() { var enLocalResPath = Constants.EnLocalizationPath(Globals.Settings.ResourceDirectory); var WorkFileKoPath = Path.Combine(Globals.Settings.WorkingDirectory, Constants.HtmlKoName); if (!File.Exists(WorkFileKoPath)) { throw new Exception($"Not Found Translated File.({Constants.HtmlKoName})"); } var GRes = new GameResource(); await GRes.Load(enLocalResPath); var translateMap = HtmlSerializer.Deserialize(File.ReadAllText(WorkFileKoPath)); foreach (var kvFile in translateMap) { var fileName = kvFile.Key; var resource = GRes.Resources.Where(r => Path.GetFileNameWithoutExtension(r.FilePath) == fileName).FirstOrDefault(); if (resource == null) { continue; } foreach (var kvLine in kvFile.Value) { resource.UpdateText(kvLine.Key, kvLine.Value); } } var krResDirPath = Path.Combine(Globals.Settings.WorkingDirectory, "PatchedText"); if (!Directory.Exists(krResDirPath)) { Directory.CreateDirectory(krResDirPath); } foreach (var pair in GRes.Resources) { await pair.Export(Path.Combine(krResDirPath, Path.GetFileName(pair.FilePath))); } await PatchImage(GRes); await Globals.UpdateAppSettings(); return(true); }