Skip to content

Commit

Permalink
Fix window flickering and increase the default window size
Browse files Browse the repository at this point in the history
  • Loading branch information
Mnemotechnician committed Feb 14, 2024
1 parent 571b560 commit 1f5dc56
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Content.Client/_NF/Language/LanguageMenuWindow.xaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<DefaultWindow xmlns="https://spacestation14.io"
xmlns:ui="clr-namespace:Content.Client.UserInterface.Controls"
Title="a"
SetSize="300 200">
SetSize="300 300">
<BoxContainer Orientation="Vertical" SeparationOverride="4" MinWidth="150">
<PanelContainer Name="CurrentLanguageContainer" Access="Public" StyleClasses="PdaBorderRect">
<Label Name="CurrentLanguageLabel" Access="Public" Text="Current Language:" HorizontalExpand="True"></Label>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,21 @@
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;

public sealed class LanguageMenuUIController : UIController, IOnStateEntered<GameplayState>, IOnStateExited<GameplayState>
{
public LanguageMenuWindow? _languageWindow;
private TimeSpan _lastToggle = TimeSpan.Zero;

[Dependency] private readonly IGameTiming _timing = default!;

public override void Initialize()
{
IoCManager.InjectDependencies(this);
EntityManager.EventBus.SubscribeLocalEvent<LanguageSpeakerComponent, LanguageMenuActionEvent>(OnActionMenu);
EntityManager.EventBus.SubscribeEvent<LanguageMenuStateMessage>(EventSource.Network, this, OnStateUpdate);
}
Expand All @@ -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)
{
Expand All @@ -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)
Expand Down

0 comments on commit 1f5dc56

Please sign in to comment.