public override void Play(List <Emulator> emulators) { Dispose(); stopWatch = Stopwatch.StartNew(); procMon = new ProcessMonitor(); procMon.TreeDestroyed += Monitor_TreeDestroyed; var app = BattleNetLibrary.GetAppDefinition(Game.ProviderId); if (Game.PlayTask.Type == GameTaskType.URL && Game.PlayTask.Path.StartsWith("battlenet", StringComparison.InvariantCultureIgnoreCase)) { GameHandler.ActivateTask(Game.PlayTask, Game, emulators); procMon.TreeStarted += ProcMon_TreeStarted; procMon.WatchDirectoryProcesses(Game.InstallDirectory, false); } else if (app.Type == BattleNetLibrary.BNetAppType.Classic && Game.PlayTask.Path.Contains(app.ClassicExecutable)) { var proc = GameHandler.ActivateTask(Game.PlayTask, Game, emulators); procMon.WatchDirectoryProcesses(Game.InstallDirectory, true); OnStarted(this, new GameControllerEventArgs(this, 0)); } else { base.Play(emulators); } }
public virtual void Play(List <Emulator> emulators) { if (Game.PlayTask == null) { throw new Exception("Cannot start game without play task"); } var proc = GameHandler.ActivateTask(Game.PlayTask, Game, emulators); OnStarted(this, new GameControllerEventArgs(this, 0)); if (Game.PlayTask.Type != GameTaskType.URL) { stopWatch = Stopwatch.StartNew(); procMon = new ProcessMonitor(); procMon.TreeDestroyed += Monitor_TreeDestroyed; // Handle Windows store apps if (Game.PlayTask.Path == "explorer.exe" && Game.PlayTask.Arguments.StartsWith("shell:") && !string.IsNullOrEmpty(Game.InstallDirectory)) { procMon.WatchDirectoryProcesses(Game.InstallDirectory, false); } else { procMon.WatchProcessTree(proc); } } else { OnStopped(this, new GameControllerEventArgs(this, 0)); } }
public override void Play(List <Emulator> emulators) { ReleaseResources(); stopWatch = Stopwatch.StartNew(); procMon = new ProcessMonitor(); procMon.TreeDestroyed += Monitor_TreeDestroyed; var app = BattleNetLibrary.GetAppDefinition(Game.ProviderId); if (Game.PlayTask.Type == GameTaskType.URL && Game.PlayTask.Path.StartsWith("battlenet", StringComparison.InvariantCultureIgnoreCase)) { OnStarting(this, new GameControllerEventArgs(this, 0)); var task = new GameTask() { Path = BattleNetSettings.ClientExecPath, Arguments = string.Format("--exec=\"launch {0}\"", Game.ProviderId) }; GameHandler.ActivateTask(task, Game, emulators); procMon.TreeStarted += ProcMon_TreeStarted; procMon.WatchDirectoryProcesses(Game.InstallDirectory, false); } else if (app.Type == BattleNetLibrary.BNetAppType.Classic && Game.PlayTask.Path.Contains(app.ClassicExecutable)) { OnStarting(this, new GameControllerEventArgs(this, 0)); var proc = GameHandler.ActivateTask(Game.PlayTask, Game, emulators); procMon.WatchDirectoryProcesses(Game.InstallDirectory, true); OnStarted(this, new GameControllerEventArgs(this, 0)); } else { base.Play(emulators); } }
public override void Play(List <Emulator> emulators) { Dispose(); stopWatch = Stopwatch.StartNew(); procMon = new ProcessMonitor(); procMon.TreeDestroyed += ProcMon_TreeDestroyed; procMon.TreeStarted += ProcMon_TreeStarted; var proc = GameHandler.ActivateTask(Game.PlayTask, Game, emulators); procMon.WatchDirectoryProcesses(Game.InstallDirectory, false); }
public override void Play(List <Emulator> emulators) { ReleaseResources(); OnStarting(this, new GameControllerEventArgs(this, 0)); stopWatch = Stopwatch.StartNew(); procMon = new ProcessMonitor(); procMon.TreeDestroyed += ProcMon_TreeDestroyed; procMon.TreeStarted += ProcMon_TreeStarted; var proc = GameHandler.ActivateTask(Game.PlayTask, Game, emulators); procMon.WatchDirectoryProcesses(Game.InstallDirectory, false); }
public override void Play(List <Emulator> emulators) { Dispose(); if (Game.PlayTask.Type == GameTaskType.URL && Game.PlayTask.Path.StartsWith("steam", StringComparison.InvariantCultureIgnoreCase)) { GameHandler.ActivateTask(Game.PlayTask, Game); StartRunningWatcher(); } else { base.Play(emulators); } }
public void ActivateAction(IGame game, GameTask action) { try { GameHandler.ActivateTask(action, game as Game, database.EmulatorsCollection.FindAll().ToList()); } catch (Exception exc) when(!PlayniteEnvironment.ThrowAllErrors) { PlayniteMessageBox.Show( string.Format(resources.FindString("GameStartActionError"), exc.Message), resources.FindString("GameError"), MessageBoxButton.OK, MessageBoxImage.Error); } }
public override void Play(List <Emulator> emulators) { ReleaseResources(); if (Game.PlayTask.Type == GameTaskType.URL && Game.PlayTask.Path.StartsWith("steam", StringComparison.InvariantCultureIgnoreCase)) { OnStarting(this, new GameControllerEventArgs(this, 0)); GameHandler.ActivateTask(Game.PlayTask, Game); StartRunningWatcher(); } else { base.Play(emulators); } }
public void PlayGame(List <Emulator> emulators) { if (PlayTask == null) { return; } LastActivity = DateTime.Now; if (Provider == Provider.GOG && Settings.Instance.GOGSettings.RunViaGalaxy) { var args = string.Format(@"/gameId={0} /command=runGame /path=""{1}""", ProviderId, InstallDirectory); Process.Start(Path.Combine(GogSettings.InstallationPath, "GalaxyClient.exe"), args); return; } GameHandler.ActivateTask(PlayTask, this, emulators); }
private void Task_Click(object sender, RoutedEventArgs e) { var gameTask = (GameTask)(sender as FrameworkElement).DataContext; var game = DataContext as Game; try { GameHandler.ActivateTask(gameTask, game, GameDatabase.Instance.EmulatorsCollection.FindAll().ToList()); } catch (Exception exc) { PlayniteMessageBox.Show("Cannot start action: " + exc.Message, "Action Error", MessageBoxButton.OK, MessageBoxImage.Error); } finally { IsOpen = false; } }
public override void Play(List <Emulator> emulators) { Dispose(); if (Game.PlayTask.Type == GameTaskType.URL && Game.PlayTask.Path.StartsWith("uplay", StringComparison.InvariantCultureIgnoreCase)) { stopWatch = Stopwatch.StartNew(); procMon = new ProcessMonitor(); procMon.TreeStarted += ProcMon_TreeStarted; procMon.TreeDestroyed += Monitor_TreeDestroyed; GameHandler.ActivateTask(Game.PlayTask, Game, emulators); procMon.TreeStarted += ProcMon_TreeStarted; procMon.WatchDirectoryProcesses(Game.InstallDirectory, false); } else { base.Play(emulators); } }
public virtual void Play(List <Emulator> emulators) { if (Game.PlayTask == null) { throw new Exception("Cannot start game without play task"); } var proc = GameHandler.ActivateTask(Game.PlayTask, Game, emulators); OnStarted(this, new GameControllerEventArgs(this, 0)); if (Game.PlayTask.Type != GameTaskType.URL) { stopWatch = Stopwatch.StartNew(); procMon = new ProcessMonitor(); procMon.TreeDestroyed += Monitor_TreeDestroyed; procMon.WatchProcessTree(proc); } else { OnStopped(this, new GameControllerEventArgs(this, 0)); } }
public virtual void ActivateAction(GameTask action) { GameHandler.ActivateTask(action, Game); }