From 1b0fd195c614ffa1b04d687e7793fb5bb266c535 Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Sun, 2 Dec 2018 17:34:29 -0500 Subject: [PATCH] Raise hotbar limit to 32 slots, add associated keybinding options (#7916) add associated keybinding options update docs and settingtypes --- builtin/settingtypes.txt | 42 ++++++++++++++++++++++++++++++++++--- doc/lua_api.txt | 2 +- src/client/game.cpp | 9 ++++---- src/client/inputhandler.cpp | 3 ++- src/client/keys.h | 9 ++++++++ src/defaultsettings.cpp | 9 ++++++++ src/hud.h | 2 +- 7 files changed, 65 insertions(+), 11 deletions(-) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 8e7e1308d..55107a8c7 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -347,18 +347,54 @@ keymap_slot19 (Hotbar slot 19 key) key # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 keymap_slot20 (Hotbar slot 20 key) key -# Key for selecting the 21th hotbar slot. +# Key for selecting the 21st hotbar slot. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 keymap_slot21 (Hotbar slot 21 key) key -# Key for selecting the 22th hotbar slot. +# Key for selecting the 22nd hotbar slot. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 keymap_slot22 (Hotbar slot 22 key) key -# Key for selecting the 23th hotbar slot. +# Key for selecting the 23rd hotbar slot. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 keymap_slot23 (Hotbar slot 23 key) key +# Key for selecting the 24th hotbar slot. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_slot24 (Hotbar slot 24 key) key + +# Key for selecting the 25th hotbar slot. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_slot25 (Hotbar slot 25 key) key + +# Key for selecting the 26th hotbar slot. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_slot26 (Hotbar slot 26 key) key + +# Key for selecting the 27th hotbar slot. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_slot27 (Hotbar slot 27 key) key + +# Key for selecting the 28th hotbar slot. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_slot28 (Hotbar slot 28 key) key + +# Key for selecting the 29th hotbar slot. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_slot29 (Hotbar slot 29 key) key + +# Key for selecting the 30th hotbar slot. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_slot30 (Hotbar slot 30 key) key + +# Key for selecting the 31st hotbar slot. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_slot31 (Hotbar slot 31 key) key + +# Key for selecting the 32nd hotbar slot. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_slot32 (Hotbar slot 32 key) key + # Key for toggling the display of the HUD. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 keymap_toggle_hud (HUD toggle key) key KEY_F1 diff --git a/doc/lua_api.txt b/doc/lua_api.txt index ca9133b1a..d48e50fde 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -5190,7 +5190,7 @@ This is basically a reference to a C++ `ServerActiveObject` * `hud_get_flags()`: returns a table of player HUD flags with boolean values. * See `hud_set_flags` for a list of flags that can be toggled. * `hud_set_hotbar_itemcount(count)`: sets number of items in builtin hotbar - * `count`: number of items, must be between `1` and `23` + * `count`: number of items, must be between `1` and `32` * `hud_get_hotbar_itemcount`: returns number of visible items * `hud_set_hotbar_image(texturename)` * sets background image for hotbar diff --git a/src/client/game.cpp b/src/client/game.cpp index 418b412fa..bad29aa76 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -68,6 +68,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irrlicht_changes/static_text.h" #include "version.h" #include "script/scripting_client.h" +#include "hud.h" #if USE_SOUND #include "client/sound_openal.h" @@ -2004,12 +2005,10 @@ void Game::processItemSelection(u16 *new_playeritem) /* Item selection using hotbar slot keys */ - for (u16 i = 0; i < 23; i++) { + for (u16 i = 0; i <= max_item; i++) { if (wasKeyDown((GameKeyType) (KeyType::SLOT_1 + i))) { - if (i < PLAYER_INVENTORY_SIZE && i < player->hud_hotbar_itemcount) { - *new_playeritem = i; - infostream << "Selected item: " << new_playeritem << std::endl; - } + *new_playeritem = i; + infostream << "Selected item: " << new_playeritem << std::endl; break; } } diff --git a/src/client/inputhandler.cpp b/src/client/inputhandler.cpp index 29c68cf01..2692e9f1e 100644 --- a/src/client/inputhandler.cpp +++ b/src/client/inputhandler.cpp @@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/numeric.h" #include "inputhandler.h" #include "gui/mainmenumanager.h" +#include "hud.h" void KeyCache::populate_nonchanging() { @@ -76,7 +77,7 @@ void KeyCache::populate() key[KeyType::QUICKTUNE_INC] = getKeySetting("keymap_quicktune_inc"); key[KeyType::QUICKTUNE_DEC] = getKeySetting("keymap_quicktune_dec"); - for (int i = 0; i < 23; i++) { + for (int i = 0; i < HUD_HOTBAR_ITEMCOUNT_MAX; i++) { std::string slot_key_name = "keymap_slot" + std::to_string(i + 1); key[KeyType::SLOT_1 + i] = getKeySetting(slot_key_name.c_str()); } diff --git a/src/client/keys.h b/src/client/keys.h index 15e46293c..28c6574ba 100644 --- a/src/client/keys.h +++ b/src/client/keys.h @@ -98,6 +98,15 @@ public: SLOT_21, SLOT_22, SLOT_23, + SLOT_24, + SLOT_25, + SLOT_26, + SLOT_27, + SLOT_28, + SLOT_29, + SLOT_30, + SLOT_31, + SLOT_32, // joystick specific keys MOUSE_L, diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 52b30ae2f..6a924b840 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -127,6 +127,15 @@ void set_default_settings(Settings *settings) settings->setDefault("keymap_slot21", ""); settings->setDefault("keymap_slot22", ""); settings->setDefault("keymap_slot23", ""); + settings->setDefault("keymap_slot24", ""); + settings->setDefault("keymap_slot25", ""); + settings->setDefault("keymap_slot26", ""); + settings->setDefault("keymap_slot27", ""); + settings->setDefault("keymap_slot28", ""); + settings->setDefault("keymap_slot29", ""); + settings->setDefault("keymap_slot30", ""); + settings->setDefault("keymap_slot31", ""); + settings->setDefault("keymap_slot32", ""); // Some (temporary) keys for debugging settings->setDefault("keymap_quicktune_prev", "KEY_HOME"); diff --git a/src/hud.h b/src/hud.h index 699313980..bfb644303 100644 --- a/src/hud.h +++ b/src/hud.h @@ -50,7 +50,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #define HUD_PARAM_HOTBAR_SELECTED_IMAGE 3 #define HUD_HOTBAR_ITEMCOUNT_DEFAULT 8 -#define HUD_HOTBAR_ITEMCOUNT_MAX 23 +#define HUD_HOTBAR_ITEMCOUNT_MAX 32 #define HOTBAR_IMAGE_SIZE 48