public bool Apply <TKey, TValue>(Dictionary <TKey, TValue> target, IEnumerable <ManagedPatch> patches, string targetName) { if (patches.Count() < 1) { return(false); } string contentPackName; foreach (var patch in patches) { contentPackName = patch.Owner.Pack.Manifest.Name; if (patch.Change.Action == "Replace") { if (target.Count > 0) { this.Monitor.Log( $"Content pack `{contentPackName}` patch `{patch.Change.LogName}` replaces all contents for `{targetName}`.", this.paranoid ? LogLevel.Alert : LogLevel.Trace); } target.Clear(); // Load replaces all content } var isLocalized = !string.IsNullOrEmpty(patch.Change.Locale); var patchData = patch.LoadData <TKey, TValue>(); AssetPatchHelper.ApplyPatch(target, patchData); this.Monitor.Log($"Content pack `{contentPackName}` applied{(isLocalized ? $" `{patch.Change.Locale}` translation" : "")} patch `{patch.Change.LogName}` ({patch.Change.Action} type) for `{targetName}`"); } return(true); }
public bool Apply <TKey, TValue>(Dictionary <TKey, TValue> target, string path) { var patches = new List <ManagedPatch>(); var contentPackName = this.Managed.Pack.Manifest.Name; patches.AddRange(this.GetPatchesForAsset(path, "Replace")); patches.AddRange(this.GetPatchesForAsset(path, "Patch")); patches.AddRange(this.GetTranslationPatches(path, this.Managed.Pack.Translation.Locale?.ToLower())); if (patches.Count() < 1) { return(false); } foreach (var patch in patches) { if (patch.Change.Action == "Replace") { if (target.Count > 0) { this.Monitor.Log( $"Content pack `{contentPackName}` patch `{patch.Change.LogName}` replaces all contents for `{path}`.", this.paranoid ? LogLevel.Alert : LogLevel.Trace); } target.Clear(); // Load replaces all content } var isLocalized = !string.IsNullOrEmpty(patch.Change.Locale); var patchData = patch.LoadData <TKey, TValue>(); AssetPatchHelper.ApplyPatch(target, patchData); this.Monitor.Log($"Content pack `{contentPackName}` applied{(isLocalized ? $" `{patch.Change.Locale}` translation" : "")} patch `{patch.Change.LogName}` for `{path}`"); } return(true); }