Implemented toggleable FPS counter. (#5409)

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
pointer-to-null
2021-11-30 14:31:13 +03:00
committed by GitHub
parent bc7463f744
commit d0b40fae4b
5 changed files with 22 additions and 1 deletions

View File

@@ -35,6 +35,7 @@
Text="{Loc 'ui-options-vp-integer-scaling'}" Text="{Loc 'ui-options-vp-integer-scaling'}"
ToolTip="{Loc 'ui-options-vp-integer-scaling-tooltip'}" /> ToolTip="{Loc 'ui-options-vp-integer-scaling-tooltip'}" />
<CheckBox Name="ViewportLowResCheckBox" Text="{Loc 'ui-options-vp-low-res'}" /> <CheckBox Name="ViewportLowResCheckBox" Text="{Loc 'ui-options-vp-low-res'}" />
<CheckBox Name="FpsCounterCheckBox" Text="{Loc 'ui-options-fps-counter'}" />
</BoxContainer> </BoxContainer>
<hudUi:StripeBack HasBottomEdge="False" HasMargins="False"> <hudUi:StripeBack HasBottomEdge="False" HasMargins="False">
<Button Name="ApplyButton" <Button Name="ApplyButton"

View File

@@ -76,6 +76,7 @@ namespace Content.Client.EscapeMenu.UI.Tabs
ShowHeldItemCheckBox.OnToggled += OnCheckBoxToggled; ShowHeldItemCheckBox.OnToggled += OnCheckBoxToggled;
IntegerScalingCheckBox.OnToggled += OnCheckBoxToggled; IntegerScalingCheckBox.OnToggled += OnCheckBoxToggled;
ViewportLowResCheckBox.OnToggled += OnCheckBoxToggled; ViewportLowResCheckBox.OnToggled += OnCheckBoxToggled;
FpsCounterCheckBox.OnToggled += OnCheckBoxToggled;
ApplyButton.OnPressed += OnApplyButtonPressed; ApplyButton.OnPressed += OnApplyButtonPressed;
VSyncCheckBox.Pressed = _cfg.GetCVar(CVars.DisplayVSync); VSyncCheckBox.Pressed = _cfg.GetCVar(CVars.DisplayVSync);
FullscreenCheckBox.Pressed = ConfigIsFullscreen; FullscreenCheckBox.Pressed = ConfigIsFullscreen;
@@ -86,6 +87,7 @@ namespace Content.Client.EscapeMenu.UI.Tabs
ViewportStretchCheckBox.Pressed = _cfg.GetCVar(CCVars.ViewportStretch); ViewportStretchCheckBox.Pressed = _cfg.GetCVar(CCVars.ViewportStretch);
IntegerScalingCheckBox.Pressed = _cfg.GetCVar(CCVars.ViewportSnapToleranceMargin) != 0; IntegerScalingCheckBox.Pressed = _cfg.GetCVar(CCVars.ViewportSnapToleranceMargin) != 0;
ViewportLowResCheckBox.Pressed = !_cfg.GetCVar(CCVars.ViewportScaleRender); ViewportLowResCheckBox.Pressed = !_cfg.GetCVar(CCVars.ViewportScaleRender);
FpsCounterCheckBox.Pressed = _cfg.GetCVar(CCVars.HudFpsCounterVisible);
ShowHeldItemCheckBox.Pressed = _cfg.GetCVar(CCVars.HudHeldItemShow); ShowHeldItemCheckBox.Pressed = _cfg.GetCVar(CCVars.HudHeldItemShow);
UpdateViewportScale(); UpdateViewportScale();
@@ -122,6 +124,7 @@ namespace Content.Client.EscapeMenu.UI.Tabs
IntegerScalingCheckBox.Pressed ? CCVars.ViewportSnapToleranceMargin.DefaultValue : 0); IntegerScalingCheckBox.Pressed ? CCVars.ViewportSnapToleranceMargin.DefaultValue : 0);
_cfg.SetCVar(CCVars.ViewportScaleRender, !ViewportLowResCheckBox.Pressed); _cfg.SetCVar(CCVars.ViewportScaleRender, !ViewportLowResCheckBox.Pressed);
_cfg.SetCVar(CCVars.HudHeldItemShow, ShowHeldItemCheckBox.Pressed); _cfg.SetCVar(CCVars.HudHeldItemShow, ShowHeldItemCheckBox.Pressed);
_cfg.SetCVar(CCVars.HudFpsCounterVisible, FpsCounterCheckBox.Pressed);
_cfg.SaveToFile(); _cfg.SaveToFile();
UpdateApplyButton(); UpdateApplyButton();
} }
@@ -149,6 +152,7 @@ namespace Content.Client.EscapeMenu.UI.Tabs
var isIntegerScalingSame = IntegerScalingCheckBox.Pressed == (_cfg.GetCVar(CCVars.ViewportSnapToleranceMargin) != 0); var isIntegerScalingSame = IntegerScalingCheckBox.Pressed == (_cfg.GetCVar(CCVars.ViewportSnapToleranceMargin) != 0);
var isVPResSame = ViewportLowResCheckBox.Pressed == !_cfg.GetCVar(CCVars.ViewportScaleRender); var isVPResSame = ViewportLowResCheckBox.Pressed == !_cfg.GetCVar(CCVars.ViewportScaleRender);
var isShowHeldItemSame = ShowHeldItemCheckBox.Pressed == _cfg.GetCVar(CCVars.HudHeldItemShow); var isShowHeldItemSame = ShowHeldItemCheckBox.Pressed == _cfg.GetCVar(CCVars.HudHeldItemShow);
var isFpsCounterVisibleSame = FpsCounterCheckBox.Pressed == _cfg.GetCVar(CCVars.HudFpsCounterVisible);
ApplyButton.Disabled = isVSyncSame && ApplyButton.Disabled = isVSyncSame &&
isFullscreenSame && isFullscreenSame &&
@@ -159,7 +163,8 @@ namespace Content.Client.EscapeMenu.UI.Tabs
isIntegerScalingSame && isIntegerScalingSame &&
isVPResSame && isVPResSame &&
isHudThemeSame && isHudThemeSame &&
isShowHeldItemSame; isShowHeldItemSame &&
isFpsCounterVisibleSame;
} }
private bool ConfigIsFullscreen => private bool ConfigIsFullscreen =>

View File

@@ -8,10 +8,12 @@ using Content.Client.HUD;
using Content.Client.HUD.UI; using Content.Client.HUD.UI;
using Content.Client.Voting; using Content.Client.Voting;
using Content.Shared.Chat; using Content.Shared.Chat;
using Content.Shared.CCVar;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.Input; using Robust.Client.Input;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.IoC; using Robust.Shared.IoC;
using Robust.Shared.Maths; using Robust.Shared.Maths;
@@ -31,10 +33,14 @@ namespace Content.Client.Viewport
[Dependency] private readonly IVoteManager _voteManager = default!; [Dependency] private readonly IVoteManager _voteManager = default!;
[Dependency] private readonly IEyeManager _eyeManager = default!; [Dependency] private readonly IEyeManager _eyeManager = default!;
[Dependency] private readonly IOverlayManager _overlayManager = default!; [Dependency] private readonly IOverlayManager _overlayManager = default!;
[Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
[ViewVariables] private ChatBox? _gameChat; [ViewVariables] private ChatBox? _gameChat;
private ConstructionMenuPresenter? _constructionMenu; private ConstructionMenuPresenter? _constructionMenu;
private FpsCounter _fpsCounter = default!;
public MainViewport Viewport { get; private set; } = default!; public MainViewport Viewport { get; private set; } = default!;
public override void Startup() public override void Startup()
@@ -74,6 +80,11 @@ namespace Content.Client.Viewport
_eyeManager.MainViewport = Viewport.Viewport; _eyeManager.MainViewport = Viewport.Viewport;
_overlayManager.AddOverlay(new ShowHandItemOverlay()); _overlayManager.AddOverlay(new ShowHandItemOverlay());
_fpsCounter = new FpsCounter(_gameTiming);
_userInterfaceManager.StateRoot.AddChild(_fpsCounter);
_fpsCounter.Visible = _configurationManager.GetCVar(CCVars.HudFpsCounterVisible);
_configurationManager.OnValueChanged(CCVars.HudFpsCounterVisible, (show) => { _fpsCounter.Visible = show; });
} }
public override void Shutdown() public override void Shutdown()
@@ -88,6 +99,7 @@ namespace Content.Client.Viewport
_gameHud.RootControl.Orphan(); _gameHud.RootControl.Orphan();
// Clear viewport to some fallback, whatever. // Clear viewport to some fallback, whatever.
_eyeManager.MainViewport = _userInterfaceManager.MainViewport; _eyeManager.MainViewport = _userInterfaceManager.MainViewport;
_fpsCounter.Dispose();
} }
/// <summary> /// <summary>

View File

@@ -262,6 +262,8 @@ namespace Content.Shared.CCVar
public static readonly CVarDef<float> HudHeldItemOffset = public static readonly CVarDef<float> HudHeldItemOffset =
CVarDef.Create("hud.held_item_offset", 28f, CVar.ARCHIVE | CVar.CLIENTONLY); CVarDef.Create("hud.held_item_offset", 28f, CVar.ARCHIVE | CVar.CLIENTONLY);
public static readonly CVarDef<bool> HudFpsCounterVisible =
CVarDef.Create("hud.fps_counter_visible", false, CVar.CLIENTONLY | CVar.ARCHIVE);
/* /*
* AI * AI

View File

@@ -47,6 +47,7 @@ ui-options-vp-integer-scaling-tooltip = If this option is enabled, the viewport
means that black bars appear at the top/bottom of the screen or that part means that black bars appear at the top/bottom of the screen or that part
of the viewport is not visible. of the viewport is not visible.
ui-options-vp-low-res = Low-resolution viewport ui-options-vp-low-res = Low-resolution viewport
ui-options-fps-counter = Show FPS counter
## Controls menu ## Controls menu