Пример #1
0
        protected override void Update(GameTime gameTime)
        {
            this.TimeSinceTick += gameTime.ElapsedGameTime;

            _rawClient.Update();

            if (_rawClient.Tick > _prevTick)
            {
                _prevTick = _rawClient.Tick;

                this.TimeSinceTick = TimeSpan.Zero;

                _delayedTicks = 0;

                UpdateDetails(gameTime);
            }
            else
            {
                _delayedTicks++;

                if (GameService.Graphics.FrameLimiter == FramerateMethod.SyncWithGame &&
                    GameService.GameIntegration.Gw2IsRunning &&
                    this.TimeSinceTick.TotalSeconds < 0.5)
                {
                    BlishHud.Instance.SuppressDraw();
                }
            }
        }
Пример #2
0
        protected override void Update(GameTime gameTime)
        {
            this.TimeSinceTick += gameTime.ElapsedGameTime;

            _rawClient.Update();

            if (_rawClient.Tick > _prevTick)
            {
                _prevTick = _rawClient.Tick;

                this.TimeSinceTick = TimeSpan.Zero;

                _delayedTicks = 0;

                UpdateDetails(gameTime);
            }
            else
            {
                _delayedTicks++;
            }
        }
Пример #3
0
        private void MumbleRefreshLoop()
        {
            //Update the mumble to detect stale data
            _mumbleClient.Update();

            bool firstUpdate = true;
            int? lastTick    = null;

            lastTick ??= _mumbleClient?.Tick ?? 0;

            while (!_requestStop)
            {
                bool shouldRun = true;
                _mumbleClient.Update();

                //Check if Mumble is ready
                if (!_mumbleClient.IsAvailable)
                {
                    shouldRun = false;
                }

                //Check if player is in a map
                if (_mumbleClient.MapId == 0)
                {
                    shouldRun = false;
                }

                //Dont update if tick hasnt changed
                if (_mumbleClient.Tick == lastTick)
                {
                    shouldRun = false;
                }

                //React to new mumble info
                if (shouldRun)
                {
                    //Trigger the ShowUI when a character is selected
                    if (firstUpdate)
                    {
                        HasSelectedCharacter?.Invoke(this, EventArgs.Empty);
                    }

                    if (_lastMapState != _mumbleClient.IsMapOpen)
                    {
                        _lastMapState = _mumbleClient.IsMapOpen;
                        MapStatusChanged?.Invoke(this, new MapStatusChangedArgs(_lastMapState));
                    }

                    if (_lastActiveState != _mumbleClient.DoesGameHaveFocus)
                    {
                        _lastActiveState = _mumbleClient.DoesGameHaveFocus;
                        GameActiveStatusChanged?.Invoke(this, new GameWindowActiveArgs(_lastActiveState));
                    }

                    //Only update the server every 500 ticks
                    if (firstUpdate || (_mumbleClient.Tick % 100) == 0)
                    {
                        if (firstUpdate)
                        {
                            firstUpdate = false;
                        }

                        _log.AddDebug($"Sending Update (Tick = {_mumbleClient.Tick})");
                        MumbleUpdated?.Invoke(this, new MumbleUpdatedArgs(_mumbleClient));
                    }

                    //Update lastTick
                    lastTick = _mumbleClient.Tick;
                }
                //Take a nap
                Thread.Sleep(1000 / 60);
            }
        }