示例#1
0
        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);
        }
示例#2
0
        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);
        }