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(); } } }
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++; } }
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); } }