From 1f5dc56664b0a279b1f06092327f6b7d5227835c Mon Sep 17 00:00:00 2001 From: fox Date: Wed, 14 Feb 2024 20:57:40 +0300 Subject: [PATCH] Fix window flickering and increase the default window size --- Content.Client/_NF/Language/LanguageMenuWindow.xaml | 2 +- .../Systems/Language/LanguageMenuUIController.cs | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Content.Client/_NF/Language/LanguageMenuWindow.xaml b/Content.Client/_NF/Language/LanguageMenuWindow.xaml index 4c7c139a7cc..c92eb2ffa33 100644 --- a/Content.Client/_NF/Language/LanguageMenuWindow.xaml +++ b/Content.Client/_NF/Language/LanguageMenuWindow.xaml @@ -1,7 +1,7 @@ + SetSize="300 300"> diff --git a/Content.Client/_NF/UserInterface/Systems/Language/LanguageMenuUIController.cs b/Content.Client/_NF/UserInterface/Systems/Language/LanguageMenuUIController.cs index 90466b9ddb2..6141f11ac25 100644 --- a/Content.Client/_NF/UserInterface/Systems/Language/LanguageMenuUIController.cs +++ b/Content.Client/_NF/UserInterface/Systems/Language/LanguageMenuUIController.cs @@ -3,6 +3,7 @@ using Content.Shared.Language; using Robust.Client.UserInterface.Controllers; using Robust.Client.UserInterface.Controls; +using Robust.Shared.Timing; using static Content.Shared.Language.Systems.SharedLanguageSystem; namespace Content.Client.UserInterface.Systems.Language; @@ -10,9 +11,13 @@ namespace Content.Client.UserInterface.Systems.Language; public sealed class LanguageMenuUIController : UIController, IOnStateEntered, IOnStateExited { public LanguageMenuWindow? _languageWindow; + private TimeSpan _lastToggle = TimeSpan.Zero; + + [Dependency] private readonly IGameTiming _timing = default!; public override void Initialize() { + IoCManager.InjectDependencies(this); EntityManager.EventBus.SubscribeLocalEvent(OnActionMenu); EntityManager.EventBus.SubscribeEvent(EventSource.Network, this, OnStateUpdate); } @@ -27,8 +32,9 @@ private void OnStateUpdate(LanguageMenuStateMessage ev) private void OnActionMenu(EntityUid uid, LanguageSpeakerComponent component, LanguageMenuActionEvent args) { - if (_languageWindow == null) + if (_languageWindow == null || args.Handled || (_timing.RealTime - _lastToggle) < TimeSpan.FromMilliseconds(200)) return; + _lastToggle = _timing.RealTime; // For some reason, this event seems to be fired multiple times, causing flickering if (_languageWindow.IsOpen) { @@ -39,6 +45,8 @@ private void OnActionMenu(EntityUid uid, LanguageSpeakerComponent component, Lan _languageWindow!.Open(); EntityManager.EntityNetManager?.SendSystemNetworkMessage(new RequestLanguageMenuStateMessage()); } + + args.Handled = true; } public void OnStateEntered(GameplayState state)