private static void MainForm() { using (MainForm MainForm = new MainForm()) { while (MainForm.ShowDialog() == DialogResult.OK) { List <string> parameters = new List <string>(); switch (MainForm.SelectedAction) { case MainForm.UserAction.SingleplayerNewGame: parameters.Add("-start"); break; case MainForm.UserAction.SingleplayerResumeSave: parameters.Add("-resume"); break; case MainForm.UserAction.SingleplayerReplaySave: parameters.Add("-replay"); break; case MainForm.UserAction.SingleplayerReplaySaveFromSave: parameters.Add("-replayfromsave"); break; case MainForm.UserAction.MultiplayerClient: parameters.Add("-multiplayerclient"); break; case MainForm.UserAction.MultiplayerServer: parameters.Add("-multiplayerserver"); break; case MainForm.UserAction.SinglePlayerTimetableGame: parameters.Add("-start"); break; case MainForm.UserAction.SinglePlayerResumeTimetableGame: parameters.Add("-resume"); break; case MainForm.UserAction.MultiplayerClientResumeSave: parameters.Add("-multiplayerclient"); break; case MainForm.UserAction.MultiplayerServerResumeSave: parameters.Add("-multiplayerserver"); break; } switch (MainForm.SelectedAction) { case MainForm.UserAction.SingleplayerNewGame: case MainForm.UserAction.MultiplayerClient: case MainForm.UserAction.MultiplayerServer: if (MainForm.SelectedActivity is DefaultExploreActivity) { DefaultExploreActivity exploreActivity = MainForm.SelectedActivity as DefaultExploreActivity; parameters.Add("-explorer"); parameters.Add($"\"{exploreActivity.Path.FilePath}\""); parameters.Add($"\"{exploreActivity.Consist.FilePath}\""); parameters.Add($"{exploreActivity.StartTime}"); parameters.Add($"{exploreActivity.Season}"); parameters.Add($"{exploreActivity.Weather}"); } else if (MainForm.SelectedActivity is ExploreThroughActivity) { ExploreThroughActivity exploreActivity = MainForm.SelectedActivity as ExploreThroughActivity; parameters.Add("-exploreactivity"); parameters.Add($"\"{exploreActivity.Path.FilePath}\""); parameters.Add($"\"{exploreActivity.Consist.FilePath}\""); parameters.Add($"{exploreActivity.StartTime}"); parameters.Add($"{exploreActivity.Season}"); parameters.Add($"{exploreActivity.Weather}"); } else { parameters.Add("-activity"); parameters.Add($"\"{MainForm.SelectedActivity.FilePath}\""); } break; case MainForm.UserAction.SingleplayerResumeSave: case MainForm.UserAction.SingleplayerReplaySave: case MainForm.UserAction.SingleplayerReplaySaveFromSave: case MainForm.UserAction.MultiplayerClientResumeSave: case MainForm.UserAction.MultiplayerServerResumeSave: parameters.Add($"\"{MainForm.SelectedSaveFile}\""); break; case MainForm.UserAction.SinglePlayerTimetableGame: parameters.Add("-timetable"); parameters.Add($"\"{MainForm.SelectedTimetableSet.FileName}\""); parameters.Add($"\"{MainForm.SelectedTimetable}:{MainForm.SelectedTimetableTrain}\""); parameters.Add($"{MainForm.SelectedTimetableSet.Day}"); parameters.Add($"{MainForm.SelectedTimetableSet.Season}"); parameters.Add($"{ MainForm.SelectedTimetableSet.Weather}"); if (!string.IsNullOrEmpty(MainForm.SelectedTimetableSet.WeatherFile)) { parameters.Add($"\"{MainForm.SelectedTimetableSet.WeatherFile}\""); } break; case MainForm.UserAction.SinglePlayerResumeTimetableGame: parameters.Add($"\"{MainForm.SelectedSaveFile}\""); break; } ProcessStartInfo processStartInfo = new ProcessStartInfo { FileName = RuntimeInfo.ActivityRunnerExecutable, Arguments = string.Join(" ", parameters), WindowStyle = ProcessWindowStyle.Normal, WorkingDirectory = Application.StartupPath }; Process process = Process.Start(processStartInfo); process.WaitForExit(); } } }
private static void MainForm() { using (MainForm MainForm = new MainForm()) { while (MainForm.ShowDialog() == DialogResult.OK) { List <string> parameters = new List <string>(); switch (MainForm.SelectedAction) { case MainForm.UserAction.SingleplayerNewGame: parameters.Add("-start"); break; case MainForm.UserAction.SingleplayerResumeSave: parameters.Add("-resume"); break; case MainForm.UserAction.SingleplayerReplaySave: parameters.Add("-replay"); break; case MainForm.UserAction.SingleplayerReplaySaveFromSave: parameters.Add("-replayfromsave"); break; case MainForm.UserAction.MultiplayerClient: parameters.Add("-multiplayerclient"); break; case MainForm.UserAction.SinglePlayerTimetableGame: parameters.Add("-start"); break; case MainForm.UserAction.SinglePlayerResumeTimetableGame: parameters.Add("-resume"); break; case MainForm.UserAction.MultiplayerClientResumeSave: parameters.Add("-multiplayerclient"); break; } switch (MainForm.SelectedAction) { case MainForm.UserAction.SingleplayerNewGame: case MainForm.UserAction.MultiplayerClient: if (MainForm.SelectedActivity is DefaultExploreActivity) { DefaultExploreActivity exploreActivity = MainForm.SelectedActivity as DefaultExploreActivity; parameters.Add("-explorer"); parameters.Add($"\"{exploreActivity.Path.FilePath}\""); parameters.Add($"\"{exploreActivity.Consist.FilePath}\""); parameters.Add($"{exploreActivity.StartTime}"); parameters.Add($"{exploreActivity.Season}"); parameters.Add($"{exploreActivity.Weather}"); } else if (MainForm.SelectedActivity is ExploreThroughActivity) { ExploreThroughActivity exploreActivity = MainForm.SelectedActivity as ExploreThroughActivity; parameters.Add("-exploreactivity"); parameters.Add($"\"{exploreActivity.Path.FilePath}\""); parameters.Add($"\"{exploreActivity.Consist.FilePath}\""); parameters.Add($"{exploreActivity.StartTime}"); parameters.Add($"{exploreActivity.Season}"); parameters.Add($"{exploreActivity.Weather}"); } else { parameters.Add("-activity"); parameters.Add($"\"{MainForm.SelectedActivity.FilePath}\""); } break; case MainForm.UserAction.SingleplayerResumeSave: case MainForm.UserAction.SingleplayerReplaySave: case MainForm.UserAction.SingleplayerReplaySaveFromSave: case MainForm.UserAction.MultiplayerClientResumeSave: parameters.Add($"\"{MainForm.SelectedSaveFile}\""); break; case MainForm.UserAction.SinglePlayerTimetableGame: parameters.Add("-timetable"); parameters.Add($"\"{MainForm.SelectedTimetableSet.FileName}\""); parameters.Add($"\"{MainForm.SelectedTimetable}:{MainForm.SelectedTimetableTrain}\""); parameters.Add($"{MainForm.SelectedTimetableSet.Day}"); parameters.Add($"{MainForm.SelectedTimetableSet.Season}"); parameters.Add($"{ MainForm.SelectedTimetableSet.Weather}"); if (!string.IsNullOrEmpty(MainForm.SelectedTimetableSet.WeatherFile)) { parameters.Add($"\"{MainForm.SelectedTimetableSet.WeatherFile}\""); } break; case MainForm.UserAction.SinglePlayerResumeTimetableGame: parameters.Add($"\"{MainForm.SelectedSaveFile}\""); break; } string joinedParameters = string.Join(" ", parameters); if ((Control.ModifierKeys & Keys.Alt) == Keys.Alt) { Clipboard.SetText(joinedParameters); MessageBox.Show( "Activity arguments have been copied to the clipboard:" + Environment.NewLine + Environment.NewLine + $"{joinedParameters}" + Environment.NewLine + Environment.NewLine + "This is a debugging aid. If you wanted to start the simulator instead, select Start without holding down the Alt key.", "Command Line Arguments"); } else { ProcessStartInfo processStartInfo = new ProcessStartInfo { FileName = RuntimeInfo.ActivityRunnerExecutable, Arguments = string.Join(" ", parameters), WindowStyle = ProcessWindowStyle.Normal, WorkingDirectory = Application.StartupPath }; Process process = Process.Start(processStartInfo); process.WaitForExit(); } } } }