Exemple #1
0
        public void BackupTrack(bool Crash = true)
        {
            try
            {
                if (_track.Lines.Count == 0)
                {
                    return;
                }
                game.Canvas.Loading = true;
                using (var trk = CreateTrackReader())
                {
                    if (Crash)
                    {
                        var backupName = ("Crash Backup " + DateTime.Now.Month + "." + DateTime.Now.Day + "." + +DateTime.Now.Year + "_" + DateTime.Now.Hour + "." + DateTime.Now.Minute);
                        switch (Settings.DefaultCrashBackupFormat)
                        {
                        case ".trk":
                            TrackIO.SaveTrackToFile(_track, backupName);
                            break;

                        case ".json":
                            TrackIO.SaveTrackToJsonFile(_track, backupName);
                            break;

                        case ".sol":
                            TrackIO.SaveToSOL(_track, backupName);
                            break;

                        default:
                            TrackIO.SaveTrackToFile(_track, backupName);
                            break;
                        }
                    }
                    else
                    {
                        if (TrackChanges > Settings.autosaveChanges)
                        {
                            TrackIO.CreateAutosave(_track);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine("Autosave exception: " + e);
            }
            finally
            {
                game.Canvas.Loading = false;
                Invalidate();
            }
        }
Exemple #2
0
        private void Save()
        {
            var filetype = (string)_savebutton.UserData;
            var filename = _namebox.Text;
            var folder   = _savelist.SelectedItem.Text;

            if (folder == CreateNewTrack)
            {
                folder = filename;
            }
            if (
                !TrackIO.CheckValidFilename(
                    folder + filename) ||
                filename == Utils.Constants.DefaultTrackName ||
                (folder.Length == 0))
            {
                _errorbox.Text = "Error\n* Save name is invalid";
                return;
            }
            using (var trk = _editor.CreateTrackWriter())
            {
                var l = trk.GetOldestLine();
                if (l == null)
                {
                    _errorbox.Text = "Track must have at least one line";
                    return;
                }
                trk.Name = folder;
                try
                {
                    string filepath;
                    switch (filetype)
                    {
                    case ".trk":
                    {
                        filepath = TrackIO.SaveTrackToFile(trk.Track, filename);
                        Settings.LastSelectedTrack = filepath;
                        Settings.Save();
                    }
                    break;

                    case ".sol":
                    {
                        if (!CheckSol(trk))
                        {
                            return;
                        }
                        //purposely do not set this to lastselectedtrack
                        //currently it's deemed non-performant and slow
                        TrackIO.SaveToSOL(trk.Track, filename);
                    }
                    break;

                    case ".json":
                    {
                        filepath = TrackIO.SaveTrackToJsonFile(trk.Track, filename);
                        Settings.LastSelectedTrack = filepath;
                        Settings.Save();
                    }
                    break;

                    default:
                        throw new InvalidOperationException("Unknown save filetype");
                    }
                    _editor.ResetTrackChangeCounter();
                }
                catch (Exception e)
                {
                    _errorbox.Text = "Error\n* An unknown error occured...\n" + e.Message;
                    return;
                }
            }
            Close();
        }