public void RestoreFromBackups() { CloseDatafiles(); foreach (var texturesFilePath in DataFiles.Keys) { string tableFilePath = Path.Combine(Path.GetDirectoryName(texturesFilePath), Path.GetFileName(texturesFilePath).Replace("textures", "texture_table")); string backupTablePath = Path.Combine(Settings.FileName(Path.ChangeExtension(Path.GetFileName(tableFilePath), ".bak"))); if (File.Exists(backupTablePath)) { File.Copy(backupTablePath, tableFilePath, true); long size = Settings.GetFileSize(texturesFilePath); if (size != 0) { using FileStream file = File.OpenWrite(texturesFilePath); file.SetLength(size); var list = Lists[texturesFilePath]; var originalList = new TextureList(tableFilePath, texturesFilePath); foreach (var info in list) { if (info.offset >= size) { var previous = originalList.First(n => n.name == info.name); info.offset = previous.offset; info.length = previous.length; OnTextureChangeDiscarded?.Invoke(info); } } } } } nonOriginalCount = 0; }
public void DiscardChange(TextureInfo info) { if (ImageChanges.ContainsKey(info.name)) { ImageChanges.Remove(info.name); info.changed = false; OnTextureChangeDiscarded?.Invoke(info); } }
public void DiscardChanges() { foreach (var list in Lists.Values) { foreach (var item in list) { item.changed = false; OnTextureChangeDiscarded?.Invoke(item); } } ImageChanges.Clear(); }