private bool PatchSingleLayout(LayoutFilePatch p) { if (p == null || p.FileName == null) return true; if (!sarc.Files.ContainsKey(p.FileName)) return false; var target = new BflytFile(sarc.Files[p.FileName]); target.ApplyMaterialsPatch(p.Materials); //Do not check result as it fails only if the file doesn't have any material var res = target.ApplyLayoutPatch(p.Patches); if (!res) return res; res = target.AddGroupNames(p.AddGroups); if (!res) return res; if (p.PullFrontPanes != null) foreach (var n in p.PullFrontPanes) target.PanePullToFront(n); if (p.PushBackPanes != null) foreach (var n in p.PushBackPanes) target.PanePushBack(n); sarc.Files[p.FileName] = target.SaveFile(); return true; }