diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2022-07-24 01:05:31 +0200 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2022-07-24 01:05:31 +0200 |
commit | 111207a3f88ddf19a2e7ef6c809888ffa6480e0b (patch) | |
tree | 35e9059e82b0d9157800401c08ecddbc1a3c65fc /src/client/game.cpp | |
parent | b7767dd9aae27f0fe6b7ae3b99d0f51860979f82 (diff) | |
download | minetest-111207a3f88ddf19a2e7ef6c809888ffa6480e0b.tar.xz |
Add keybind to swap items between handshandswap_keybind
Diffstat (limited to 'src/client/game.cpp')
-rw-r--r-- | src/client/game.cpp | 34 |
1 files changed, 33 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) ); |