Example #1
0
        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();
                }
            }
        }
Example #2
0
        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();
                    }
                }
            }
        }