From f320b8dea0e7c9dbef537c14b98826dafbfa0cf2 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sat, 4 Mar 2017 21:44:21 +1100 Subject: [PATCH] Fix holding down B causing inventory menu to close --- .../2D/Screens/Inventory/InventoryScreen.Input.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ClassicalSharp/2D/Screens/Inventory/InventoryScreen.Input.cs b/ClassicalSharp/2D/Screens/Inventory/InventoryScreen.Input.cs index 6ee55e4d9..eac3c668e 100644 --- a/ClassicalSharp/2D/Screens/Inventory/InventoryScreen.Input.cs +++ b/ClassicalSharp/2D/Screens/Inventory/InventoryScreen.Input.cs @@ -55,9 +55,14 @@ namespace ClassicalSharp.Gui.Screens { return true; } + // We want the user to be able to press B to exit the inventory menu + // however since we use KeyRepeat = true, we must wait until the first time they released B + // before marking the next press as closing the menu + bool releasedInv; public override bool HandlesKeyDown(Key key) { - if (key == game.Mapping(KeyBind.PauseOrExit) || - key == game.Mapping(KeyBind.Inventory)) { + if (key == game.Mapping(KeyBind.PauseOrExit)) { + game.Gui.SetNewScreen(null); + } else if (key == game.Mapping(KeyBind.Inventory) && releasedInv) { game.Gui.SetNewScreen(null); } else if (key == Key.Enter && selIndex != -1) { game.Inventory.Selected = blocksTable[selIndex]; @@ -76,6 +81,9 @@ namespace ClassicalSharp.Gui.Screens { } public override bool HandlesKeyUp(Key key) { + if (key == game.Mapping(KeyBind.Inventory)) { + releasedInv = true; return true; + } return game.Gui.hudScreen.hotbar.HandlesKeyUp(key); }