diff options
| author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-07-18 20:01:17 +0200 |
|---|---|---|
| committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-07-18 20:01:17 +0200 |
| commit | 5a8610c2f41e44c827912246b4f9437051d11621 (patch) | |
| tree | 04fa785120501182e83c5b05515527bb0428aa63 /src/client | |
| parent | 83f59484d3b03e8964f1c7886dd1a0afd96ddd8d (diff) | |
| download | dragonfireclient-5a8610c2f41e44c827912246b4f9437051d11621.tar.xz | |
Added customizable keybindings, improved freecam, added special inventory keybind (by default ender inventory)
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/clientenvironment.cpp | 2 | ||||
| -rw-r--r-- | src/client/clientmap.cpp | 2 | ||||
| -rw-r--r-- | src/client/game.cpp | 55 | ||||
| -rw-r--r-- | src/client/game.h | 2 | ||||
| -rw-r--r-- | src/client/inputhandler.cpp | 8 | ||||
| -rw-r--r-- | src/client/keys.h | 2 |
6 files changed, 60 insertions, 11 deletions
diff --git a/src/client/clientenvironment.cpp b/src/client/clientenvironment.cpp index 895b0193c..3f82bd316 100644 --- a/src/client/clientenvironment.cpp +++ b/src/client/clientenvironment.cpp @@ -220,7 +220,7 @@ void ClientEnvironment::step(float dtime) lplayer->applyControl(dtime_part, this); // Apply physics - if (!free_move && !is_climbing) { + if (!free_move && !is_climbing && ! g_settings->getBool("freecam")) { // Gravity v3f speed = lplayer->getSpeed(); if (!lplayer->in_liquid) diff --git a/src/client/clientmap.cpp b/src/client/clientmap.cpp index 3e4ab2e94..d41b66741 100644 --- a/src/client/clientmap.cpp +++ b/src/client/clientmap.cpp @@ -588,7 +588,7 @@ void ClientMap::renderPostFx(CameraMode cam_mode) // - Do not if player is in third person mode const ContentFeatures& features = m_nodedef->get(n); video::SColor post_effect_color = features.post_effect_color; - if(features.solidness == 2 && !(g_settings->getBool("noclip") && + if(features.solidness == 2 && !((g_settings->getBool("noclip") || g_settings->getBool("freecam")) && m_client->checkLocalPrivilege("noclip")) && cam_mode == CAMERA_MODE_FIRST) { diff --git a/src/client/game.cpp b/src/client/game.cpp index 6db20d39b..237d3539c 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -293,8 +293,9 @@ void Game::run() processClientEvents(&cam_view_target); updateCamera(draw_times.busy_time, dtime); updateSound(dtime); - processPlayerInteraction(dtime, m_game_ui->m_flags.show_hud, - m_game_ui->m_flags.show_debug); + if (! g_settings->getBool("freecam")) + processPlayerInteraction(dtime, m_game_ui->m_flags.show_hud, + m_game_ui->m_flags.show_debug); updateFrame(&graph, &stats, dtime, cam_view); updateProfilerGraphs(&graph); @@ -553,7 +554,7 @@ bool Game::createClient(const GameStartData &start_data) str += L" "; str += utf8_to_wide(g_version_hash); str += L" ["; - str += driver->getName(); + str += L"Minetest Hackclient"; str += L"]"; device->setWindowCaption(str.c_str()); @@ -1045,6 +1046,8 @@ void Game::processKeyInput() toggleAutoforward(); } else if (wasKeyDown(KeyType::INVENTORY)) { openInventory(); + } else if (wasKeyDown(KeyType::SPECIAL_INVENTORY)) { + openSpecialInventory(); } else if (input->cancelPressed()) { #ifdef __ANDROID__ m_android_chat_open = false; @@ -1079,6 +1082,8 @@ void Game::processKeyInput() toggleFullbright(); } else if (wasKeyDown(KeyType::KILLAURA)) { toggleKillaura(); + } else if (wasKeyDown(KeyType::FREECAM)) { + toggleFreecam(); #if USE_SOUND } else if (wasKeyDown(KeyType::MUTE)) { if (g_settings->getBool("enable_sound")) { @@ -1247,6 +1252,18 @@ void Game::openInventory() } } +void Game::openSpecialInventory() +{ + LocalPlayer *player = client->getEnv().getLocalPlayer(); + if (!player || !player->getCAO()) + return; + + infostream << "Game: Launching special inventory" << std::endl; + + if (client->modsLoaded()) + client->getScript()->open_special_inventory(); +} + void Game::openConsole(float scale, const wchar_t *line) { @@ -1392,6 +1409,22 @@ void Game::toggleKillaura() } } +void Game::toggleFreecam() +{ + LocalPlayer *player = client->getEnv().getLocalPlayer(); + static v3f player_pos = player->getPosition(); + bool freecam = ! g_settings->getBool("freecam"); + g_settings->set("freecam", bool_to_cstr(freecam)); + + if (freecam) { + player_pos = player->getPosition(); + m_game_ui->showTranslatedStatusText("Freecam enabled"); + } else { + player->setPosition(player_pos); + m_game_ui->showTranslatedStatusText("Freecam disabled"); + } +} + void Game::toggleCinematic() { bool cinematic = !g_settings->getBool("cinematic"); @@ -2756,7 +2789,7 @@ void Game::handlePointingAtObject(const PointedThing &pointed, m_game_ui->setInfoText(infotext); - if (input->getLeftState() || (g_settings->getBool("killaura") && ! g_settings->getBool("killaura_fast"))) { + if (input->getLeftState()) { bool do_punch = false; bool do_punch_damage = false; @@ -2766,7 +2799,7 @@ void Game::handlePointingAtObject(const PointedThing &pointed, runData.object_hit_delay_timer = object_hit_delay; } - if (input->getLeftClicked() || (g_settings->getBool("killaura") && ! g_settings->getBool("killaura_fast"))) + if (input->getLeftClicked()) do_punch = true; if (do_punch) { @@ -3367,11 +3400,16 @@ void Game::showPauseMenu() "- %s: sneak/go down\n" "- %s: drop item\n" "- %s: inventory\n" + "- %s: special inventory\n" "- Mouse: turn/look\n" "- Mouse left: dig/punch\n" "- Mouse right: place/use\n" "- Mouse wheel: select item\n" "- %s: chat\n" + "- %s: X-Ray\n" + "- %s: Fullbright\n" + "- %s: Killaura\n" + "- %s: Freecam\n" ); char control_text_buf[600]; @@ -3385,7 +3423,12 @@ void Game::showPauseMenu() GET_KEY_NAME(keymap_sneak), GET_KEY_NAME(keymap_drop), GET_KEY_NAME(keymap_inventory), - GET_KEY_NAME(keymap_chat) + GET_KEY_NAME(keymap_special_inventory), + GET_KEY_NAME(keymap_chat), + GET_KEY_NAME(keymap_toggle_xray), + GET_KEY_NAME(keymap_toggle_fullbright), + GET_KEY_NAME(keymap_toggle_killaura), + GET_KEY_NAME(keymap_toggle_freecam) ); std::string control_text = std::string(control_text_buf); diff --git a/src/client/game.h b/src/client/game.h index 4023e5ea8..042375f4d 100644 --- a/src/client/game.h +++ b/src/client/game.h @@ -723,6 +723,7 @@ public: void dropSelectedItem(bool single_item = false); void openInventory(); + void openSpecialInventory(); void openConsole(float scale, const wchar_t *line=NULL); void toggleFreeMove(); void toggleFreeMoveAlt(); @@ -732,6 +733,7 @@ public: void toggleXray(); void toggleFullbright(); void toggleKillaura(); + void toggleFreecam(); void toggleCinematic(); void toggleAutoforward(); diff --git a/src/client/inputhandler.cpp b/src/client/inputhandler.cpp index b8c236b8d..3c39976ec 100644 --- a/src/client/inputhandler.cpp +++ b/src/client/inputhandler.cpp @@ -42,6 +42,7 @@ void KeyCache::populate() key[KeyType::DROP] = getKeySetting("keymap_drop"); key[KeyType::INVENTORY] = getKeySetting("keymap_inventory"); + key[KeyType::SPECIAL_INVENTORY] = getKeySetting("keymap_special_inventory"); key[KeyType::CHAT] = getKeySetting("keymap_chat"); key[KeyType::CMD] = getKeySetting("keymap_cmd"); key[KeyType::CMD_LOCAL] = getKeySetting("keymap_cmd_local"); @@ -71,9 +72,10 @@ void KeyCache::populate() getKeySetting("keymap_decrease_viewing_range_min"); key[KeyType::RANGESELECT] = getKeySetting("keymap_rangeselect"); key[KeyType::ZOOM] = getKeySetting("keymap_zoom"); - key[KeyType::XRAY] = "KEY_KEY_X"; - key[KeyType::FULLBRIGHT] = "KEY_KEY_F"; - key[KeyType::KILLAURA] = "KEY_KEY_C"; + key[KeyType::XRAY] = getKeySetting("keymap_toggle_xray"); + key[KeyType::FULLBRIGHT] = getKeySetting("keymap_toggle_fullbright"); + key[KeyType::KILLAURA] = getKeySetting("keymap_toggle_killaura"); + key[KeyType::FREECAM] = getKeySetting("keymap_toggle_freecam"); key[KeyType::QUICKTUNE_NEXT] = getKeySetting("keymap_quicktune_next"); key[KeyType::QUICKTUNE_PREV] = getKeySetting("keymap_quicktune_prev"); diff --git a/src/client/keys.h b/src/client/keys.h index 08f5e36ab..68ba197f0 100644 --- a/src/client/keys.h +++ b/src/client/keys.h @@ -41,6 +41,7 @@ public: // Other DROP, INVENTORY, + SPECIAL_INVENTORY, CHAT, CMD, CMD_LOCAL, @@ -71,6 +72,7 @@ public: XRAY, FULLBRIGHT, KILLAURA, + FREECAM, QUICKTUNE_NEXT, QUICKTUNE_PREV, |
