aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/game.cpp34
-rw-r--r--src/client/inputhandler.cpp1
-rw-r--r--src/client/keys.h1
-rw-r--r--src/defaultsettings.cpp1
-rw-r--r--src/gui/guiKeyChangeMenu.cpp2
-rw-r--r--src/settings_translation_file.cpp2
6 files changed, 40 insertions, 1 deletions
diff --git a/src/client/game.cpp b/src/client/game.cpp
index bc27920fc..f9d8e9fdc 100644
--- a/src/client/game.cpp
+++ b/src/client/game.cpp
@@ -699,6 +699,7 @@ protected:
void processItemSelection(u16 *new_playeritem);
void dropSelectedItem(bool single_item = false);
+ void swapOffhand();
void openInventory();
void openConsole(float scale, const wchar_t *line=NULL);
void toggleFreeMove();
@@ -1889,6 +1890,8 @@ void Game::processKeyInput()
{
if (wasKeyDown(KeyType::DROP)) {
dropSelectedItem(isKeyDown(KeyType::SNEAK));
+ } else if (wasKeyDown(KeyType::SWAP_OFFHAND)) {
+ swapOffhand();
} else if (wasKeyDown(KeyType::AUTOFORWARD)) {
toggleAutoforward();
} else if (wasKeyDown(KeyType::BACKWARD)) {
@@ -1996,7 +1999,6 @@ void Game::processKeyInput()
} else if (wasKeyDown(KeyType::QUICKTUNE_DEC)) {
quicktune->dec();
}
-
if (!isKeyDown(KeyType::JUMP) && runData.reset_jump_timer) {
runData.reset_jump_timer = false;
runData.jump_timer = 0.0f;
@@ -2055,6 +2057,34 @@ void Game::dropSelectedItem(bool single_item)
}
+void Game::swapOffhand()
+{
+
+ IMoveAction *a = new IMoveAction();
+ a->count = 0;
+ a->from_inv.setCurrentPlayer();
+ a->from_list = "main";
+ a->from_i = client->getEnv().getLocalPlayer()->getWieldIndex();
+ a->to_inv.setCurrentPlayer();
+ a->to_list = "offhand";
+ a->to_i = 0;
+
+ ItemStack selected;
+ client->getEnv().getLocalPlayer()->getWieldedItem(&selected, nullptr);
+
+ if (selected.name == "") {
+ auto tmp_list = a->from_list;
+ auto tmp_i = a->from_i;
+ a->from_list = a->to_list;
+ a->from_i = a->to_i;
+ a->to_list = tmp_list;
+ a->to_i = tmp_i;
+ }
+
+ client->inventoryAction(a);
+}
+
+
void Game::openInventory()
{
/*
@@ -4226,6 +4256,7 @@ void Game::showPauseMenu()
"- %s: place/use\n"
"- %s: sneak/climb down\n"
"- %s: drop item\n"
+ "- %s: swap hand items\n"
"- %s: inventory\n"
"- Mouse: turn/look\n"
"- Mouse wheel: select item\n"
@@ -4244,6 +4275,7 @@ void Game::showPauseMenu()
GET_KEY_NAME(keymap_place),
GET_KEY_NAME(keymap_sneak),
GET_KEY_NAME(keymap_drop),
+ GET_KEY_NAME(keymap_swap_offhand),
GET_KEY_NAME(keymap_inventory),
GET_KEY_NAME(keymap_chat)
);
diff --git a/src/client/inputhandler.cpp b/src/client/inputhandler.cpp
index a6ba87e8d..681931248 100644
--- a/src/client/inputhandler.cpp
+++ b/src/client/inputhandler.cpp
@@ -43,6 +43,7 @@ void KeyCache::populate()
key[KeyType::AUTOFORWARD] = getKeySetting("keymap_autoforward");
key[KeyType::DROP] = getKeySetting("keymap_drop");
+ key[KeyType::SWAP_OFFHAND] = getKeySetting("keymap_swap_offhand");
key[KeyType::INVENTORY] = getKeySetting("keymap_inventory");
key[KeyType::CHAT] = getKeySetting("keymap_chat");
key[KeyType::CMD] = getKeySetting("keymap_cmd");
diff --git a/src/client/keys.h b/src/client/keys.h
index e120a2d92..989eb528c 100644
--- a/src/client/keys.h
+++ b/src/client/keys.h
@@ -42,6 +42,7 @@ public:
// Other
DROP,
+ SWAP_OFFHAND,
INVENTORY,
CHAT,
CMD,
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index 222000712..42742eaf0 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -79,6 +79,7 @@ void set_default_settings()
settings->setDefault("keymap_dig", "KEY_LBUTTON");
settings->setDefault("keymap_place", "KEY_RBUTTON");
settings->setDefault("keymap_drop", "KEY_KEY_Q");
+ settings->setDefault("keymap_swap_offhand", "KEY_KEY_F");
settings->setDefault("keymap_zoom", "KEY_KEY_Z");
settings->setDefault("keymap_inventory", "KEY_KEY_I");
settings->setDefault("keymap_aux1", "KEY_KEY_E");
diff --git a/src/gui/guiKeyChangeMenu.cpp b/src/gui/guiKeyChangeMenu.cpp
index 021f5f0a9..ab2811743 100644
--- a/src/gui/guiKeyChangeMenu.cpp
+++ b/src/gui/guiKeyChangeMenu.cpp
@@ -58,6 +58,7 @@ enum
GUI_ID_KEY_CONSOLE_BUTTON,
GUI_ID_KEY_SNEAK_BUTTON,
GUI_ID_KEY_DROP_BUTTON,
+ GUI_ID_KEY_SWAP_OFFHAND_BUTTON,
GUI_ID_KEY_INVENTORY_BUTTON,
GUI_ID_KEY_HOTBAR_PREV_BUTTON,
GUI_ID_KEY_HOTBAR_NEXT_BUTTON,
@@ -409,6 +410,7 @@ void GUIKeyChangeMenu::init_keys()
this->add_key(GUI_ID_KEY_JUMP_BUTTON, wgettext("Jump"), "keymap_jump");
this->add_key(GUI_ID_KEY_SNEAK_BUTTON, wgettext("Sneak"), "keymap_sneak");
this->add_key(GUI_ID_KEY_DROP_BUTTON, wgettext("Drop"), "keymap_drop");
+ this->add_key(GUI_ID_KEY_SWAP_OFFHAND_BUTTON, wgettext("Swap hand items"), "keymap_swap_offhand");
this->add_key(GUI_ID_KEY_INVENTORY_BUTTON, wgettext("Inventory"), "keymap_inventory");
this->add_key(GUI_ID_KEY_HOTBAR_PREV_BUTTON, wgettext("Prev. item"), "keymap_hotbar_previous");
this->add_key(GUI_ID_KEY_HOTBAR_NEXT_BUTTON, wgettext("Next item"), "keymap_hotbar_next");
diff --git a/src/settings_translation_file.cpp b/src/settings_translation_file.cpp
index 03bb564fb..4d5fdf8ea 100644
--- a/src/settings_translation_file.cpp
+++ b/src/settings_translation_file.cpp
@@ -1072,6 +1072,8 @@ fake_function() {
gettext("Key for taking screenshots.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3");
gettext("Drop item key");
gettext("Key for dropping the currently selected item.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3");
+ gettext("Swap hand items");
+ gettext("Key for swapping items between main hand and offhand.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3");
gettext("View zoom key");
gettext("Key to use view zoom when possible.\nSee http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3");
gettext("Hotbar slot 1 key");