public static World LoadWorld(string filename) { var w = new World(); uint curVersion = 0; try { lock (_fileLock) { using (var b = new BinaryReader(File.OpenRead(filename))) { w.Version = b.ReadUInt32(); if (w.Version < World.CompatibleVersion) { string message = $"You are loading a legacy world version: {w.Version}.\r\n" + $"Editing legacy files is a BETA feature.\r\n" + "Please make a backup as you may experience world file corrpution.\r\n" + "Do you wish to continue?"; if (MessageBox.Show(message, "Convert File?", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No) { return(null); } } curVersion = w.Version; if (w.Version > 87) { LoadV2(b, filename, w); } else { LoadV1(b, filename, w); } w.UpgradeLegacyTileEntities(); } w.LastSave = File.GetLastWriteTimeUtc(filename); } } catch (Exception err) { ErrorLogging.LogException(err); string msg = "There was an error reading the world file.\r\n" + "This is usually caused by a corrupt save file or a world version newer than supported.\r\n\r\n" + $"TEdit v{TEdit.App.Version}\r\n" + $"TEdit Max World: {CompatibleVersion}\r\n" + $"Current World: {curVersion}\r\n\r\n" + "Do you wish to force it to load anyway?\r\n\r\n" + "WARNING: This may have unexpected results including corrupt world files and program crashes.\r\n\r\n" + $"The error is :\r\n{err.Message}\r\n\r\n{err}\r\n"; if (MessageBox.Show(msg, "World File Error", MessageBoxButton.YesNo, MessageBoxImage.Error) != MessageBoxResult.Yes) { return(null); } } return(w); }
public static World LoadWorld(string filename) { var w = new World(); uint curVersion = 0; try { lock (_fileLock) { using (var b = new BinaryReader(File.OpenRead(filename))) { w.Version = b.ReadUInt32(); curVersion = w.Version; if (w.Version > 87) { LoadV2(b, filename, w); } else { LoadV1(b, filename, w); } w.UpgradeLegacyTileEntities(); } w.LastSave = File.GetLastWriteTimeUtc(filename); } } catch (Exception err) { string msg = "There was an error reading the world file. This is usually caused by a corrupt save file or a world version newer than supported.\r\n\r\n" + $"TEdit v{TEdit.App.Version.FileVersion}\r\n" + $"TEdit Max World: {CompatibleVersion} Current World: {curVersion}\r\n\r\n" + "Do you wish to force it to load anyway?\r\n\r\n" + "WARNING: This may have unexpected results including corrupt world files and program crashes.\r\n\r\n" + $"The error is :\r\n{err.Message}\r\n\r\n{err}\r\n"; if (MessageBox.Show(msg, "World File Error", MessageBoxButton.YesNo, MessageBoxImage.Error) != MessageBoxResult.Yes) { return(null); } } return(w); }