aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2020-07-28 13:51:32 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2020-07-28 13:51:32 +0200
commitf7a042223f9c82c7764c0df3a3531bda04e9ad64 (patch)
tree1d227816dc680ea883ba16a385c2151714e65961 /src/client
parent344fddc1727f637b3c4e2a9b88844d952b91fe4f (diff)
downloaddragonfireclient-f7a042223f9c82c7764c0df3a3531bda04e9ad64.tar.xz
Added cheat Menu
Diffstat (limited to 'src/client')
-rw-r--r--src/client/client.cpp2
-rw-r--r--src/client/game.cpp37
-rw-r--r--src/client/game.h4
-rw-r--r--src/client/gameui.cpp9
-rw-r--r--src/client/gameui.h2
-rw-r--r--src/client/inputhandler.cpp6
-rw-r--r--src/client/keys.h6
7 files changed, 60 insertions, 6 deletions
diff --git a/src/client/client.cpp b/src/client/client.cpp
index d2330ecae..f7fc637db 100644
--- a/src/client/client.cpp
+++ b/src/client/client.cpp
@@ -206,6 +206,8 @@ void Client::loadMods()
// Run a callback when mods are loaded
m_script->on_mods_loaded();
+ m_script->init_cheats();
+
// Create objects if they're ready
if (m_state == LC_Ready)
m_script->on_client_ready(m_env.getLocalPlayer());
diff --git a/src/client/game.cpp b/src/client/game.cpp
index b366ac0a3..3c3ce555d 100644
--- a/src/client/game.cpp
+++ b/src/client/game.cpp
@@ -593,11 +593,20 @@ bool Game::initGui()
// Chat backend and console
gui_chat_console = new GUIChatConsole(guienv, guienv->getRootGUIElement(),
-1, chat_backend, client, &g_menumgr);
+
if (!gui_chat_console) {
*error_message = "Could not allocate memory for chat console";
errorstream << *error_message << std::endl;
return false;
}
+
+ m_cheat_menu = new CheatMenu(client);
+
+ if (!m_cheat_menu) {
+ *error_message = "Could not allocate memory for cheat menu";
+ errorstream << *error_message << std::endl;
+ return false;
+ }
#ifdef HAVE_TOUCHSCREENGUI
@@ -1084,6 +1093,16 @@ void Game::processKeyInput()
toggleKillaura();
} else if (wasKeyDown(KeyType::FREECAM)) {
toggleFreecam();
+ } else if (wasKeyDown(KeyType::SELECT_UP)) {
+ m_cheat_menu->selectUp();
+ } else if (wasKeyDown(KeyType::SELECT_DOWN)) {
+ m_cheat_menu->selectDown();
+ } else if (wasKeyDown(KeyType::SELECT_LEFT)) {
+ m_cheat_menu->selectLeft();
+ } else if (wasKeyDown(KeyType::SELECT_RIGHT)) {
+ m_cheat_menu->selectRight();
+ } else if (wasKeyDown(KeyType::SELECT_CONFIRM)) {
+ m_cheat_menu->selectConfirm();
#if USE_SOUND
} else if (wasKeyDown(KeyType::MUTE)) {
if (g_settings->getBool("enable_sound")) {
@@ -1137,6 +1156,8 @@ void Game::processKeyInput()
m_game_ui->toggleChat();
} else if (wasKeyDown(KeyType::TOGGLE_FOG)) {
toggleFog();
+ } else if (wasKeyDown(KeyType::TOGGLE_CHEAT_MENU)) {
+ m_game_ui->toggleCheatMenu();
} else if (wasKeyDown(KeyType::TOGGLE_UPDATE_CAMERA)) {
toggleUpdateCamera();
} else if (wasKeyDown(KeyType::TOGGLE_DEBUG)) {
@@ -2272,7 +2293,7 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug)
if (g_settings->getBool("increase_tool_range"))
d++;
if (g_settings->getBool("increase_tool_range_plus"))
- d = 500;
+ d = 1000;
core::line3d<f32> shootline;
@@ -3187,13 +3208,19 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime,
graph->draw(10, screensize.Y - 10, driver, g_fontengine->getFont());
/*
+ Cheat menu
+ */
+
+ if (m_game_ui->m_flags.show_cheat_menu && ! gui_chat_console->isOpen())
+ m_cheat_menu->draw(driver, m_game_ui->m_flags.show_debug);
+
+ /*
Damage flash
*/
- if (runData.damage_flash > 0.0f && ! g_settings->getBool("no_hurt_cam")) {
+ if (runData.damage_flash > 0.0f) {
video::SColor color(runData.damage_flash, 180, 0, 0);
- driver->draw2DRectangle(color,
- core::rect<s32>(0, 0, screensize.X, screensize.Y),
- NULL);
+ if (! g_settings->getBool("no_hurt_cam"))
+ driver->draw2DRectangle(color, core::rect<s32>(0, 0, screensize.X, screensize.Y), NULL);
runData.damage_flash -= 384.0f * dtime;
}
diff --git a/src/client/game.h b/src/client/game.h
index af34fb056..21651c510 100644
--- a/src/client/game.h
+++ b/src/client/game.h
@@ -41,6 +41,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "log.h"
#include "filesys.h"
#include "gettext.h"
+#include "gui/cheatMenu.h"
#include "gui/guiChatConsole.h"
#include "gui/guiConfirmRegistration.h"
#include "gui/guiFormSpecMenu.h"
@@ -855,7 +856,7 @@ public:
ISoundManager *sound = nullptr;
bool sound_is_dummy = false;
SoundMaker *soundmaker = nullptr;
-
+
ChatBackend *chat_backend = nullptr;
LogOutputBuffer m_chat_log_buf;
@@ -865,6 +866,7 @@ public:
std::unique_ptr<GameUI> m_game_ui;
GUIChatConsole *gui_chat_console = nullptr; // Free using ->Drop()
+ CheatMenu *m_cheat_menu = nullptr;
MapDrawControl *draw_control = nullptr;
Camera *camera = nullptr;
Clouds *clouds = nullptr; // Free using ->Drop()
diff --git a/src/client/gameui.cpp b/src/client/gameui.cpp
index a20c2c40d..d34f7343c 100644
--- a/src/client/gameui.cpp
+++ b/src/client/gameui.cpp
@@ -275,6 +275,15 @@ void GameUI::toggleChat()
showTranslatedStatusText("Chat hidden");
}
+void GameUI::toggleCheatMenu()
+{
+ m_flags.show_cheat_menu = !m_flags.show_cheat_menu;
+ if (m_flags.show_cheat_menu)
+ showTranslatedStatusText("Cheat Menu shown");
+ else
+ showTranslatedStatusText("Cheat Menu hidden");
+}
+
void GameUI::toggleHud()
{
m_flags.show_hud = !m_flags.show_hud;
diff --git a/src/client/gameui.h b/src/client/gameui.h
index 67c6a9921..0b6298c78 100644
--- a/src/client/gameui.h
+++ b/src/client/gameui.h
@@ -59,6 +59,7 @@ public:
bool show_minimap = false;
bool show_debug = true;
bool show_profiler_graph = false;
+ bool show_cheat_menu = true;
};
void init();
@@ -91,6 +92,7 @@ public:
void updateProfiler();
void toggleChat();
+ void toggleCheatMenu();
void toggleHud();
void toggleProfiler();
diff --git a/src/client/inputhandler.cpp b/src/client/inputhandler.cpp
index 3c39976ec..b78304d96 100644
--- a/src/client/inputhandler.cpp
+++ b/src/client/inputhandler.cpp
@@ -62,6 +62,7 @@ void KeyCache::populate()
key[KeyType::TOGGLE_HUD] = getKeySetting("keymap_toggle_hud");
key[KeyType::TOGGLE_CHAT] = getKeySetting("keymap_toggle_chat");
key[KeyType::TOGGLE_FOG] = getKeySetting("keymap_toggle_fog");
+ key[KeyType::TOGGLE_CHEAT_MENU] = getKeySetting("keymap_toggle_cheat_menu");
key[KeyType::TOGGLE_UPDATE_CAMERA] = getKeySetting("keymap_toggle_update_camera");
key[KeyType::TOGGLE_DEBUG] = getKeySetting("keymap_toggle_debug");
key[KeyType::TOGGLE_PROFILER] = getKeySetting("keymap_toggle_profiler");
@@ -76,6 +77,11 @@ void KeyCache::populate()
key[KeyType::FULLBRIGHT] = getKeySetting("keymap_toggle_fullbright");
key[KeyType::KILLAURA] = getKeySetting("keymap_toggle_killaura");
key[KeyType::FREECAM] = getKeySetting("keymap_toggle_freecam");
+ key[KeyType::SELECT_UP] = getKeySetting("keymap_select_up");
+ key[KeyType::SELECT_DOWN] = getKeySetting("keymap_select_down");
+ key[KeyType::SELECT_LEFT] = getKeySetting("keymap_select_left");
+ key[KeyType::SELECT_RIGHT] = getKeySetting("keymap_select_right");
+ key[KeyType::SELECT_CONFIRM] = getKeySetting("keymap_select_confirm");
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 68ba197f0..98c51f7a5 100644
--- a/src/client/keys.h
+++ b/src/client/keys.h
@@ -61,6 +61,7 @@ public:
TOGGLE_HUD,
TOGGLE_CHAT,
TOGGLE_FOG,
+ TOGGLE_CHEAT_MENU,
TOGGLE_UPDATE_CAMERA,
TOGGLE_DEBUG,
TOGGLE_PROFILER,
@@ -73,6 +74,11 @@ public:
FULLBRIGHT,
KILLAURA,
FREECAM,
+ SELECT_UP,
+ SELECT_DOWN,
+ SELECT_LEFT,
+ SELECT_RIGHT,
+ SELECT_CONFIRM,
QUICKTUNE_NEXT,
QUICKTUNE_PREV,