Added a toggle fullscreen button (default F11) (#20272)
* Added a toggle fullscreen button (default F11) * Removed un-needed comments * Review Requested Changes * Fixed Acidental Spacing Change * bwoink, removed extraneous code * nothing, litterally
This commit is contained in:
@@ -3,6 +3,7 @@ using Content.Client.Changelog;
|
|||||||
using Content.Client.Chat.Managers;
|
using Content.Client.Chat.Managers;
|
||||||
using Content.Client.Eui;
|
using Content.Client.Eui;
|
||||||
using Content.Client.Flash;
|
using Content.Client.Flash;
|
||||||
|
using Content.Client.Fullscreen;
|
||||||
using Content.Client.GhostKick;
|
using Content.Client.GhostKick;
|
||||||
using Content.Client.Guidebook;
|
using Content.Client.Guidebook;
|
||||||
using Content.Client.Info;
|
using Content.Client.Info;
|
||||||
@@ -49,6 +50,7 @@ namespace Content.Client.Entry
|
|||||||
[Dependency] private readonly IConfigurationManager _configManager = default!;
|
[Dependency] private readonly IConfigurationManager _configManager = default!;
|
||||||
[Dependency] private readonly IStylesheetManager _stylesheetManager = default!;
|
[Dependency] private readonly IStylesheetManager _stylesheetManager = default!;
|
||||||
[Dependency] private readonly IScreenshotHook _screenshotHook = default!;
|
[Dependency] private readonly IScreenshotHook _screenshotHook = default!;
|
||||||
|
[Dependency] private readonly FullscreenHook _fullscreenHook = default!;
|
||||||
[Dependency] private readonly ChangelogManager _changelogManager = default!;
|
[Dependency] private readonly ChangelogManager _changelogManager = default!;
|
||||||
[Dependency] private readonly RulesManager _rulesManager = default!;
|
[Dependency] private readonly RulesManager _rulesManager = default!;
|
||||||
[Dependency] private readonly ViewportManager _viewportManager = default!;
|
[Dependency] private readonly ViewportManager _viewportManager = default!;
|
||||||
@@ -123,6 +125,7 @@ namespace Content.Client.Entry
|
|||||||
_componentFactory.GenerateNetIds();
|
_componentFactory.GenerateNetIds();
|
||||||
_adminManager.Initialize();
|
_adminManager.Initialize();
|
||||||
_screenshotHook.Initialize();
|
_screenshotHook.Initialize();
|
||||||
|
_fullscreenHook.Initialize();
|
||||||
_changelogManager.Initialize();
|
_changelogManager.Initialize();
|
||||||
_rulesManager.Initialize();
|
_rulesManager.Initialize();
|
||||||
_viewportManager.Initialize();
|
_viewportManager.Initialize();
|
||||||
|
|||||||
43
Content.Client/Fullscreen/FullscreenHook.cs
Normal file
43
Content.Client/Fullscreen/FullscreenHook.cs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
using Content.Shared.Input;
|
||||||
|
using Robust.Client.Graphics;
|
||||||
|
using Robust.Client.Input;
|
||||||
|
using Robust.Shared.Input.Binding;
|
||||||
|
using Robust.Shared;
|
||||||
|
using Robust.Shared.Configuration;
|
||||||
|
using Robust.Shared.Players;
|
||||||
|
|
||||||
|
namespace Content.Client.Fullscreen;
|
||||||
|
public sealed class FullscreenHook
|
||||||
|
{
|
||||||
|
[Dependency] private readonly IInputManager _inputManager = default!;
|
||||||
|
[Dependency] private readonly IConfigurationManager _cfg = default!;
|
||||||
|
[Dependency] private readonly ILogManager _logManager = default!;
|
||||||
|
private ISawmill _sawmill = default!;
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
_inputManager.SetInputCommand(ContentKeyFunctions.ToggleFullscreen, InputCmdHandler.FromDelegate(ToggleFullscreen));
|
||||||
|
_sawmill = _logManager.GetSawmill("fullscreen");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ToggleFullscreen(ICommonSession? session)
|
||||||
|
{
|
||||||
|
var currentWindowMode = _cfg.GetCVar(CVars.DisplayWindowMode);
|
||||||
|
|
||||||
|
switch (currentWindowMode)
|
||||||
|
{
|
||||||
|
case (int) WindowMode.Windowed:
|
||||||
|
_cfg.SetCVar(CVars.DisplayWindowMode, (int) WindowMode.Fullscreen);
|
||||||
|
_sawmill.Info("Switched to Fullscreen mode");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case (int) WindowMode.Fullscreen:
|
||||||
|
_cfg.SetCVar(CVars.DisplayWindowMode, (int) WindowMode.Windowed);
|
||||||
|
_sawmill.Info("Switched to Windowed mode");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new InvalidOperationException($"Unexpected WindowMode value: {currentWindowMode}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,6 +29,7 @@ namespace Content.Client.Input
|
|||||||
common.AddFunction(ContentKeyFunctions.OpenAHelp);
|
common.AddFunction(ContentKeyFunctions.OpenAHelp);
|
||||||
common.AddFunction(ContentKeyFunctions.TakeScreenshot);
|
common.AddFunction(ContentKeyFunctions.TakeScreenshot);
|
||||||
common.AddFunction(ContentKeyFunctions.TakeScreenshotNoUI);
|
common.AddFunction(ContentKeyFunctions.TakeScreenshotNoUI);
|
||||||
|
common.AddFunction(ContentKeyFunctions.ToggleFullscreen);
|
||||||
common.AddFunction(ContentKeyFunctions.Point);
|
common.AddFunction(ContentKeyFunctions.Point);
|
||||||
common.AddFunction(ContentKeyFunctions.ZoomOut);
|
common.AddFunction(ContentKeyFunctions.ZoomOut);
|
||||||
common.AddFunction(ContentKeyFunctions.ZoomIn);
|
common.AddFunction(ContentKeyFunctions.ZoomIn);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using Content.Client.Parallax.Managers;
|
|||||||
using Content.Client.Players.PlayTimeTracking;
|
using Content.Client.Players.PlayTimeTracking;
|
||||||
using Content.Client.Preferences;
|
using Content.Client.Preferences;
|
||||||
using Content.Client.Screenshot;
|
using Content.Client.Screenshot;
|
||||||
|
using Content.Client.Fullscreen;
|
||||||
using Content.Client.Stylesheets;
|
using Content.Client.Stylesheets;
|
||||||
using Content.Client.Viewport;
|
using Content.Client.Viewport;
|
||||||
using Content.Client.Voting;
|
using Content.Client.Voting;
|
||||||
@@ -21,6 +22,7 @@ using Content.Client.Guidebook;
|
|||||||
using Content.Client.Replay;
|
using Content.Client.Replay;
|
||||||
using Content.Shared.Administration.Managers;
|
using Content.Shared.Administration.Managers;
|
||||||
|
|
||||||
|
|
||||||
namespace Content.Client.IoC
|
namespace Content.Client.IoC
|
||||||
{
|
{
|
||||||
internal static class ClientContentIoC
|
internal static class ClientContentIoC
|
||||||
@@ -32,6 +34,7 @@ namespace Content.Client.IoC
|
|||||||
IoCManager.Register<IClientPreferencesManager, ClientPreferencesManager>();
|
IoCManager.Register<IClientPreferencesManager, ClientPreferencesManager>();
|
||||||
IoCManager.Register<IStylesheetManager, StylesheetManager>();
|
IoCManager.Register<IStylesheetManager, StylesheetManager>();
|
||||||
IoCManager.Register<IScreenshotHook, ScreenshotHook>();
|
IoCManager.Register<IScreenshotHook, ScreenshotHook>();
|
||||||
|
IoCManager.Register<FullscreenHook, FullscreenHook>();
|
||||||
IoCManager.Register<IClickMapManager, ClickMapManager>();
|
IoCManager.Register<IClickMapManager, ClickMapManager>();
|
||||||
IoCManager.Register<IClientAdminManager, ClientAdminManager>();
|
IoCManager.Register<IClientAdminManager, ClientAdminManager>();
|
||||||
IoCManager.Register<ISharedAdminManager, ClientAdminManager>();
|
IoCManager.Register<ISharedAdminManager, ClientAdminManager>();
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
Title="{Loc 'ui-options-title'}"
|
Title="{Loc 'ui-options-title'}"
|
||||||
MinSize="800 450">
|
MinSize="800 450">
|
||||||
<TabContainer Name="Tabs" Access="Public">
|
<TabContainer Name="Tabs" Access="Public">
|
||||||
<tabs:GraphicsTab />
|
<tabs:GraphicsTab Name="GraphicsTab" />
|
||||||
<tabs:KeyRebindTab />
|
<tabs:KeyRebindTab Name="KeyRebindTab" />
|
||||||
<tabs:AudioTab />
|
<tabs:AudioTab Name="AudioTab" />
|
||||||
<tabs:NetworkTab/>
|
<tabs:NetworkTab Name="NetworkTab" />
|
||||||
</TabContainer>
|
</TabContainer>
|
||||||
</DefaultWindow>
|
</DefaultWindow>
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
using Robust.Client.AutoGenerated;
|
using Robust.Client.AutoGenerated;
|
||||||
using Robust.Client.UserInterface.CustomControls;
|
using Robust.Client.UserInterface.CustomControls;
|
||||||
using Robust.Client.UserInterface.XAML;
|
using Robust.Client.UserInterface.XAML;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
|
using Content.Client.Options.UI.Tabs;
|
||||||
|
|
||||||
|
|
||||||
namespace Content.Client.Options.UI
|
namespace Content.Client.Options.UI
|
||||||
{
|
{
|
||||||
@@ -16,6 +19,13 @@ namespace Content.Client.Options.UI
|
|||||||
Tabs.SetTabTitle(1, Loc.GetString("ui-options-tab-controls"));
|
Tabs.SetTabTitle(1, Loc.GetString("ui-options-tab-controls"));
|
||||||
Tabs.SetTabTitle(2, Loc.GetString("ui-options-tab-audio"));
|
Tabs.SetTabTitle(2, Loc.GetString("ui-options-tab-audio"));
|
||||||
Tabs.SetTabTitle(3, Loc.GetString("ui-options-tab-network"));
|
Tabs.SetTabTitle(3, Loc.GetString("ui-options-tab-network"));
|
||||||
|
|
||||||
|
UpdateTabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateTabs()
|
||||||
|
{
|
||||||
|
GraphicsTab.UpdateProperties();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -229,6 +229,12 @@ namespace Content.Client.Options.UI.Tabs
|
|||||||
private bool ConfigIsFullscreen =>
|
private bool ConfigIsFullscreen =>
|
||||||
_cfg.GetCVar(CVars.DisplayWindowMode) == (int) WindowMode.Fullscreen;
|
_cfg.GetCVar(CVars.DisplayWindowMode) == (int) WindowMode.Fullscreen;
|
||||||
|
|
||||||
|
public void UpdateProperties()
|
||||||
|
{
|
||||||
|
FullscreenCheckBox.Pressed = ConfigIsFullscreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private float ConfigUIScale => _cfg.GetCVar(CVars.DisplayUIScale);
|
private float ConfigUIScale => _cfg.GetCVar(CVars.DisplayUIScale);
|
||||||
|
|
||||||
private int GetConfigLightingQuality()
|
private int GetConfigLightingQuality()
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ namespace Content.Client.Options.UI.Tabs
|
|||||||
{
|
{
|
||||||
if (!first)
|
if (!first)
|
||||||
{
|
{
|
||||||
KeybindsContainer.AddChild(new Control {MinSize = new Vector2(0, 8)});
|
KeybindsContainer.AddChild(new Control { MinSize = new Vector2(0, 8) });
|
||||||
}
|
}
|
||||||
|
|
||||||
first = false;
|
first = false;
|
||||||
@@ -69,7 +69,7 @@ namespace Content.Client.Options.UI.Tabs
|
|||||||
{
|
{
|
||||||
Text = Loc.GetString(headerContents),
|
Text = Loc.GetString(headerContents),
|
||||||
FontColorOverride = StyleNano.NanoGold,
|
FontColorOverride = StyleNano.NanoGold,
|
||||||
StyleClasses = {StyleNano.StyleClassLabelKeyText}
|
StyleClasses = { StyleNano.StyleClassLabelKeyText }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ namespace Content.Client.Options.UI.Tabs
|
|||||||
|
|
||||||
void AddCheckBox(string checkBoxName, bool currentState, Action<BaseButton.ButtonToggledEventArgs>? callBackOnClick)
|
void AddCheckBox(string checkBoxName, bool currentState, Action<BaseButton.ButtonToggledEventArgs>? callBackOnClick)
|
||||||
{
|
{
|
||||||
CheckBox newCheckBox = new CheckBox() { Text = Loc.GetString(checkBoxName)};
|
CheckBox newCheckBox = new CheckBox() { Text = Loc.GetString(checkBoxName) };
|
||||||
newCheckBox.Pressed = currentState;
|
newCheckBox.Pressed = currentState;
|
||||||
newCheckBox.OnToggled += callBackOnClick;
|
newCheckBox.OnToggled += callBackOnClick;
|
||||||
|
|
||||||
@@ -159,6 +159,7 @@ namespace Content.Client.Options.UI.Tabs
|
|||||||
AddHeader("ui-options-header-misc");
|
AddHeader("ui-options-header-misc");
|
||||||
AddButton(ContentKeyFunctions.TakeScreenshot);
|
AddButton(ContentKeyFunctions.TakeScreenshot);
|
||||||
AddButton(ContentKeyFunctions.TakeScreenshotNoUI);
|
AddButton(ContentKeyFunctions.TakeScreenshotNoUI);
|
||||||
|
AddButton(ContentKeyFunctions.ToggleFullscreen);
|
||||||
|
|
||||||
AddHeader("ui-options-header-hotbar");
|
AddHeader("ui-options-header-hotbar");
|
||||||
foreach (var boundKey in ContentKeyFunctions.GetHotbarBoundKeys())
|
foreach (var boundKey in ContentKeyFunctions.GetHotbarBoundKeys())
|
||||||
@@ -409,7 +410,7 @@ namespace Content.Client.Options.UI.Tabs
|
|||||||
|
|
||||||
BindButton1 = new BindButton(parent, this, StyleBase.ButtonOpenRight);
|
BindButton1 = new BindButton(parent, this, StyleBase.ButtonOpenRight);
|
||||||
BindButton2 = new BindButton(parent, this, StyleBase.ButtonOpenLeft);
|
BindButton2 = new BindButton(parent, this, StyleBase.ButtonOpenLeft);
|
||||||
ResetButton = new Button {Text = Loc.GetString("ui-options-bind-reset"), StyleClasses = {StyleBase.ButtonCaution}};
|
ResetButton = new Button { Text = Loc.GetString("ui-options-bind-reset"), StyleClasses = { StyleBase.ButtonCaution } };
|
||||||
|
|
||||||
var hBox = new BoxContainer
|
var hBox = new BoxContainer
|
||||||
{
|
{
|
||||||
@@ -449,7 +450,7 @@ namespace Content.Client.Options.UI.Tabs
|
|||||||
{
|
{
|
||||||
_tab = tab;
|
_tab = tab;
|
||||||
KeyControl = keyControl;
|
KeyControl = keyControl;
|
||||||
Button = new Button {StyleClasses = {styleClass}};
|
Button = new Button { StyleClasses = { styleClass } };
|
||||||
UpdateText();
|
UpdateText();
|
||||||
AddChild(Button);
|
AddChild(Button);
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ public sealed class OptionsUIController : UIController
|
|||||||
{
|
{
|
||||||
EnsureWindow();
|
EnsureWindow();
|
||||||
|
|
||||||
|
_optionsWindow.UpdateTabs();
|
||||||
|
|
||||||
_optionsWindow.OpenCentered();
|
_optionsWindow.OpenCentered();
|
||||||
_optionsWindow.MoveToFront();
|
_optionsWindow.MoveToFront();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ namespace Content.Shared.Input
|
|||||||
public static readonly BoundKeyFunction OpenAdminMenu = "OpenAdminMenu";
|
public static readonly BoundKeyFunction OpenAdminMenu = "OpenAdminMenu";
|
||||||
public static readonly BoundKeyFunction TakeScreenshot = "TakeScreenshot";
|
public static readonly BoundKeyFunction TakeScreenshot = "TakeScreenshot";
|
||||||
public static readonly BoundKeyFunction TakeScreenshotNoUI = "TakeScreenshotNoUI";
|
public static readonly BoundKeyFunction TakeScreenshotNoUI = "TakeScreenshotNoUI";
|
||||||
|
public static readonly BoundKeyFunction ToggleFullscreen = "ToggleFullscreen";
|
||||||
public static readonly BoundKeyFunction Point = "Point";
|
public static readonly BoundKeyFunction Point = "Point";
|
||||||
public static readonly BoundKeyFunction ZoomOut = "ZoomOut";
|
public static readonly BoundKeyFunction ZoomOut = "ZoomOut";
|
||||||
public static readonly BoundKeyFunction ZoomIn = "ZoomIn";
|
public static readonly BoundKeyFunction ZoomIn = "ZoomIn";
|
||||||
|
|||||||
@@ -89,6 +89,9 @@ binds:
|
|||||||
- function: ShowEscapeMenu
|
- function: ShowEscapeMenu
|
||||||
type: State
|
type: State
|
||||||
key: F10
|
key: F10
|
||||||
|
- function: ToggleFullscreen
|
||||||
|
type: State
|
||||||
|
key: F11
|
||||||
- function: CycleChatChannelForward
|
- function: CycleChatChannelForward
|
||||||
type: State
|
type: State
|
||||||
key: Tab
|
key: Tab
|
||||||
|
|||||||
Reference in New Issue
Block a user