private void ChangeState(GameLauncherState state) { if (state == GameLauncherState.Idle && _closeOnIdle) { Close(); return; } Icon icon; bool settingsEnabled; string startText; Image startImage; switch (state) { case GameLauncherState.Idle: icon = Properties.Resources.hl2_blue; settingsEnabled = true; startText = "Start recording"; startImage = Properties.Resources.film_star; break; case GameLauncherState.Recording: icon = Properties.Resources.hl2_red; settingsEnabled = false; startText = "Stop recording"; startImage = Properties.Resources.film_stop; break; case GameLauncherState.GameStarted: icon = Properties.Resources.hl2_blue; settingsEnabled = true; startText = "Resume recording"; startImage = Properties.Resources.film_start; break; case GameLauncherState.GameStartedAndRecording: icon = Properties.Resources.hl2_red; settingsEnabled = false; startText = "Pause recording"; startImage = Properties.Resources.film_stop; break; default: throw new ArgumentOutOfRangeException(nameof(state), state, null); } Icon = icon; _notifyIcon.Icon = icon; _gameSettingsButton.Enabled = settingsEnabled; _gameSettingsToolStripMenuItem.Enabled = settingsEnabled; _recordingSettingsButton.Enabled = settingsEnabled; _recordingSettingsToolStripMenuItem.Enabled = settingsEnabled; _startButton.Text = startText; _startToolStripMenuItem.Text = startText; _startButton.Image = startImage; _startToolStripMenuItem.Image = startImage; }
public GameLauncher(ApplicationSettings settings, ISynchronizeInvoke synchronizingObject) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (synchronizingObject == null) { throw new ArgumentNullException(nameof(synchronizingObject)); } _settings = settings; _recorder = new TgaSequenceRecorder { SynchronizingObject = synchronizingObject }; _process = new Process { EnableRaisingEvents = true, SynchronizingObject = synchronizingObject }; _process.Exited += ProcessExited; _lastActiveCustom = null; _state = GameLauncherState.Idle; }