Add EscapeContext keybind (#15301)
* Add EscapeContext Escape context input closes windows if there are any open. If there are not any windows it opens the game menu. * Add fluent for Escape Context * Move EngineContext keybind to content * Readd WindowCloseAll * Fix EscapeContext not opening the game menu after using WindowCloseAll WindowCloseAll does not clear the CloseRecentWindowUIController.recentlyInteractedWindows, which caused HasClosableWindow to return true because the list still had items. Changed HasClosableWindow to check if windows in the list are still open and clear them if they aren't. * Clean up EscapeContextUIController
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
using Content.Client.UserInterface.Systems.Info;
|
||||
using Content.Shared.Input;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.Input;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.Controllers;
|
||||
using Robust.Shared.Input;
|
||||
using Robust.Shared.Input.Binding;
|
||||
|
||||
namespace Content.Client.UserInterface.Systems.EscapeMenu;
|
||||
|
||||
[UsedImplicitly]
|
||||
public sealed class EscapeContextUIController : UIController
|
||||
{
|
||||
[Dependency] private readonly IInputManager _inputManager = default!;
|
||||
|
||||
[Dependency] private readonly CloseRecentWindowUIController _closeRecentWindowUIController = default!;
|
||||
[Dependency] private readonly EscapeUIController _escapeUIController = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
_inputManager.SetInputCommand(ContentKeyFunctions.EscapeContext,
|
||||
InputCmdHandler.FromDelegate(_ => CloseWindowOrOpenGameMenu()));
|
||||
}
|
||||
|
||||
private void CloseWindowOrOpenGameMenu()
|
||||
{
|
||||
if (_closeRecentWindowUIController.HasClosableWindow())
|
||||
{
|
||||
_closeRecentWindowUIController.CloseMostRecentWindow();
|
||||
}
|
||||
else
|
||||
{
|
||||
_escapeUIController.ToggleWindow();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user