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(); } }
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(); }