Пример #1
0
        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);
            }
        }
Пример #2
0
        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));
            }
        }
Пример #3
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);
            }
        }
Пример #4
0
        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);
        }
Пример #6
0
 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);
     }
 }
Пример #7
0
 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);
     }
 }
Пример #8
0
 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);
     }
 }
Пример #9
0
        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);
        }
Пример #10
0
        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;
            }
        }
Пример #11
0
 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);
     }
 }
Пример #12
0
        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));
            }
        }
Пример #13
0
 public virtual void ActivateAction(GameTask action)
 {
     GameHandler.ActivateTask(action, Game);
 }