Fix character menu button not untoggling when window closes (#33712)

This commit is contained in:
SpaceManiac
2025-02-10 16:45:52 -08:00
committed by GitHub
parent 724f87e62a
commit d849a0434b

View File

@@ -56,7 +56,8 @@ public sealed class CharacterUIController : UIController, IOnStateEntered<Gamepl
_window = UIManager.CreateWindow<CharacterWindow>(); _window = UIManager.CreateWindow<CharacterWindow>();
LayoutContainer.SetAnchorPreset(_window, LayoutContainer.LayoutPreset.CenterTop); LayoutContainer.SetAnchorPreset(_window, LayoutContainer.LayoutPreset.CenterTop);
_window.OnClose += DeactivateButton;
_window.OnOpen += ActivateButton;
CommandBinds.Builder CommandBinds.Builder
.Bind(ContentKeyFunctions.OpenCharacterMenu, .Bind(ContentKeyFunctions.OpenCharacterMenu,
@@ -68,7 +69,7 @@ public sealed class CharacterUIController : UIController, IOnStateEntered<Gamepl
{ {
if (_window != null) if (_window != null)
{ {
_window.Dispose(); _window.Close();
_window = null; _window = null;
} }
@@ -105,18 +106,27 @@ public sealed class CharacterUIController : UIController, IOnStateEntered<Gamepl
} }
CharacterButton.OnPressed += CharacterButtonPressed; CharacterButton.OnPressed += CharacterButtonPressed;
}
if (_window == null) private void DeactivateButton()
{
if (CharacterButton == null)
{ {
return; return;
} }
_window.OnClose += DeactivateButton; CharacterButton.Pressed = false;
_window.OnOpen += ActivateButton;
} }
private void DeactivateButton() => CharacterButton!.Pressed = false; private void ActivateButton()
private void ActivateButton() => CharacterButton!.Pressed = true; {
if (CharacterButton == null)
{
return;
}
CharacterButton.Pressed = true;
}
private void CharacterUpdated(CharacterData data) private void CharacterUpdated(CharacterData data)
{ {
@@ -245,10 +255,7 @@ public sealed class CharacterUIController : UIController, IOnStateEntered<Gamepl
if (_window == null) if (_window == null)
return; return;
if (CharacterButton != null) CharacterButton?.SetClickPressed(!_window.IsOpen);
{
CharacterButton.SetClickPressed(!_window.IsOpen);
}
if (_window.IsOpen) if (_window.IsOpen)
{ {