コード例 #1
0
        private void CrashHangLogic()
        {
            var verb = _isCrashed ? "crashed" : "hung";

            _wowManager.Profile.Status = $"WoW has {verb}. Restarting";
            _wowManager.Profile.Log($"WoW has {verb}, so lets restart WoW");
            _wowManager.CloseGameProcess();
        }
コード例 #2
0
ファイル: MonitorState.cs プロジェクト: vanasisf/HBRelog
        public override void Run()
        {
            if (_wowManager.LockToken.IsValid)
            {
                _wowManager.LockToken.ReleaseLock();
            }

            if (!_wowManager.StartupSequenceIsComplete)
            {
                _wowManager.SetStartupSequenceToComplete();
                _loggedOutSw.Reset();
                _wowIsLoggedOutForTooLong = false;
            }

            var trouble = FindTrouble();

            if (trouble == WowProblem.None)
            {
                _wowManager.Profile.ShoudPause = false;
                return;
            }

            switch (trouble)
            {
            case WowProblem.Crash:
                _wowManager.Profile.Status = "WoW has crashed. restarting";
                _wowManager.Profile.Log("WoW has crashed.. So lets restart WoW");
                break;

            case WowProblem.Disconnected:
                _wowManager.Profile.Log("WoW has disconnected.. So lets restart WoW");
                _wowManager.Profile.Status = "WoW has DCed. restarting";
                break;

            case WowProblem.Unresponsive:
                _wowManager.Profile.Status = "WoW is not responding. restarting";
                _wowManager.Profile.Log("WoW is not responding.. So lets restart WoW");
                break;

            case WowProblem.LoggedOutForTooLong:
                _wowManager.Profile.Log("Restarting wow because it was logged out for more than 40 seconds");
                _wowManager.Profile.Status = "WoW was logged out for too long. restarting";
                break;
            }
            _wowManager.CloseGameProcess();
        }
コード例 #3
0
        void ChangeRealm()
        {
            if (_realmChangeSw.IsRunning && _realmChangeSw.Elapsed < TimeSpan.FromSeconds(5))
            {
                return;
            }

            if (UnableToSwitchRealm)
            {
                _wowManager.Profile.Log("Unable to switch realms. Trying a restart of WoW.");
                _wowManager.CloseGameProcess();
                return;
            }

            var changeRealmButton = UIObject.GetUIObjectByName <Button>(_wowManager, "CharSelectChangeRealmButton");
            var clickPos          = _wowManager.ConvertWidgetCenterToWin32Coord(changeRealmButton);

            Utility.LeftClickAtPos(_wowManager.GameWindow, (int)clickPos.X, (int)clickPos.Y);
            _wowManager.Profile.Log("Changing server.");
            _realmChangeSw.Restart();
        }
コード例 #4
0
        void ChangeRealm()
        {
            if (_realmChangeSw.IsRunning && _realmChangeSw.Elapsed < TimeSpan.FromSeconds(5))
            {
                return;
            }

            if (UnableToSwitchRealm)
            {
                _wowManager.Profile.Log("Unable to switch realms. Trying a restart of WoW.");
                _wowManager.CloseGameProcess();
                return;
            }
            // Inserts a delay before pressing button because pressing too fast causes the 'You have been disconnected' error.
            // See https://github.com/BosslandGmbH/HBRelog/issues/49
            Thread.Sleep(4000);
            var changeRealmButton = UIObject.GetUIObjectByName <Button>(_wowManager, "CharSelectChangeRealmButton");
            var clickPos          = _wowManager.ConvertWidgetCenterToWin32Coord(changeRealmButton);

            Utility.LeftClickAtPos(_wowManager.GameWindow, (int)clickPos.X, (int)clickPos.Y);
            _wowManager.Profile.Log("Changing server.");
            _realmChangeSw.Restart();
        }