diff options
Diffstat (limited to 'src/client/game.cpp')
-rw-r--r-- | src/client/game.cpp | 1424 |
1 files changed, 697 insertions, 727 deletions
diff --git a/src/client/game.cpp b/src/client/game.cpp index d8800d9ea..e56101436 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "client/clientevent.h" #include "client/gameui.h" #include "client/inputhandler.h" -#include "client/tile.h" // For TextureSource +#include "client/tile.h" // For TextureSource #include "client/keys.h" #include "client/joystick_controller.h" #include "clientmap.h" @@ -52,7 +52,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "gui/profilergraph.h" #include "mapblock.h" #include "minimap.h" -#include "nodedef.h" // Needed for determining pointing to nodes +#include "nodedef.h" // Needed for determining pointing to nodes #include "nodemetadata.h" #include "particles.h" #include "porting.h" @@ -73,60 +73,49 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "hud.h" #if USE_SOUND - #include "client/sound_openal.h" +#include "client/sound_openal.h" #else - #include "client/sound.h" +#include "client/sound.h" #endif -Game::Game() : - m_chat_log_buf(g_logger), - m_game_ui(new GameUI()) -{ - g_settings->registerChangedCallback("doubletap_jump", - &settingChangedCallback, this); - g_settings->registerChangedCallback("enable_clouds", - &settingChangedCallback, this); - g_settings->registerChangedCallback("doubletap_joysticks", - &settingChangedCallback, this); - g_settings->registerChangedCallback("enable_particles", - &settingChangedCallback, this); - g_settings->registerChangedCallback("enable_fog", - &settingChangedCallback, this); - g_settings->registerChangedCallback("mouse_sensitivity", - &settingChangedCallback, this); - g_settings->registerChangedCallback("joystick_frustum_sensitivity", - &settingChangedCallback, this); - g_settings->registerChangedCallback("repeat_rightclick_time", - &settingChangedCallback, this); - g_settings->registerChangedCallback("noclip", - &settingChangedCallback, this); - g_settings->registerChangedCallback("free_move", - &settingChangedCallback, this); - g_settings->registerChangedCallback("cinematic", - &settingChangedCallback, this); - g_settings->registerChangedCallback("cinematic_camera_smoothing", - &settingChangedCallback, this); - g_settings->registerChangedCallback("camera_smoothing", - &settingChangedCallback, this); - g_settings->registerChangedCallback("freecam", - &freecamChangedCallback, this); - g_settings->registerChangedCallback("xray", - &updateAllMapBlocksCallback, this); - g_settings->registerChangedCallback("xray_nodes", - &updateAllMapBlocksCallback, this); - g_settings->registerChangedCallback("fullbright", - &updateAllMapBlocksCallback, this); - +Game::Game() : m_chat_log_buf(g_logger), m_game_ui(new GameUI()) +{ + g_settings->registerChangedCallback( + "doubletap_jump", &settingChangedCallback, this); + g_settings->registerChangedCallback( + "enable_clouds", &settingChangedCallback, this); + g_settings->registerChangedCallback( + "doubletap_joysticks", &settingChangedCallback, this); + g_settings->registerChangedCallback( + "enable_particles", &settingChangedCallback, this); + g_settings->registerChangedCallback("enable_fog", &settingChangedCallback, this); + g_settings->registerChangedCallback( + "mouse_sensitivity", &settingChangedCallback, this); + g_settings->registerChangedCallback( + "joystick_frustum_sensitivity", &settingChangedCallback, this); + g_settings->registerChangedCallback( + "repeat_rightclick_time", &settingChangedCallback, this); + g_settings->registerChangedCallback("noclip", &settingChangedCallback, this); + g_settings->registerChangedCallback("free_move", &settingChangedCallback, this); + g_settings->registerChangedCallback("cinematic", &settingChangedCallback, this); + g_settings->registerChangedCallback( + "cinematic_camera_smoothing", &settingChangedCallback, this); + g_settings->registerChangedCallback( + "camera_smoothing", &settingChangedCallback, this); + g_settings->registerChangedCallback("freecam", &freecamChangedCallback, this); + g_settings->registerChangedCallback("xray", &updateAllMapBlocksCallback, this); + g_settings->registerChangedCallback( + "xray_nodes", &updateAllMapBlocksCallback, this); + g_settings->registerChangedCallback( + "fullbright", &updateAllMapBlocksCallback, this); + readSettings(); #ifdef __ANDROID__ - m_cache_hold_aux1 = false; // This is initialised properly later + m_cache_hold_aux1 = false; // This is initialised properly later #endif - } - - /**************************************************************************** MinetestApp Public ****************************************************************************/ @@ -152,53 +141,44 @@ Game::~Game() extendedResourceCleanup(); - g_settings->deregisterChangedCallback("doubletap_jump", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("enable_clouds", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("enable_particles", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("enable_fog", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("mouse_sensitivity", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("repeat_rightclick_time", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("noclip", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("free_move", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("cinematic", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("cinematic_camera_smoothing", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("camera_smoothing", - &settingChangedCallback, this); - g_settings->deregisterChangedCallback("freecam", - &freecamChangedCallback, this); - g_settings->deregisterChangedCallback("xray", - &updateAllMapBlocksCallback, this); - g_settings->deregisterChangedCallback("xray_nodes", - &updateAllMapBlocksCallback, this); - g_settings->deregisterChangedCallback("fullbright", - &updateAllMapBlocksCallback, this); -} - -bool Game::startup(bool *kill, - InputHandler *input, - const GameStartData &start_data, - std::string &error_message, - bool *reconnect, - ChatBackend *chat_backend) + g_settings->deregisterChangedCallback( + "doubletap_jump", &settingChangedCallback, this); + g_settings->deregisterChangedCallback( + "enable_clouds", &settingChangedCallback, this); + g_settings->deregisterChangedCallback( + "enable_particles", &settingChangedCallback, this); + g_settings->deregisterChangedCallback( + "enable_fog", &settingChangedCallback, this); + g_settings->deregisterChangedCallback( + "mouse_sensitivity", &settingChangedCallback, this); + g_settings->deregisterChangedCallback( + "repeat_rightclick_time", &settingChangedCallback, this); + g_settings->deregisterChangedCallback("noclip", &settingChangedCallback, this); + g_settings->deregisterChangedCallback("free_move", &settingChangedCallback, this); + g_settings->deregisterChangedCallback("cinematic", &settingChangedCallback, this); + g_settings->deregisterChangedCallback( + "cinematic_camera_smoothing", &settingChangedCallback, this); + g_settings->deregisterChangedCallback( + "camera_smoothing", &settingChangedCallback, this); + g_settings->deregisterChangedCallback("freecam", &freecamChangedCallback, this); + g_settings->deregisterChangedCallback("xray", &updateAllMapBlocksCallback, this); + g_settings->deregisterChangedCallback( + "xray_nodes", &updateAllMapBlocksCallback, this); + g_settings->deregisterChangedCallback( + "fullbright", &updateAllMapBlocksCallback, this); +} + +bool Game::startup(bool *kill, InputHandler *input, const GameStartData &start_data, + std::string &error_message, bool *reconnect, ChatBackend *chat_backend) { // "cache" - this->device = RenderingEngine::get_raw_device(); - this->kill = kill; - this->error_message = &error_message; + this->device = RenderingEngine::get_raw_device(); + this->kill = kill; + this->error_message = &error_message; this->reconnect_requested = reconnect; - this->input = input; - this->chat_backend = chat_backend; + this->input = input; + this->chat_backend = chat_backend; this->simple_singleplayer_mode = start_data.isSinglePlayer(); input->keycache.populate(); @@ -206,8 +186,8 @@ bool Game::startup(bool *kill, driver = device->getVideoDriver(); smgr = RenderingEngine::get_scene_manager(); - RenderingEngine::get_scene_manager()->getParameters()-> - setAttribute(scene::OBJ_LOADER_IGNORE_MATERIAL_FILES, true); + RenderingEngine::get_scene_manager()->getParameters()->setAttribute( + scene::OBJ_LOADER_IGNORE_MATERIAL_FILES, true); // Reinit runData runData = GameRunData(); @@ -221,8 +201,8 @@ bool Game::startup(bool *kill, g_client_translations->clear(); // address can change if simple_singleplayer_mode - if (!init(start_data.world_spec.path, start_data.address, - start_data.socket_port, start_data.game_spec)) + if (!init(start_data.world_spec.path, start_data.address, start_data.socket_port, + start_data.game_spec)) return false; if (!createClient(start_data)) @@ -233,14 +213,13 @@ bool Game::startup(bool *kill, return true; } - void Game::run() { ProfilerGraph graph; - RunStats stats = { 0 }; - FpsControl draw_times = { 0 }; + RunStats stats = {0}; + FpsControl draw_times = {0}; f32 dtime; // in seconds - + /* Clear the profiler */ Profiler::GraphValues dummyvalues; g_profiler->graphGet(dummyvalues); @@ -250,24 +229,25 @@ void Game::run() set_light_table(g_settings->getFloat("display_gamma")); #ifdef __ANDROID__ - m_cache_hold_aux1 = g_settings->getBool("fast_move") - && client->checkPrivilege("fast"); + m_cache_hold_aux1 = g_settings->getBool("fast_move") && + client->checkPrivilege("fast"); #endif - irr::core::dimension2d<u32> previous_screen_size(g_settings->getU16("screen_w"), - g_settings->getU16("screen_h")); + irr::core::dimension2d<u32> previous_screen_size( + g_settings->getU16("screen_w"), g_settings->getU16("screen_h")); - while (RenderingEngine::run() - && !(*kill || g_gamecallback->shutdown_requested - || (server && server->isShutdownRequested()))) { + while (RenderingEngine::run() && + !(*kill || g_gamecallback->shutdown_requested || + (server && server->isShutdownRequested()))) { const irr::core::dimension2d<u32> ¤t_screen_size = - RenderingEngine::get_video_driver()->getScreenSize(); + RenderingEngine::get_video_driver()->getScreenSize(); // Verify if window size has changed and save it if it's the case // Ensure evaluating settings->getBool after verifying screensize // First condition is cheaper if (previous_screen_size != current_screen_size && - current_screen_size != irr::core::dimension2d<u32>(0,0) && + current_screen_size != + irr::core::dimension2d<u32>(0, 0) && g_settings->getBool("autosave_screensize")) { g_settings->setU16("screen_w", current_screen_size.Width); g_settings->setU16("screen_h", current_screen_size.Height); @@ -298,30 +278,32 @@ void Game::run() processUserInput(dtime); // Update camera before player movement to avoid camera lag of one frame updateCameraDirection(&cam_view_target, dtime); - cam_view.camera_yaw += (cam_view_target.camera_yaw - - cam_view.camera_yaw) * m_cache_cam_smoothing; - cam_view.camera_pitch += (cam_view_target.camera_pitch - - cam_view.camera_pitch) * m_cache_cam_smoothing; + cam_view.camera_yaw += + (cam_view_target.camera_yaw - cam_view.camera_yaw) * + m_cache_cam_smoothing; + cam_view.camera_pitch += + (cam_view_target.camera_pitch - cam_view.camera_pitch) * + m_cache_cam_smoothing; updatePlayerControl(cam_view); step(&dtime); 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); + m_game_ui->m_flags.show_debug); updateFrame(&graph, &stats, dtime, cam_view); updateProfilerGraphs(&graph); // Update if minimap has been disabled by the server m_game_ui->m_flags.show_minimap &= client->shouldShowMinimap(); - if (m_does_lost_focus_pause_game && !device->isWindowFocused() && !isMenuActive()) { + if (m_does_lost_focus_pause_game && !device->isWindowFocused() && + !isMenuActive()) { showPauseMenu(); } } } - void Game::shutdown() { RenderingEngine::finalize(); @@ -376,17 +358,13 @@ void Game::shutdown() } } - /****************************************************************************/ /**************************************************************************** Startup ****************************************************************************/ /****************************************************************************/ -bool Game::init( - const std::string &map_dir, - const std::string &address, - u16 port, +bool Game::init(const std::string &map_dir, const std::string &address, u16 port, const SubgameSpec &gamespec) { texture_src = createTextureSource(); @@ -401,8 +379,8 @@ bool Game::init( eventmgr = new EventManager(); quicktune = new QuicktuneShortcutter(); - if (!(texture_src && shader_src && itemdef_manager && nodedef_manager - && eventmgr && quicktune)) + if (!(texture_src && shader_src && itemdef_manager && nodedef_manager && + eventmgr && quicktune)) return false; if (!initSound()) @@ -422,7 +400,8 @@ bool Game::initSound() #if USE_SOUND if (g_settings->getBool("enable_sound") && g_sound_manager_singleton.get()) { infostream << "Attempting to use OpenAL audio" << std::endl; - sound = createOpenALSoundManager(g_sound_manager_singleton.get(), &soundfetcher); + sound = createOpenALSoundManager( + g_sound_manager_singleton.get(), &soundfetcher); if (!sound) infostream << "Failed to initialize OpenAL audio" << std::endl; } else @@ -444,8 +423,8 @@ bool Game::initSound() return true; } -bool Game::createSingleplayerServer(const std::string &map_dir, - const SubgameSpec &gamespec, u16 port) +bool Game::createSingleplayerServer( + const std::string &map_dir, const SubgameSpec &gamespec, u16 port) { showOverlayMessage(N_("Creating server..."), 0, 5); @@ -453,7 +432,7 @@ bool Game::createSingleplayerServer(const std::string &map_dir, Address bind_addr(0, 0, 0, 0, port); if (g_settings->getBool("ipv6_server")) { - bind_addr.setAddress((IPv6AddressBytes *) NULL); + bind_addr.setAddress((IPv6AddressBytes *)NULL); } try { @@ -465,14 +444,14 @@ bool Game::createSingleplayerServer(const std::string &map_dir, } if (bind_addr.isIPv6() && !g_settings->getBool("enable_ipv6")) { - *error_message = "Unable to listen on " + - bind_addr.serializeString() + - " because IPv6 is disabled"; + *error_message = "Unable to listen on " + bind_addr.serializeString() + + " because IPv6 is disabled"; errorstream << *error_message << std::endl; return false; } - server = new Server(map_dir, gamespec, simple_singleplayer_mode, bind_addr, false); + server = new Server( + map_dir, gamespec, simple_singleplayer_mode, bind_addr, false); server->start(); return true; @@ -514,8 +493,9 @@ bool Game::createClient(const GameStartData &start_data) return false; } - GameGlobalShaderConstantSetterFactory *scsf = new GameGlobalShaderConstantSetterFactory( - &m_flags.force_fog_off, &runData.fog_range, client); + GameGlobalShaderConstantSetterFactory *scsf = + new GameGlobalShaderConstantSetterFactory(&m_flags.force_fog_off, + &runData.fog_range, client); shader_src->addShaderConstantSetterFactory(scsf); // Update cached textures, meshes and materials @@ -543,7 +523,7 @@ bool Game::createClient(const GameStartData &start_data) */ sky = new Sky(-1, texture_src); scsf->setSky(sky); - skybox = NULL; // This is used/set later on in the main run loop + skybox = NULL; // This is used/set later on in the main run loop if (!sky) { *error_message = "Memory allocation error sky"; @@ -607,15 +587,15 @@ bool Game::initGui() chat_backend->applySettings(); // Chat backend and console - gui_chat_console = new GUIChatConsole(guienv, guienv->getRootGUIElement(), - -1, chat_backend, client, &g_menumgr); + 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) { @@ -634,10 +614,10 @@ bool Game::initGui() return true; } -bool Game::connectToServer(const GameStartData &start_data, - bool *connect_ok, bool *connection_aborted) +bool Game::connectToServer(const GameStartData &start_data, bool *connect_ok, + bool *connection_aborted) { - *connect_ok = false; // Let's not be overly optimistic + *connect_ok = false; // Let's not be overly optimistic *connection_aborted = false; bool local_server_mode = false; @@ -649,7 +629,7 @@ bool Game::connectToServer(const GameStartData &start_data, connect_address.Resolve(start_data.address.c_str()); if (connect_address.isZero()) { // i.e. INADDR_ANY, IN6ADDR_ANY - //connect_address.Resolve("localhost"); + // connect_address.Resolve("localhost"); if (connect_address.isIPv6()) { IPv6AddressBytes addr_bytes; addr_bytes.bytes[15] = 1; @@ -667,15 +647,14 @@ bool Game::connectToServer(const GameStartData &start_data, if (connect_address.isIPv6() && !g_settings->getBool("enable_ipv6")) { *error_message = "Unable to connect to " + - connect_address.serializeString() + - " because IPv6 is disabled"; + connect_address.serializeString() + + " because IPv6 is disabled"; errorstream << *error_message << std::endl; return false; } - client = new Client(start_data.name.c_str(), - start_data.password, start_data.address, - *draw_control, texture_src, shader_src, + client = new Client(start_data.name.c_str(), start_data.password, + start_data.address, *draw_control, texture_src, shader_src, itemdef_manager, nodedef_manager, sound, eventmgr, connect_address.isIPv6(), m_game_ui.get()); @@ -688,8 +667,7 @@ bool Game::connectToServer(const GameStartData &start_data, connect_address.print(&infostream); infostream << std::endl; - client->connect(connect_address, - simple_singleplayer_mode || local_server_mode); + client->connect(connect_address, simple_singleplayer_mode || local_server_mode); /* Wait for server to accept connection @@ -698,7 +676,7 @@ bool Game::connectToServer(const GameStartData &start_data, try { input->clear(); - FpsControl fps_control = { 0 }; + FpsControl fps_control = {0}; f32 dtime; f32 wait_time = 0; // in seconds @@ -725,8 +703,8 @@ bool Game::connectToServer(const GameStartData &start_data, break; if (client->accessDenied()) { - *error_message = "Access denied. Reason: " - + client->accessDeniedReason(); + *error_message = "Access denied. Reason: " + + client->accessDeniedReason(); *reconnect_requested = client->reconnectRequested(); errorstream << *error_message << std::endl; break; @@ -741,16 +719,22 @@ bool Game::connectToServer(const GameStartData &start_data, if (client->m_is_registration_confirmation_state) { if (registration_confirmation_shown) { // Keep drawing the GUI - RenderingEngine::draw_menu_scene(guienv, dtime, true); + RenderingEngine::draw_menu_scene( + guienv, dtime, true); } else { registration_confirmation_shown = true; - (new GUIConfirmRegistration(guienv, guienv->getRootGUIElement(), -1, - &g_menumgr, client, start_data.name, start_data.password, - connection_aborted, texture_src))->drop(); + (new GUIConfirmRegistration(guienv, + guienv->getRootGUIElement(), -1, + &g_menumgr, client, + start_data.name, + start_data.password, + connection_aborted, texture_src)) + ->drop(); } } else { wait_time += dtime; - // Only time out if we aren't waiting for the server we started + // Only time out if we aren't waiting for the server we + // started if (!start_data.isSinglePlayer() && wait_time > 10) { *error_message = "Connection timed out."; errorstream << *error_message << std::endl; @@ -758,7 +742,8 @@ bool Game::connectToServer(const GameStartData &start_data, } // Update status - showOverlayMessage(N_("Connecting to server..."), dtime, 20); + showOverlayMessage( + N_("Connecting to server..."), dtime, 20); } } } catch (con::PeerNotFoundException &e) { @@ -774,7 +759,7 @@ bool Game::getServerContent(bool *aborted) { input->clear(); - FpsControl fps_control = { 0 }; + FpsControl fps_control = {0}; f32 dtime; // in seconds fps_control.last_time = RenderingEngine::get_timer_time(); @@ -817,24 +802,26 @@ bool Game::getServerContent(bool *aborted) if (!client->itemdefReceived()) { const wchar_t *text = wgettext("Item definitions..."); progress = 25; - RenderingEngine::draw_load_screen(text, guienv, texture_src, - dtime, progress); + RenderingEngine::draw_load_screen( + text, guienv, texture_src, dtime, progress); delete[] text; } else if (!client->nodedefReceived()) { const wchar_t *text = wgettext("Node definitions..."); progress = 30; - RenderingEngine::draw_load_screen(text, guienv, texture_src, - dtime, progress); + RenderingEngine::draw_load_screen( + text, guienv, texture_src, dtime, progress); delete[] text; } else { std::stringstream message; std::fixed(message); message.precision(0); - message << gettext("Media...") << " " << (client->mediaReceiveProgress()*100) << "%"; + message << gettext("Media...") << " " + << (client->mediaReceiveProgress() * 100) << "%"; message.precision(2); if ((USE_CURL == 0) || - (!g_settings->getBool("enable_remote_media_server"))) { + (!g_settings->getBool( + "enable_remote_media_server"))) { float cur = client->getCurRate(); std::string cur_unit = gettext("KiB/s"); @@ -847,15 +834,14 @@ bool Game::getServerContent(bool *aborted) } progress = 30 + client->mediaReceiveProgress() * 35 + 0.5; - RenderingEngine::draw_load_screen(utf8_to_wide(message.str()), guienv, - texture_src, dtime, progress); + RenderingEngine::draw_load_screen(utf8_to_wide(message.str()), + guienv, texture_src, dtime, progress); } } return true; } - /****************************************************************************/ /**************************************************************************** Run @@ -873,14 +859,12 @@ inline void Game::updateInteractTimers(f32 dtime) runData.time_from_last_punch += dtime; } - /* returns false if game should exit, otherwise true */ inline bool Game::checkConnection() { if (client->accessDenied()) { - *error_message = "Access denied. Reason: " - + client->accessDeniedReason(); + *error_message = "Access denied. Reason: " + client->accessDeniedReason(); *reconnect_requested = client->reconnectRequested(); errorstream << *error_message << std::endl; return false; @@ -889,7 +873,6 @@ inline bool Game::checkConnection() return true; } - /* returns false if game should exit, otherwise true */ inline bool Game::handleCallbacks() @@ -900,20 +883,21 @@ inline bool Game::handleCallbacks() } if (g_gamecallback->changepassword_requested) { - (new GUIPasswordChange(guienv, guiroot, -1, - &g_menumgr, client, texture_src))->drop(); + (new GUIPasswordChange( + guienv, guiroot, -1, &g_menumgr, client, texture_src)) + ->drop(); g_gamecallback->changepassword_requested = false; } if (g_gamecallback->changevolume_requested) { - (new GUIVolumeChange(guienv, guiroot, -1, - &g_menumgr, texture_src))->drop(); + (new GUIVolumeChange(guienv, guiroot, -1, &g_menumgr, texture_src)) + ->drop(); g_gamecallback->changevolume_requested = false; } if (g_gamecallback->keyconfig_requested) { - (new GUIKeyChangeMenu(guienv, guiroot, -1, - &g_menumgr, texture_src))->drop(); + (new GUIKeyChangeMenu(guienv, guiroot, -1, &g_menumgr, texture_src)) + ->drop(); g_gamecallback->keyconfig_requested = false; } @@ -925,7 +909,6 @@ inline bool Game::handleCallbacks() return true; } - void Game::processQueues() { texture_src->processQueue(); @@ -933,12 +916,9 @@ void Game::processQueues() shader_src->processQueue(); } - -void Game::updateProfilers(const RunStats &stats, const FpsControl &draw_times, - f32 dtime) +void Game::updateProfilers(const RunStats &stats, const FpsControl &draw_times, f32 dtime) { - float profiler_print_interval = - g_settings->getFloat("profiler_print_interval"); + float profiler_print_interval = g_settings->getFloat("profiler_print_interval"); bool print_to_log = true; if (profiler_print_interval == 0) { @@ -957,15 +937,14 @@ void Game::updateProfilers(const RunStats &stats, const FpsControl &draw_times, } // Update update graphs - g_profiler->graphAdd("Time non-rendering [ms]", - draw_times.busy_time - stats.drawtime); + g_profiler->graphAdd( + "Time non-rendering [ms]", draw_times.busy_time - stats.drawtime); g_profiler->graphAdd("Sleep [ms]", draw_times.sleep_time); g_profiler->graphAdd("FPS", 1.0f / dtime); } -void Game::updateStats(RunStats *stats, const FpsControl &draw_times, - f32 dtime) +void Game::updateStats(RunStats *stats, const FpsControl &draw_times, f32 dtime) { f32 jitter; @@ -1013,8 +992,6 @@ void Game::updateStats(RunStats *stats, const FpsControl &draw_times, } } - - /**************************************************************************** Input handling ****************************************************************************/ @@ -1022,7 +999,8 @@ void Game::updateStats(RunStats *stats, const FpsControl &draw_times, void Game::processUserInput(f32 dtime) { // Reset input if window not active or some menu is active - if (!device->isWindowActive() || isMenuActive() || guienv->hasFocus(gui_chat_console)) { + if (!device->isWindowActive() || isMenuActive() || + guienv->hasFocus(gui_chat_console)) { input->clear(); #ifdef HAVE_TOUCHSCREENGUI g_touchscreengui->hide(); @@ -1059,7 +1037,6 @@ void Game::processUserInput(f32 dtime) processItemSelection(&runData.new_playeritem); } - void Game::processKeyInput() { if (wasKeyDown(KeyType::DROP)) { @@ -1088,9 +1065,11 @@ void Game::processKeyInput() if (client->modsLoaded()) openConsole(0.2, L"."); else - m_game_ui->showStatusText(wgettext("Client side scripting is disabled")); + m_game_ui->showStatusText( + wgettext("Client side scripting is disabled")); } else if (wasKeyDown(KeyType::CONSOLE)) { - openConsole(core::clamp(g_settings->getFloat("console_height"), 0.1f, 1.0f)); + openConsole(core::clamp( + g_settings->getFloat("console_height"), 0.1f, 1.0f)); } else if (wasKeyDown(KeyType::FREEMOVE)) { toggleFreeMove(); } else if (wasKeyDown(KeyType::JUMP)) { @@ -1133,11 +1112,14 @@ void Game::processKeyInput() } } else if (wasKeyDown(KeyType::INC_VOLUME)) { if (g_settings->getBool("enable_sound")) { - float new_volume = rangelim(g_settings->getFloat("sound_volume") + 0.1f, 0.0f, 1.0f); + float new_volume = rangelim( + g_settings->getFloat("sound_volume") + 0.1f, 0.0f, + 1.0f); wchar_t buf[100]; g_settings->setFloat("sound_volume", new_volume); const wchar_t *str = wgettext("Volume changed to %d%%"); - swprintf(buf, sizeof(buf) / sizeof(wchar_t), str, myround(new_volume * 100)); + swprintf(buf, sizeof(buf) / sizeof(wchar_t), str, + myround(new_volume * 100)); delete[] str; m_game_ui->showStatusText(buf); } else { @@ -1145,20 +1127,24 @@ void Game::processKeyInput() } } else if (wasKeyDown(KeyType::DEC_VOLUME)) { if (g_settings->getBool("enable_sound")) { - float new_volume = rangelim(g_settings->getFloat("sound_volume") - 0.1f, 0.0f, 1.0f); + float new_volume = rangelim( + g_settings->getFloat("sound_volume") - 0.1f, 0.0f, + 1.0f); wchar_t buf[100]; g_settings->setFloat("sound_volume", new_volume); const wchar_t *str = wgettext("Volume changed to %d%%"); - swprintf(buf, sizeof(buf) / sizeof(wchar_t), str, myround(new_volume * 100)); + swprintf(buf, sizeof(buf) / sizeof(wchar_t), str, + myround(new_volume * 100)); delete[] str; m_game_ui->showStatusText(buf); } else { m_game_ui->showTranslatedStatusText("Sound system is disabled"); } #else - } else if (wasKeyDown(KeyType::MUTE) || wasKeyDown(KeyType::INC_VOLUME) - || wasKeyDown(KeyType::DEC_VOLUME)) { - m_game_ui->showTranslatedStatusText("Sound system is not supported on this build"); + } else if (wasKeyDown(KeyType::MUTE) || wasKeyDown(KeyType::INC_VOLUME) || + wasKeyDown(KeyType::DEC_VOLUME)) { + m_game_ui->showTranslatedStatusText( + "Sound system is not supported on this build"); #endif } else if (wasKeyDown(KeyType::CINEMATIC)) { toggleCinematic(); @@ -1217,8 +1203,7 @@ void Game::processItemSelection(u16 *new_playeritem) *new_playeritem = player->getWieldIndex(); s32 wheel = input->getMouseWheel(); - u16 max_item = MYMIN(PLAYER_INVENTORY_SIZE - 1, - player->hud_hotbar_itemcount - 1); + u16 max_item = MYMIN(PLAYER_INVENTORY_SIZE - 1, player->hud_hotbar_itemcount - 1); s32 dir = wheel; @@ -1241,14 +1226,13 @@ void Game::processItemSelection(u16 *new_playeritem) /* Item selection using hotbar slot keys */ for (u16 i = 0; i <= max_item; i++) { - if (wasKeyDown((GameKeyType) (KeyType::SLOT_1 + i))) { + if (wasKeyDown((GameKeyType)(KeyType::SLOT_1 + i))) { *new_playeritem = i; break; } } } - void Game::dropSelectedItem(bool single_item) { IDropAction *a = new IDropAction(); @@ -1259,7 +1243,6 @@ void Game::dropSelectedItem(bool single_item) client->inventoryAction(a); } - void Game::openInventory() { /* @@ -1278,12 +1261,13 @@ void Game::openInventory() InventoryLocation inventoryloc; inventoryloc.setCurrentPlayer(); - if (!client->modsLoaded() - || !client->getScript()->on_inventory_open(fs_src->m_client->getInventory(inventoryloc))) { + if (!client->modsLoaded() || + !client->getScript()->on_inventory_open( + fs_src->m_client->getInventory(inventoryloc))) { TextDest *txt_dst = new TextDestPlayerInventory(client); auto *&formspec = m_game_ui->updateFormspec(""); GUIFormSpecMenu::create(formspec, client, &input->joystick, fs_src, - txt_dst, client->getFormspecPrepend()); + txt_dst, client->getFormspecPrepend()); formspec->setFormSpec(fs_src->getForm(), inventoryloc); } @@ -1301,7 +1285,6 @@ void Game::openEnderchest() client->getScript()->open_enderchest(); } - void Game::openConsole(float scale, const wchar_t *line) { assert(scale > 0.0f && scale <= 1.0f); @@ -1331,7 +1314,6 @@ void Game::handleAndroidChatInput() } #endif - void Game::toggleFreeMove() { bool free_move = !g_settings->getBool("free_move"); @@ -1341,7 +1323,8 @@ void Game::toggleFreeMove() if (client->checkPrivilege("fly")) { m_game_ui->showTranslatedStatusText("Fly mode enabled"); } else { - m_game_ui->showTranslatedStatusText("Fly mode enabled (note: no 'fly' privilege)"); + m_game_ui->showTranslatedStatusText( + "Fly mode enabled (note: no 'fly' privilege)"); } } else { m_game_ui->showTranslatedStatusText("Fly mode disabled"); @@ -1356,7 +1339,6 @@ void Game::toggleFreeMoveAlt() runData.reset_jump_timer = true; } - void Game::togglePitchMove() { bool pitch_move = !g_settings->getBool("pitch_move"); @@ -1369,7 +1351,6 @@ void Game::togglePitchMove() } } - void Game::toggleFast() { bool fast_move = !g_settings->getBool("fast_move"); @@ -1380,7 +1361,8 @@ void Game::toggleFast() if (has_fast_privs) { m_game_ui->showTranslatedStatusText("Fast mode enabled"); } else { - m_game_ui->showTranslatedStatusText("Fast mode enabled (note: no 'fast' privilege)"); + m_game_ui->showTranslatedStatusText( + "Fast mode enabled (note: no 'fast' privilege)"); } } else { m_game_ui->showTranslatedStatusText("Fast mode disabled"); @@ -1391,7 +1373,6 @@ void Game::toggleFast() #endif } - void Game::toggleNoClip() { bool noclip = !g_settings->getBool("noclip"); @@ -1401,7 +1382,8 @@ void Game::toggleNoClip() if (client->checkPrivilege("noclip")) { m_game_ui->showTranslatedStatusText("Noclip mode enabled"); } else { - m_game_ui->showTranslatedStatusText("Noclip mode enabled (note: no 'noclip' privilege)"); + m_game_ui->showTranslatedStatusText("Noclip mode enabled (note: " + "no 'noclip' privilege)"); } } else { m_game_ui->showTranslatedStatusText("Noclip mode disabled"); @@ -1410,7 +1392,7 @@ void Game::toggleNoClip() void Game::toggleKillaura() { - bool killaura = ! g_settings->getBool("killaura"); + bool killaura = !g_settings->getBool("killaura"); g_settings->set("killaura", bool_to_cstr(killaura)); if (killaura) { @@ -1422,7 +1404,7 @@ void Game::toggleKillaura() void Game::toggleFreecam() { - bool freecam = ! g_settings->getBool("freecam"); + bool freecam = !g_settings->getBool("freecam"); g_settings->set("freecam", bool_to_cstr(freecam)); if (freecam) { @@ -1434,7 +1416,7 @@ void Game::toggleFreecam() void Game::toggleScaffold() { - bool scaffold = ! g_settings->getBool("scaffold"); + bool scaffold = !g_settings->getBool("scaffold"); g_settings->set("scaffold", bool_to_cstr(scaffold)); if (scaffold) { @@ -1446,7 +1428,7 @@ void Game::toggleScaffold() void Game::toggleNextItem() { - bool next_item = ! g_settings->getBool("next_item"); + bool next_item = !g_settings->getBool("next_item"); g_settings->set("next_item", bool_to_cstr(next_item)); if (next_item) { @@ -1481,7 +1463,8 @@ void Game::toggleAutoforward() void Game::toggleMinimap(bool shift_pressed) { - if (!mapper || !m_game_ui->m_flags.show_hud || !g_settings->getBool("enable_minimap")) + if (!mapper || !m_game_ui->m_flags.show_hud || + !g_settings->getBool("enable_minimap")) return; if (shift_pressed) { @@ -1502,31 +1485,32 @@ void Game::toggleMinimap(bool shift_pressed) m_game_ui->m_flags.show_minimap = true; switch (mode) { - case MINIMAP_MODE_SURFACEx1: - m_game_ui->showTranslatedStatusText("Minimap in surface mode, Zoom x1"); - break; - case MINIMAP_MODE_SURFACEx2: - m_game_ui->showTranslatedStatusText("Minimap in surface mode, Zoom x2"); - break; - case MINIMAP_MODE_SURFACEx4: - m_game_ui->showTranslatedStatusText("Minimap in surface mode, Zoom x4"); - break; - case MINIMAP_MODE_RADARx1: - m_game_ui->showTranslatedStatusText("Minimap in radar mode, Zoom x1"); - break; - case MINIMAP_MODE_RADARx2: - m_game_ui->showTranslatedStatusText("Minimap in radar mode, Zoom x2"); - break; - case MINIMAP_MODE_RADARx4: - m_game_ui->showTranslatedStatusText("Minimap in radar mode, Zoom x4"); - break; - default: - mode = MINIMAP_MODE_OFF; - m_game_ui->m_flags.show_minimap = false; - if (hud_flags & HUD_FLAG_MINIMAP_VISIBLE) - m_game_ui->showTranslatedStatusText("Minimap hidden"); - else - m_game_ui->showTranslatedStatusText("Minimap currently disabled by game or mod"); + case MINIMAP_MODE_SURFACEx1: + m_game_ui->showTranslatedStatusText("Minimap in surface mode, Zoom x1"); + break; + case MINIMAP_MODE_SURFACEx2: + m_game_ui->showTranslatedStatusText("Minimap in surface mode, Zoom x2"); + break; + case MINIMAP_MODE_SURFACEx4: + m_game_ui->showTranslatedStatusText("Minimap in surface mode, Zoom x4"); + break; + case MINIMAP_MODE_RADARx1: + m_game_ui->showTranslatedStatusText("Minimap in radar mode, Zoom x1"); + break; + case MINIMAP_MODE_RADARx2: + m_game_ui->showTranslatedStatusText("Minimap in radar mode, Zoom x2"); + break; + case MINIMAP_MODE_RADARx4: + m_game_ui->showTranslatedStatusText("Minimap in radar mode, Zoom x4"); + break; + default: + mode = MINIMAP_MODE_OFF; + m_game_ui->m_flags.show_minimap = false; + if (hud_flags & HUD_FLAG_MINIMAP_VISIBLE) + m_game_ui->showTranslatedStatusText("Minimap hidden"); + else + m_game_ui->showTranslatedStatusText( + "Minimap currently disabled by game or mod"); } mapper->setMinimapMode(mode); @@ -1542,7 +1526,6 @@ void Game::toggleFog() m_game_ui->showTranslatedStatusText("Fog enabled"); } - void Game::toggleDebug() { // Initial / 4x toggle: Chat only @@ -1554,7 +1537,8 @@ void Game::toggleDebug() m_game_ui->m_flags.show_profiler_graph = false; draw_control->show_wireframe = false; m_game_ui->showTranslatedStatusText("Debug info shown"); - } else if (!m_game_ui->m_flags.show_profiler_graph && !draw_control->show_wireframe) { + } else if (!m_game_ui->m_flags.show_profiler_graph && + !draw_control->show_wireframe) { m_game_ui->m_flags.show_profiler_graph = true; m_game_ui->showTranslatedStatusText("Profiler graph shown"); } else if (!draw_control->show_wireframe && client->checkPrivilege("debug")) { @@ -1566,14 +1550,15 @@ void Game::toggleDebug() m_game_ui->m_flags.show_profiler_graph = false; draw_control->show_wireframe = false; if (client->checkPrivilege("debug")) { - m_game_ui->showTranslatedStatusText("Debug info, profiler graph, and wireframe hidden"); + m_game_ui->showTranslatedStatusText("Debug info, profiler graph, " + "and wireframe hidden"); } else { - m_game_ui->showTranslatedStatusText("Debug info and profiler graph hidden"); + m_game_ui->showTranslatedStatusText( + "Debug info and profiler graph hidden"); } } } - void Game::toggleUpdateCamera() { if (g_settings->getBool("freecam")) @@ -1585,7 +1570,6 @@ void Game::toggleUpdateCamera() m_game_ui->showTranslatedStatusText("Camera update enabled"); } - void Game::increaseViewRange() { s16 range = g_settings->getS16("viewing_range"); @@ -1609,7 +1593,6 @@ void Game::increaseViewRange() g_settings->set("viewing_range", itos(range_new)); } - void Game::decreaseViewRange() { s16 range = g_settings->getS16("viewing_range"); @@ -1632,7 +1615,6 @@ void Game::decreaseViewRange() g_settings->set("viewing_range", itos(range_new)); } - void Game::toggleFullViewRange() { draw_control->range_all = !draw_control->range_all; @@ -1642,19 +1624,18 @@ void Game::toggleFullViewRange() m_game_ui->showTranslatedStatusText("Disabled unlimited viewing range"); } - void Game::checkZoomEnabled() { LocalPlayer *player = client->getEnv().getLocalPlayer(); if (player->getZoomFOV() < 0.001f || player->getFov().fov > 0.0f) - m_game_ui->showTranslatedStatusText("Zoom currently disabled by game or mod"); + m_game_ui->showTranslatedStatusText( + "Zoom currently disabled by game or mod"); } - void Game::updateCameraDirection(CameraOrientation *cam, float dtime) { - if ((device->isWindowActive() && device->isWindowFocused() - && !isMenuActive()) || input->isRandom()) { + if ((device->isWindowActive() && device->isWindowFocused() && !isMenuActive()) || + input->isRandom()) { #ifndef __ANDROID__ if (!input->isRandom()) { @@ -1668,7 +1649,7 @@ void Game::updateCameraDirection(CameraOrientation *cam, float dtime) m_first_loop_after_window_activation = false; input->setMousePos(driver->getScreenSize().Width / 2, - driver->getScreenSize().Height / 2); + driver->getScreenSize().Height / 2); } else { updateCameraOrientation(cam, dtime); } @@ -1682,7 +1663,6 @@ void Game::updateCameraDirection(CameraOrientation *cam, float dtime) #endif m_first_loop_after_window_activation = true; - } } @@ -1690,18 +1670,20 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime) { #ifdef HAVE_TOUCHSCREENGUI if (g_touchscreengui) { - cam->camera_yaw += g_touchscreengui->getYawChange(); - cam->camera_pitch = g_touchscreengui->getPitch(); + cam->camera_yaw += g_touchscreengui->getYawChange(); + cam->camera_pitch = g_touchscreengui->getPitch(); } else { #endif - v2s32 center(driver->getScreenSize().Width / 2, driver->getScreenSize().Height / 2); + v2s32 center(driver->getScreenSize().Width / 2, + driver->getScreenSize().Height / 2); v2s32 dist = input->getMousePos() - center; - if (m_invert_mouse || camera->getCameraMode() == CAMERA_MODE_THIRD_FRONT) { + if (m_invert_mouse || + camera->getCameraMode() == CAMERA_MODE_THIRD_FRONT) { dist.Y = -dist.Y; } - cam->camera_yaw -= dist.X * m_cache_mouse_sensitivity; + cam->camera_yaw -= dist.X * m_cache_mouse_sensitivity; cam->camera_pitch += dist.Y * m_cache_mouse_sensitivity; if (dist.X != 0 || dist.Y != 0) @@ -1712,51 +1694,45 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime) if (m_cache_enable_joysticks) { f32 c = m_cache_joystick_frustum_sensitivity * (1.f / 32767.f) * dtime; - cam->camera_yaw -= input->joystick.getAxisWithoutDead(JA_FRUSTUM_HORIZONTAL) * c; - cam->camera_pitch += input->joystick.getAxisWithoutDead(JA_FRUSTUM_VERTICAL) * c; + cam->camera_yaw -= input->joystick.getAxisWithoutDead( + JA_FRUSTUM_HORIZONTAL) * + c; + cam->camera_pitch += + input->joystick.getAxisWithoutDead(JA_FRUSTUM_VERTICAL) * + c; } cam->camera_pitch = rangelim(cam->camera_pitch, -89.5, 89.5); } - void Game::updatePlayerControl(const CameraOrientation &cam) { - //TimeTaker tt("update player control", NULL, PRECISION_NANO); + // TimeTaker tt("update player control", NULL, PRECISION_NANO); // DO NOT use the isKeyDown method for the forward, backward, left, right // buttons, as the code that uses the controls needs to be able to // distinguish between the two in order to know when to use joysticks. - PlayerControl control( - input->isKeyDown(KeyType::FORWARD), - input->isKeyDown(KeyType::BACKWARD), - input->isKeyDown(KeyType::LEFT), - input->isKeyDown(KeyType::RIGHT), - isKeyDown(KeyType::JUMP), - isKeyDown(KeyType::SPECIAL1), - isKeyDown(KeyType::SNEAK), - isKeyDown(KeyType::ZOOM), - input->getLeftState(), - input->getRightState(), - cam.camera_pitch, - cam.camera_yaw, - input->joystick.getAxisWithoutDead(JA_SIDEWARD_MOVE), - input->joystick.getAxisWithoutDead(JA_FORWARD_MOVE) - ); - - u32 keypress_bits = ( - ( (u32)(isKeyDown(KeyType::FORWARD) & 0x1) << 0) | - ( (u32)(isKeyDown(KeyType::BACKWARD) & 0x1) << 1) | - ( (u32)(isKeyDown(KeyType::LEFT) & 0x1) << 2) | - ( (u32)(isKeyDown(KeyType::RIGHT) & 0x1) << 3) | - ( (u32)(isKeyDown(KeyType::JUMP) & 0x1) << 4) | - ( (u32)(isKeyDown(KeyType::SPECIAL1) & 0x1) << 5) | - ( (u32)(isKeyDown(KeyType::SNEAK) & 0x1) << 6) | - ( (u32)(input->getLeftState() & 0x1) << 7) | - ( (u32)(input->getRightState() & 0x1) << 8) | - ( (u32)(isKeyDown(KeyType::ZOOM) & 0x1) << 9) - ); + PlayerControl control(input->isKeyDown(KeyType::FORWARD), + input->isKeyDown(KeyType::BACKWARD), + input->isKeyDown(KeyType::LEFT), input->isKeyDown(KeyType::RIGHT), + isKeyDown(KeyType::JUMP), isKeyDown(KeyType::SPECIAL1), + isKeyDown(KeyType::SNEAK), isKeyDown(KeyType::ZOOM), + input->getLeftState(), input->getRightState(), cam.camera_pitch, + cam.camera_yaw, + input->joystick.getAxisWithoutDead(JA_SIDEWARD_MOVE), + input->joystick.getAxisWithoutDead(JA_FORWARD_MOVE)); + + u32 keypress_bits = (((u32)(isKeyDown(KeyType::FORWARD) & 0x1) << 0) | + ((u32)(isKeyDown(KeyType::BACKWARD) & 0x1) << 1) | + ((u32)(isKeyDown(KeyType::LEFT) & 0x1) << 2) | + ((u32)(isKeyDown(KeyType::RIGHT) & 0x1) << 3) | + ((u32)(isKeyDown(KeyType::JUMP) & 0x1) << 4) | + ((u32)(isKeyDown(KeyType::SPECIAL1) & 0x1) << 5) | + ((u32)(isKeyDown(KeyType::SNEAK) & 0x1) << 6) | + ((u32)(input->getLeftState() & 0x1) << 7) | + ((u32)(input->getRightState() & 0x1) << 8) | + ((u32)(isKeyDown(KeyType::ZOOM) & 0x1) << 9)); #ifdef ANDROID /* For Android, simulate holding down AUX1 (fast move) if the user has @@ -1788,17 +1764,15 @@ void Game::updatePlayerControl(const CameraOrientation &cam) client->setPlayerControl(control); player->keyPressed = keypress_bits; - //tt.stop(); + // tt.stop(); } - inline void Game::step(f32 *dtime) { - bool can_be_and_is_paused = - (simple_singleplayer_mode && g_menumgr.pausesGame()); + bool can_be_and_is_paused = (simple_singleplayer_mode && g_menumgr.pausesGame()); if (can_be_and_is_paused) { // This is for a singleplayer server - *dtime = 0; // No time passes + *dtime = 0; // No time passes } else { if (server) server->step(*dtime); @@ -1808,24 +1782,24 @@ inline void Game::step(f32 *dtime) } const ClientEventHandler Game::clientEventHandler[CLIENTEVENT_MAX] = { - {&Game::handleClientEvent_None}, - {&Game::handleClientEvent_PlayerDamage}, - {&Game::handleClientEvent_PlayerForceMove}, - {&Game::handleClientEvent_Deathscreen}, - {&Game::handleClientEvent_ShowFormSpec}, - {&Game::handleClientEvent_ShowLocalFormSpec}, - {&Game::handleClientEvent_HandleParticleEvent}, - {&Game::handleClientEvent_HandleParticleEvent}, - {&Game::handleClientEvent_HandleParticleEvent}, - {&Game::handleClientEvent_HudAdd}, - {&Game::handleClientEvent_HudRemove}, - {&Game::handleClientEvent_HudChange}, - {&Game::handleClientEvent_SetSky}, - {&Game::handleClientEvent_SetSun}, - {&Game::handleClientEvent_SetMoon}, - {&Game::handleClientEvent_SetStars}, - {&Game::handleClientEvent_OverrideDayNigthRatio}, - {&Game::handleClientEvent_CloudParams}, + {&Game::handleClientEvent_None}, + {&Game::handleClientEvent_PlayerDamage}, + {&Game::handleClientEvent_PlayerForceMove}, + {&Game::handleClientEvent_Deathscreen}, + {&Game::handleClientEvent_ShowFormSpec}, + {&Game::handleClientEvent_ShowLocalFormSpec}, + {&Game::handleClientEvent_HandleParticleEvent}, + {&Game::handleClientEvent_HandleParticleEvent}, + {&Game::handleClientEvent_HandleParticleEvent}, + {&Game::handleClientEvent_HudAdd}, + {&Game::handleClientEvent_HudRemove}, + {&Game::handleClientEvent_HudChange}, + {&Game::handleClientEvent_SetSky}, + {&Game::handleClientEvent_SetSun}, + {&Game::handleClientEvent_SetMoon}, + {&Game::handleClientEvent_SetStars}, + {&Game::handleClientEvent_OverrideDayNigthRatio}, + {&Game::handleClientEvent_CloudParams}, }; void Game::handleClientEvent_None(ClientEvent *event, CameraOrientation *cam) @@ -1847,7 +1821,7 @@ void Game::handleClientEvent_PlayerDamage(ClientEvent *event, CameraOrientation player->hurt_tilt_timer = 1.5f; player->hurt_tilt_strength = - rangelim(event->player_damage.amount / 4.0f, 1.0f, 4.0f); + rangelim(event->player_damage.amount / 4.0f, 1.0f, 4.0f); } // Play damage sound @@ -1880,19 +1854,21 @@ void Game::handleClientEvent_ShowFormSpec(ClientEvent *event, CameraOrientation { if (event->show_formspec.formspec->empty()) { auto formspec = m_game_ui->getFormspecGUI(); - if (formspec && (event->show_formspec.formname->empty() - || *(event->show_formspec.formname) == m_game_ui->getFormspecName())) { + if (formspec && (event->show_formspec.formname->empty() || + *(event->show_formspec.formname) == + m_game_ui->getFormspecName())) { formspec->quitMenu(); } } else { FormspecFormSource *fs_src = - new FormspecFormSource(*(event->show_formspec.formspec)); - TextDestPlayerInventory *txt_dst = - new TextDestPlayerInventory(client, *(event->show_formspec.formname)); + new FormspecFormSource(*(event->show_formspec.formspec)); + TextDestPlayerInventory *txt_dst = new TextDestPlayerInventory( + client, *(event->show_formspec.formname)); - auto *&formspec = m_game_ui->updateFormspec(*(event->show_formspec.formname)); - GUIFormSpecMenu::create(formspec, client, &input->joystick, - fs_src, txt_dst, client->getFormspecPrepend()); + auto *&formspec = m_game_ui->updateFormspec( + *(event->show_formspec.formname)); + GUIFormSpecMenu::create(formspec, client, &input->joystick, fs_src, + txt_dst, client->getFormspecPrepend()); } delete event->show_formspec.formspec; @@ -1901,9 +1877,10 @@ void Game::handleClientEvent_ShowFormSpec(ClientEvent *event, CameraOrientation void Game::handleClientEvent_ShowLocalFormSpec(ClientEvent *event, CameraOrientation *cam) { - FormspecFormSource *fs_src = new FormspecFormSource(*event->show_formspec.formspec); + FormspecFormSource *fs_src = + new FormspecFormSource(*event->show_formspec.formspec); LocalFormspecHandler *txt_dst = - new LocalFormspecHandler(*event->show_formspec.formname, client); + new LocalFormspecHandler(*event->show_formspec.formname, client); GUIFormSpecMenu::create(m_game_ui->getFormspecGUI(), client, &input->joystick, fs_src, txt_dst, client->getFormspecPrepend()); @@ -1911,8 +1888,8 @@ void Game::handleClientEvent_ShowLocalFormSpec(ClientEvent *event, CameraOrienta delete event->show_formspec.formname; } -void Game::handleClientEvent_HandleParticleEvent(ClientEvent *event, - CameraOrientation *cam) +void Game::handleClientEvent_HandleParticleEvent( + ClientEvent *event, CameraOrientation *cam) { LocalPlayer *player = client->getEnv().getLocalPlayer(); client->getParticleManager()->handleParticleEvent(event, client, player); @@ -1940,20 +1917,20 @@ void Game::handleClientEvent_HudAdd(ClientEvent *event, CameraOrientation *cam) } HudElement *e = new HudElement; - e->type = (HudElementType)event->hudadd.type; - e->pos = *event->hudadd.pos; - e->name = *event->hudadd.name; - e->scale = *event->hudadd.scale; - e->text = *event->hudadd.text; + e->type = (HudElementType)event->hudadd.type; + e->pos = *event->hudadd.pos; + e->name = *event->hudadd.name; + e->scale = *event->hudadd.scale; + e->text = *event->hudadd.text; e->number = event->hudadd.number; - e->item = event->hudadd.item; - e->dir = event->hudadd.dir; - e->align = *event->hudadd.align; + e->item = event->hudadd.item; + e->dir = event->hudadd.dir; + e->align = *event->hudadd.align; e->offset = *event->hudadd.offset; e->world_pos = *event->hudadd.world_pos; e->size = *event->hudadd.size; e->z_index = event->hudadd.z_index; - e->text2 = *event->hudadd.text2; + e->text2 = *event->hudadd.text2; hud_server_to_client[server_id] = player->addHud(e); delete event->hudadd.pos; @@ -1990,57 +1967,57 @@ void Game::handleClientEvent_HudChange(ClientEvent *event, CameraOrientation *ca } switch (event->hudchange.stat) { - case HUD_STAT_POS: - e->pos = *event->hudchange.v2fdata; - break; + case HUD_STAT_POS: + e->pos = *event->hudchange.v2fdata; + break; - case HUD_STAT_NAME: - e->name = *event->hudchange.sdata; - break; + case HUD_STAT_NAME: + e->name = *event->hudchange.sdata; + break; - case HUD_STAT_SCALE: - e->scale = *event->hudchange.v2fdata; - break; + case HUD_STAT_SCALE: + e->scale = *event->hudchange.v2fdata; + break; - case HUD_STAT_TEXT: - e->text = *event->hudchange.sdata; - break; + case HUD_STAT_TEXT: + e->text = *event->hudchange.sdata; + break; - case HUD_STAT_NUMBER: - e->number = event->hudchange.data; - break; + case HUD_STAT_NUMBER: + e->number = event->hudchange.data; + break; - case HUD_STAT_ITEM: - e->item = event->hudchange.data; - break; + case HUD_STAT_ITEM: + e->item = event->hudchange.data; + break; - case HUD_STAT_DIR: - e->dir = event->hudchange.data; - break; + case HUD_STAT_DIR: + e->dir = event->hudchange.data; + break; - case HUD_STAT_ALIGN: - e->align = *event->hudchange.v2fdata; - break; + case HUD_STAT_ALIGN: + e->align = *event->hudchange.v2fdata; + break; - case HUD_STAT_OFFSET: - e->offset = *event->hudchange.v2fdata; - break; + case HUD_STAT_OFFSET: + e->offset = *event->hudchange.v2fdata; + break; - case HUD_STAT_WORLD_POS: - e->world_pos = *event->hudchange.v3fdata; - break; + case HUD_STAT_WORLD_POS: + e->world_pos = *event->hudchange.v3fdata; + break; - case HUD_STAT_SIZE: - e->size = *event->hudchange.v2s32data; - break; + case HUD_STAT_SIZE: + e->size = *event->hudchange.v2s32data; + break; - case HUD_STAT_Z_INDEX: - e->z_index = event->hudchange.data; - break; + case HUD_STAT_Z_INDEX: + e->z_index = event->hudchange.data; + break; - case HUD_STAT_TEXT2: - e->text2 = *event->hudchange.sdata; - break; + case HUD_STAT_TEXT2: + e->text2 = *event->hudchange.sdata; + break; } delete event->hudchange.v3fdata; @@ -2067,11 +2044,9 @@ void Game::handleClientEvent_SetSky(ClientEvent *event, CameraOrientation *cam) sky->setVisible(true); // Update mesh based skybox colours if applicable. sky->setSkyColors(event->set_sky->sky_color); - sky->setHorizonTint( - event->set_sky->fog_sun_tint, - event->set_sky->fog_moon_tint, - event->set_sky->fog_tint_type - ); + sky->setHorizonTint(event->set_sky->fog_sun_tint, + event->set_sky->fog_moon_tint, + event->set_sky->fog_tint_type); } else if (event->set_sky->type == "skybox" && event->set_sky->textures.size() == 6) { // Disable the dyanmic mesh skybox: @@ -2079,27 +2054,23 @@ void Game::handleClientEvent_SetSky(ClientEvent *event, CameraOrientation *cam) // Set fog colors: sky->setFallbackBgColor(event->set_sky->bgcolor); // Set sunrise and sunset fog tinting: - sky->setHorizonTint( - event->set_sky->fog_sun_tint, - event->set_sky->fog_moon_tint, - event->set_sky->fog_tint_type - ); + sky->setHorizonTint(event->set_sky->fog_sun_tint, + event->set_sky->fog_moon_tint, + event->set_sky->fog_tint_type); // Add textures to skybox. for (int i = 0; i < 6; i++) - sky->addTextureToSkybox(event->set_sky->textures[i], i, texture_src); + sky->addTextureToSkybox( + event->set_sky->textures[i], i, texture_src); } else { // Handle everything else as plain color. if (event->set_sky->type != "plain") - infostream << "Unknown sky type: " - << (event->set_sky->type) << std::endl; + infostream << "Unknown sky type: " << (event->set_sky->type) + << std::endl; sky->setVisible(false); sky->setFallbackBgColor(event->set_sky->bgcolor); // Disable directional sun/moon tinting on plain or invalid skyboxes. - sky->setHorizonTint( - event->set_sky->bgcolor, - event->set_sky->bgcolor, - "custom" - ); + sky->setHorizonTint(event->set_sky->bgcolor, event->set_sky->bgcolor, + "custom"); } delete event->set_sky; } @@ -2107,8 +2078,8 @@ void Game::handleClientEvent_SetSky(ClientEvent *event, CameraOrientation *cam) void Game::handleClientEvent_SetSun(ClientEvent *event, CameraOrientation *cam) { sky->setSunVisible(event->sun_params->visible); - sky->setSunTexture(event->sun_params->texture, - event->sun_params->tonemap, texture_src); + sky->setSunTexture(event->sun_params->texture, event->sun_params->tonemap, + texture_src); sky->setSunScale(event->sun_params->scale); sky->setSunriseVisible(event->sun_params->sunrise_visible); sky->setSunriseTexture(event->sun_params->sunrise, texture_src); @@ -2118,8 +2089,8 @@ void Game::handleClientEvent_SetSun(ClientEvent *event, CameraOrientation *cam) void Game::handleClientEvent_SetMoon(ClientEvent *event, CameraOrientation *cam) { sky->setMoonVisible(event->moon_params->visible); - sky->setMoonTexture(event->moon_params->texture, - event->moon_params->tonemap, texture_src); + sky->setMoonTexture(event->moon_params->texture, event->moon_params->tonemap, + texture_src); sky->setMoonScale(event->moon_params->scale); delete event->moon_params; } @@ -2133,12 +2104,12 @@ void Game::handleClientEvent_SetStars(ClientEvent *event, CameraOrientation *cam delete event->star_params; } -void Game::handleClientEvent_OverrideDayNigthRatio(ClientEvent *event, - CameraOrientation *cam) +void Game::handleClientEvent_OverrideDayNigthRatio( + ClientEvent *event, CameraOrientation *cam) { client->getEnv().setDayNightRatioOverride( - event->override_day_night_ratio.do_override, - event->override_day_night_ratio.ratio_f * 1000.0f); + event->override_day_night_ratio.do_override, + event->override_day_night_ratio.ratio_f * 1000.0f); } void Game::handleClientEvent_CloudParams(ClientEvent *event, CameraOrientation *cam) @@ -2158,8 +2129,9 @@ void Game::processClientEvents(CameraOrientation *cam) { while (client->hasClientEvents()) { std::unique_ptr<ClientEvent> event(client->getClientEvent()); - FATAL_ERROR_IF(event->type >= CLIENTEVENT_MAX, "Invalid clientevent type"); - const ClientEventHandler& evHandler = clientEventHandler[event->type]; + FATAL_ERROR_IF(event->type >= CLIENTEVENT_MAX, + "Invalid clientevent type"); + const ClientEventHandler &evHandler = clientEventHandler[event->type]; (this->*evHandler.handler)(event.get(), cam); } } @@ -2181,7 +2153,7 @@ void Game::updateChat(f32 dtime, const v2u32 &screensize) // Display all messages in a static text element m_game_ui->setChatText(chat_backend->getRecentChat(), - chat_backend->getRecentBuffer().getLineCount()); + chat_backend->getRecentBuffer().getLineCount()); } void Game::updateCamera(u32 busy_time, f32 dtime) @@ -2201,11 +2173,11 @@ void Game::updateCamera(u32 busy_time, f32 dtime) } ToolCapabilities playeritem_toolcap = - playeritem.getToolCapabilities(itemdef_manager); + playeritem.getToolCapabilities(itemdef_manager); v3s16 old_camera_offset = camera->getOffset(); - if (wasKeyDown(KeyType::CAMERA_MODE) && ! g_settings->getBool("freecam")) { + if (wasKeyDown(KeyType::CAMERA_MODE) && !g_settings->getBool("freecam")) { camera->toggleCameraMode(); updatePlayerCAOVisibility(); } @@ -2244,18 +2216,20 @@ void Game::updatePlayerCAOVisibility() GenericCAO *playercao = player->getCAO(); if (!playercao) return; - playercao->setVisible(camera->getCameraMode() > CAMERA_MODE_FIRST || g_settings->getBool("freecam")); - playercao->setChildrenVisible(camera->getCameraMode() > CAMERA_MODE_FIRST || g_settings->getBool("freecam")); + playercao->setVisible(camera->getCameraMode() > CAMERA_MODE_FIRST || + g_settings->getBool("freecam")); + playercao->setChildrenVisible(camera->getCameraMode() > CAMERA_MODE_FIRST || + g_settings->getBool("freecam")); } void Game::updateSound(f32 dtime) { // Update sound listener v3s16 camera_offset = camera->getOffset(); - sound->updateListener(camera->getCameraNode()->getPosition() + intToFloat(camera_offset, BS), - v3f(0, 0, 0), // velocity - camera->getDirection(), - camera->getCameraNode()->getUpVector()); + sound->updateListener(camera->getCameraNode()->getPosition() + + intToFloat(camera_offset, BS), + v3f(0, 0, 0), // velocity + camera->getDirection(), camera->getCameraNode()->getUpVector()); bool mute_sound = g_settings->getBool("mute_sound"); if (mute_sound) { @@ -2285,13 +2259,12 @@ void Game::updateSound(f32 dtime) soundmaker->m_player_step_sound = nodedef_manager->get(n).sound_footstep; } - void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) { LocalPlayer *player = client->getEnv().getLocalPlayer(); const v3f camera_direction = camera->getDirection(); - const v3s16 camera_offset = camera->getOffset(); + const v3s16 camera_offset = camera->getOffset(); /* Calculate what block is the crosshair pointing to @@ -2302,7 +2275,7 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) const ItemDefinition &selected_def = selected_item.getDefinition(itemdef_manager); f32 d = getToolRange(selected_def, hand_item.getDefinition(itemdef_manager)); - + if (g_settings->getBool("increase_tool_range")) d += 2; if (g_settings->getBool("increase_tool_range_plus")) @@ -2332,18 +2305,17 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) if ((g_settings->getBool("touchtarget")) && (g_touchscreengui)) { shootline = g_touchscreengui->getShootline(); // Scale shootline to the acual distance the player can reach - shootline.end = shootline.start - + shootline.getVector().normalize() * BS * d; + shootline.end = shootline.start + + shootline.getVector().normalize() * BS * d; shootline.start += intToFloat(camera_offset, BS); shootline.end += intToFloat(camera_offset, BS); } #endif - PointedThing pointed = updatePointedThing(shootline, - selected_def.liquids_pointable, - !runData.ldown_for_dig, - camera_offset); + PointedThing pointed = + updatePointedThing(shootline, selected_def.liquids_pointable, + !runData.ldown_for_dig, camera_offset); if (pointed != runData.pointed_old) { infostream << "Pointing at " << pointed.dump() << std::endl; @@ -2363,18 +2335,19 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) if (runData.digging) { if (input->getLeftReleased()) { infostream << "Left button released" - << " (stopped digging)" << std::endl; + << " (stopped digging)" << std::endl; runData.digging = false; } else if (pointed != runData.pointed_old) { - if (pointed.type == POINTEDTHING_NODE - && runData.pointed_old.type == POINTEDTHING_NODE - && pointed.node_undersurface - == runData.pointed_old.node_undersurface) { + if (pointed.type == POINTEDTHING_NODE && + runData.pointed_old.type == POINTEDTHING_NODE && + pointed.node_undersurface == + runData.pointed_old + .node_undersurface) { // Still pointing to the same node, but a different face. // Don't reset. } else { infostream << "Pointing away from node" - << " (stopped digging)" << std::endl; + << " (stopped digging)" << std::endl; runData.digging = false; hud->updateSelectionMesh(camera_offset); } @@ -2400,19 +2373,22 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) soundmaker->m_player_leftpunch_sound.name = ""; // Prepare for repeating, unless we're not supposed to - if ((input->getRightState() || g_settings->getBool("autoplace")) && !g_settings->getBool("safe_dig_and_place")) + if ((input->getRightState() || g_settings->getBool("autoplace")) && + !g_settings->getBool("safe_dig_and_place")) runData.repeat_rightclick_timer += dtime; else runData.repeat_rightclick_timer = 0; if (selected_def.usable && input->getLeftState()) { - if (input->getLeftClicked() && (!client->modsLoaded() - || !client->getScript()->on_item_use(selected_item, pointed))) + if (input->getLeftClicked() && + (!client->modsLoaded() || + !client->getScript()->on_item_use( + selected_item, pointed))) client->interact(INTERACT_USE, pointed); } else if (pointed.type == POINTEDTHING_NODE) { handlePointingAtNode(pointed, selected_item, hand_item, dtime); } else if (pointed.type == POINTEDTHING_OBJECT) { - v3f player_position = player->getPosition(); + v3f player_position = player->getPosition(); handlePointingAtObject(pointed, tool_item, player_position, show_debug); } else if (input->getLeftState()) { // When button is held down in air, show continuous animation @@ -2436,38 +2412,35 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) input->resetRightReleased(); } - -PointedThing Game::updatePointedThing( - const core::line3d<f32> &shootline, - bool liquids_pointable, - bool look_for_object, - const v3s16 &camera_offset) +PointedThing Game::updatePointedThing(const core::line3d<f32> &shootline, + bool liquids_pointable, bool look_for_object, const v3s16 &camera_offset) { std::vector<aabb3f> *selectionboxes = hud->getSelectionBoxes(); selectionboxes->clear(); hud->setSelectedFaceNormal(v3f(0.0, 0.0, 0.0)); - static thread_local const bool show_entity_selectionbox = g_settings->getBool( - "show_entity_selectionbox"); + static thread_local const bool show_entity_selectionbox = + g_settings->getBool("show_entity_selectionbox"); ClientEnvironment &env = client->getEnv(); ClientMap &map = env.getClientMap(); const NodeDefManager *nodedef = map.getNodeDefManager(); - if (g_settings->getBool("killaura")) - handleKillaura(shootline.start, shootline.getLength()); - runData.selected_object = NULL; hud->pointing_at_object = false; - RaycastState s(shootline, look_for_object, liquids_pointable, ! g_settings->getBool("dont_point_nodes")); + RaycastState s(shootline, look_for_object, liquids_pointable, + !g_settings->getBool("dont_point_nodes")); PointedThing result; env.continueRaycast(&s, &result); if (result.type == POINTEDTHING_OBJECT) { hud->pointing_at_object = true; - runData.selected_object = client->getEnv().getActiveObject(result.object_id); + runData.selected_object = + client->getEnv().getActiveObject(result.object_id); aabb3f selection_box; - if (show_entity_selectionbox && runData.selected_object->doShowSelectionBox() && - runData.selected_object->getSelectionBox(&selection_box)) { + if (show_entity_selectionbox && + runData.selected_object->doShowSelectionBox() && + runData.selected_object->getSelectionBox( + &selection_box)) { v3f pos = runData.selected_object->getPosition(); selectionboxes->push_back(aabb3f(selection_box)); hud->setSelectionPos(pos, camera_offset); @@ -2477,22 +2450,21 @@ PointedThing Game::updatePointedThing( MapNode n = map.getNode(result.node_undersurface); std::vector<aabb3f> boxes; n.getSelectionBoxes(nodedef, &boxes, - n.getNeighbors(result.node_undersurface, &map)); + n.getNeighbors(result.node_undersurface, &map)); f32 d = 0.002 * BS; for (std::vector<aabb3f>::const_iterator i = boxes.begin(); - i != boxes.end(); ++i) { + i != boxes.end(); ++i) { aabb3f box = *i; box.MinEdge -= v3f(d, d, d); box.MaxEdge += v3f(d, d, d); selectionboxes->push_back(box); } - hud->setSelectionPos(intToFloat(result.node_undersurface, BS), - camera_offset); - hud->setSelectedFaceNormal(v3f( - result.intersection_normal.X, - result.intersection_normal.Y, - result.intersection_normal.Z)); + hud->setSelectionPos( + intToFloat(result.node_undersurface, BS), camera_offset); + hud->setSelectedFaceNormal(v3f(result.intersection_normal.X, + result.intersection_normal.Y, + result.intersection_normal.Z)); } // Update selection mesh light level and vertex colors @@ -2518,13 +2490,15 @@ PointedThing Game::updatePointedThing( // Modify final color a bit with time u32 timer = porting::getTimeMs() % 5000; - float timerf = (float) (irr::core::PI * ((timer / 2500.0) - 0.5)); + float timerf = (float)(irr::core::PI * ((timer / 2500.0) - 0.5)); float sin_r = 0.08f * std::sin(timerf); float sin_g = 0.08f * std::sin(timerf + irr::core::PI * 0.5f); float sin_b = 0.08f * std::sin(timerf + irr::core::PI); c.setRed(core::clamp(core::round32(c.getRed() * (0.8 + sin_r)), 0, 255)); - c.setGreen(core::clamp(core::round32(c.getGreen() * (0.8 + sin_g)), 0, 255)); - c.setBlue(core::clamp(core::round32(c.getBlue() * (0.8 + sin_b)), 0, 255)); + c.setGreen(core::clamp( + core::round32(c.getGreen() * (0.8 + sin_g)), 0, 255)); + c.setBlue(core::clamp( + core::round32(c.getBlue() * (0.8 + sin_b)), 0, 255)); // Set mesh final color hud->setSelectionMeshColor(c); @@ -2532,22 +2506,6 @@ PointedThing Game::updatePointedThing( return result; } -void Game::handleKillaura(v3f origin, f32 max_d) -{ - ClientEnvironment &env = client->getEnv(); - std::vector<DistanceSortedActiveObject> allObjects; - env.getActiveObjects(origin, max_d, allObjects); - for (const auto &allObject : allObjects) { - ClientActiveObject *obj = allObject.obj; - s16 id = obj->getId(); - aabb3f selection_box; - if (! obj->getSelectionBox(&selection_box)) - continue; - PointedThing pointed(id, v3f(0,0,0), v3s16(0,0,0), 0); - client->interact(INTERACT_START_DIGGING, pointed); - } -} - void Game::handlePointingAtNothing(const ItemStack &playerItem) { infostream << "Right Clicked in Air" << std::endl; @@ -2556,9 +2514,8 @@ void Game::handlePointingAtNothing(const ItemStack &playerItem) client->interact(INTERACT_ACTIVATE, fauxPointed); } - void Game::handlePointingAtNode(const PointedThing &pointed, - const ItemStack &selected_item, const ItemStack &hand_item, f32 dtime) + const ItemStack &selected_item, const ItemStack &hand_item, f32 dtime) { v3s16 nodepos = pointed.node_undersurface; v3s16 neighbourpos = pointed.node_abovesurface; @@ -2569,10 +2526,10 @@ void Game::handlePointingAtNode(const PointedThing &pointed, ClientMap &map = client->getEnv().getClientMap(); - if (((runData.nodig_delay_timer <= 0.0 || g_settings->getBool("fastdig")) && (input->getLeftState() || g_settings->getBool("autodig")) - && !runData.digging_blocked - && client->checkPrivilege("interact")) - ) { + if (((runData.nodig_delay_timer <= 0.0 || g_settings->getBool("fastdig")) && + (input->getLeftState() || g_settings->getBool("autodig")) && + !runData.digging_blocked && + client->checkPrivilege("interact"))) { handleDigging(pointed, nodepos, selected_item, hand_item, dtime); } @@ -2580,25 +2537,30 @@ void Game::handlePointingAtNode(const PointedThing &pointed, NodeMetadata *meta = map.getNodeMetadata(nodepos); if (meta) { - m_game_ui->setInfoText(unescape_translate(utf8_to_wide( - meta->getString("infotext")))); + m_game_ui->setInfoText(unescape_translate( + utf8_to_wide(meta->getString("infotext")))); } else { MapNode n = map.getNode(nodepos); if (nodedef_manager->get(n).tiledef[0].name == "unknown_node.png") { - m_game_ui->setInfoText(L"Unknown node: " + - utf8_to_wide(nodedef_manager->get(n).name)); + m_game_ui->setInfoText( + L"Unknown node: " + + utf8_to_wide(nodedef_manager->get(n).name)); } } - if ((input->getRightState() || g_settings->getBool("autoplace")) && + if ((input->getRightState() || g_settings->getBool("autoplace")) && (input->getRightClicked() || - (runData.repeat_rightclick_timer >= (g_settings->getBool("fastplace") ? 0 : m_repeat_right_click_time))) && + (runData.repeat_rightclick_timer >= + (g_settings->getBool("fastplace") + ? 0 + : m_repeat_right_click_time))) && client->checkPrivilege("interact")) { runData.repeat_rightclick_timer = 0; infostream << "Ground right-clicked" << std::endl; - camera->setDigging(1); // right click animation (always shown for feedback) + camera->setDigging( + 1); // right click animation (always shown for feedback) soundmaker->m_player_rightpunch_sound = SimpleSoundSpec(); @@ -2607,8 +2569,8 @@ void Game::handlePointingAtNode(const PointedThing &pointed, // And also set the sound and send the interact // But first check for meta formspec and rightclickable auto &def = selected_item.getDefinition(itemdef_manager); - bool placed = nodePlacement(def, selected_item, nodepos, neighbourpos, - pointed, meta); + bool placed = nodePlacement( + def, selected_item, nodepos, neighbourpos, pointed, meta); if (placed && client->modsLoaded()) client->getScript()->on_placenode(pointed, def); @@ -2616,8 +2578,9 @@ void Game::handlePointingAtNode(const PointedThing &pointed, } bool Game::nodePlacement(const ItemDefinition &selected_def, - const ItemStack &selected_item, const v3s16 &nodepos, const v3s16 &neighbourpos, - const PointedThing &pointed, const NodeMetadata *meta) + const ItemStack &selected_item, const v3s16 &nodepos, + const v3s16 &neighbourpos, const PointedThing &pointed, + const NodeMetadata *meta) { std::string prediction = selected_def.node_placement_prediction; const NodeDefManager *nodedef = client->ndef(); @@ -2632,8 +2595,8 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, } // formspec in meta - if (meta && !meta->getString("formspec").empty() && !input->isRandom() - && !isKeyDown(KeyType::SNEAK)) { + if (meta && !meta->getString("formspec").empty() && !input->isRandom() && + !isKeyDown(KeyType::SNEAK)) { // on_rightclick callbacks are called anyway if (nodedef_manager->get(map.getNode(nodepos)).rightclickable) client->interact(INTERACT_PLACE, pointed); @@ -2644,12 +2607,12 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, inventoryloc.setNodeMeta(nodepos); NodeMetadataFormSource *fs_src = new NodeMetadataFormSource( - &client->getEnv().getClientMap(), nodepos); + &client->getEnv().getClientMap(), nodepos); TextDest *txt_dst = new TextDestNodeMetadata(nodepos, client); auto *&formspec = m_game_ui->updateFormspec(""); GUIFormSpecMenu::create(formspec, client, &input->joystick, fs_src, - txt_dst, client->getFormspecPrepend()); + txt_dst, client->getFormspecPrepend()); formspec->setFormSpec(meta->getString("formspec"), inventoryloc); return false; @@ -2657,15 +2620,14 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, // on_rightclick callback if (prediction.empty() || (nodedef->get(node).rightclickable && - !isKeyDown(KeyType::SNEAK))) { + !isKeyDown(KeyType::SNEAK))) { // Report to server client->interact(INTERACT_PLACE, pointed); return false; } - verbosestream << "Node placement prediction for " - << selected_def.name << " is " - << prediction << std::endl; + verbosestream << "Node placement prediction for " << selected_def.name << " is " + << prediction << std::endl; v3s16 p = neighbourpos; // Place inside node itself if buildable_to @@ -2689,9 +2651,8 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, if (!found) { errorstream << "Node placement prediction failed for " - << selected_def.name << " (places " - << prediction - << ") - Name not known" << std::endl; + << selected_def.name << " (places " << prediction + << ") - Name not known" << std::endl; // Handle this as if prediction was empty // Report to server client->interact(INTERACT_PLACE, pointed); @@ -2718,7 +2679,9 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, if (predicted_f.param_type_2 == CPT2_FACEDIR || predicted_f.param_type_2 == CPT2_COLORED_FACEDIR) { - v3s16 dir = nodepos - floatToInt(client->getEnv().getLocalPlayer()->getPosition(), BS); + v3s16 dir = nodepos - + floatToInt(client->getEnv().getLocalPlayer()->getPosition(), + BS); if (abs(dir.X) > abs(dir.Z)) { param2 = dir.X < 0 ? 3 : 1; @@ -2729,15 +2692,15 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, assert(param2 <= 5); - //Check attachment if node is in group attached_node - if (((ItemGroupList) predicted_f.groups)["attached_node"] != 0) { + // Check attachment if node is in group attached_node + if (((ItemGroupList)predicted_f.groups)["attached_node"] != 0) { static v3s16 wallmounted_dirs[8] = { - v3s16(0, 1, 0), - v3s16(0, -1, 0), - v3s16(1, 0, 0), - v3s16(-1, 0, 0), - v3s16(0, 0, 1), - v3s16(0, 0, -1), + v3s16(0, 1, 0), + v3s16(0, -1, 0), + v3s16(1, 0, 0), + v3s16(-1, 0, 0), + v3s16(0, 0, 1), + v3s16(0, 0, -1), }; v3s16 pp; @@ -2755,11 +2718,11 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, } // Apply color - if ((predicted_f.param_type_2 == CPT2_COLOR - || predicted_f.param_type_2 == CPT2_COLORED_FACEDIR - || predicted_f.param_type_2 == CPT2_COLORED_WALLMOUNTED)) { - const std::string &indexstr = selected_item.metadata.getString( - "palette_index", 0); + if ((predicted_f.param_type_2 == CPT2_COLOR || + predicted_f.param_type_2 == CPT2_COLORED_FACEDIR || + predicted_f.param_type_2 == CPT2_COLORED_WALLMOUNTED)) { + const std::string &indexstr = + selected_item.metadata.getString("palette_index", 0); if (!indexstr.empty()) { s32 index = mystoi(indexstr); if (predicted_f.param_type_2 == CPT2_COLOR) { @@ -2784,10 +2747,13 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, // NOTE: This is to be eventually implemented by a mod as client-side Lua if (!nodedef->get(n).walkable || g_settings->getBool("enable_build_where_you_stand") || - (client->checkPrivilege("noclip") && g_settings->getBool("noclip")) || + (client->checkPrivilege("noclip") && + g_settings->getBool("noclip")) || (nodedef->get(n).walkable && - neighbourpos != player->getStandingNodePos() + v3s16(0, 1, 0) && - neighbourpos != player->getStandingNodePos() + v3s16(0, 2, 0))) { + neighbourpos != player->getStandingNodePos() + + v3s16(0, 1, 0) && + neighbourpos != player->getStandingNodePos() + + v3s16(0, 2, 0))) { // This triggers the required mesh update too client->addNode(p, n); // Report to server @@ -2796,24 +2762,24 @@ bool Game::nodePlacement(const ItemDefinition &selected_def, soundmaker->m_player_rightpunch_sound = selected_def.sound_place; return true; } else { - soundmaker->m_player_rightpunch_sound = selected_def.sound_place_failed; + soundmaker->m_player_rightpunch_sound = + selected_def.sound_place_failed; return false; } } catch (InvalidPositionException &e) { errorstream << "Node placement prediction failed for " - << selected_def.name << " (places " - << prediction - << ") - Position not loaded" << std::endl; + << selected_def.name << " (places " << prediction + << ") - Position not loaded" << std::endl; soundmaker->m_player_rightpunch_sound = selected_def.sound_place_failed; return false; } } -void Game::handlePointingAtObject(const PointedThing &pointed, - const ItemStack &tool_item, const v3f &player_position, bool show_debug) +void Game::handlePointingAtObject(const PointedThing &pointed, const ItemStack &tool_item, + const v3f &player_position, bool show_debug) { std::wstring infotext = unescape_translate( - utf8_to_wide(runData.selected_object->infoText())); + utf8_to_wide(runData.selected_object->infoText())); if (show_debug) { if (!infotext.empty()) { @@ -2828,7 +2794,8 @@ void Game::handlePointingAtObject(const PointedThing &pointed, bool do_punch = false; bool do_punch_damage = false; - if (runData.object_hit_delay_timer <= 0.0 || g_settings->getBool("spamclick")) { + if (runData.object_hit_delay_timer <= 0.0 || + g_settings->getBool("spamclick")) { do_punch = true; do_punch_damage = true; runData.object_hit_delay_timer = object_hit_delay; @@ -2857,11 +2824,10 @@ void Game::handlePointingAtObject(const PointedThing &pointed, } } else if (input->getRightClicked()) { infostream << "Right-clicked object" << std::endl; - client->interact(INTERACT_PLACE, pointed); // place + client->interact(INTERACT_PLACE, pointed); // place } } - void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos, const ItemStack &selected_item, const ItemStack &hand_item, f32 dtime) { @@ -2889,13 +2855,14 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos, runData.dig_time_complete = params.time; if (m_cache_enable_particles) { - const ContentFeatures &features = client->getNodeDefManager()->get(n); - client->getParticleManager()->addNodeParticle(client, - player, nodepos, n, features); + const ContentFeatures &features = + client->getNodeDefManager()->get(n); + client->getParticleManager()->addNodeParticle( + client, player, nodepos, n, features); } } - - if(g_settings->getBool("instant_break")) { + + if (g_settings->getBool("instant_break")) { runData.dig_time_complete = 0; runData.dig_instantly = true; } @@ -2910,9 +2877,8 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos, } if (!runData.dig_instantly) { - runData.dig_index = (float)crack_animation_length - * runData.dig_time - / runData.dig_time_complete; + runData.dig_index = (float)crack_animation_length * runData.dig_time / + runData.dig_time_complete; } else { // This is for e.g. torches runData.dig_index = crack_animation_length; @@ -2936,8 +2902,8 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos, // Don't show cracks if not diggable if (runData.dig_time_complete >= 100000.0) { } else if (runData.dig_index < crack_animation_length) { - //TimeTaker timer("client.setTempMod"); - //infostream<<"dig_index="<<dig_index<<std::endl; + // TimeTaker timer("client.setTempMod"); + // infostream<<"dig_index="<<dig_index<<std::endl; client->setCrack(runData.dig_index, nodepos); } else { infostream << "Digging completed" << std::endl; @@ -2962,8 +2928,8 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos, bool is_valid_position; MapNode wasnode = map.getNode(nodepos, &is_valid_position); if (is_valid_position) { - if (client->modsLoaded() && - client->getScript()->on_dignode(nodepos, wasnode)) { + if (client->modsLoaded() && client->getScript()->on_dignode( + nodepos, wasnode)) { return; } @@ -2972,7 +2938,8 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos, client->removeNode(nodepos); } else if (!f.node_dig_prediction.empty()) { content_t id; - bool found = client->ndef()->getId(f.node_dig_prediction, id); + bool found = client->ndef()->getId( + f.node_dig_prediction, id); if (found) client->addNode(nodepos, id, true); } @@ -2983,12 +2950,11 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos, if (m_cache_enable_particles) { const ContentFeatures &features = - client->getNodeDefManager()->get(wasnode); - client->getParticleManager()->addDiggingParticles(client, - player, nodepos, wasnode, features); + client->getNodeDefManager()->get(wasnode); + client->getParticleManager()->addDiggingParticles( + client, player, nodepos, wasnode, features); } - // Send event to trigger sound client->getEventManager()->put(new NodeDugEvent(nodepos, wasnode)); } @@ -3000,10 +2966,9 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos, client->setCrack(-1, nodepos); } - camera->setDigging(0); // left click animation + camera->setDigging(0); // left click animation } - void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, const CameraOrientation &cam) { @@ -3033,10 +2998,13 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, sunlight_seen = true; } else { float old_brightness = sky->getBrightness(); - direct_brightness = client->getEnv().getClientMap() - .getBackgroundBrightness(MYMIN(runData.fog_range * 1.2, 60 * BS), - daynight_ratio, (int)(old_brightness * 255.5), &sunlight_seen) - / 255.0; + direct_brightness = + client->getEnv().getClientMap().getBackgroundBrightness( + MYMIN(runData.fog_range * 1.2, 60 * BS), + daynight_ratio, + (int)(old_brightness * 255.5), + &sunlight_seen) / + 255.0; } float time_of_day_smooth = runData.time_of_day_smooth; @@ -3051,17 +3019,16 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, time_of_day_smooth = time_of_day; if (time_of_day_smooth > 0.8 && time_of_day < 0.2) - time_of_day_smooth = time_of_day_smooth * (1.0 - todsm) - + (time_of_day + 1.0) * todsm; + time_of_day_smooth = time_of_day_smooth * (1.0 - todsm) + + (time_of_day + 1.0) * todsm; else - time_of_day_smooth = time_of_day_smooth * (1.0 - todsm) - + time_of_day * todsm; + time_of_day_smooth = + time_of_day_smooth * (1.0 - todsm) + time_of_day * todsm; runData.time_of_day_smooth = time_of_day_smooth; - sky->update(time_of_day_smooth, time_brightness, direct_brightness, - sunlight_seen, camera->getCameraMode(), player->getYaw(), - player->getPitch()); + sky->update(time_of_day_smooth, time_brightness, direct_brightness, sunlight_seen, + camera->getCameraMode(), player->getYaw(), player->getPitch()); /* Update clouds @@ -3072,20 +3039,26 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, clouds->step(dtime); // camera->getPosition is not enough for 3rd person views v3f camera_node_position = camera->getCameraNode()->getPosition(); - v3s16 camera_offset = camera->getOffset(); - camera_node_position.X = camera_node_position.X + camera_offset.X * BS; - camera_node_position.Y = camera_node_position.Y + camera_offset.Y * BS; - camera_node_position.Z = camera_node_position.Z + camera_offset.Z * BS; - clouds->update(camera_node_position, - sky->getCloudColor()); + v3s16 camera_offset = camera->getOffset(); + camera_node_position.X = + camera_node_position.X + camera_offset.X * BS; + camera_node_position.Y = + camera_node_position.Y + camera_offset.Y * BS; + camera_node_position.Z = + camera_node_position.Z + camera_offset.Z * BS; + clouds->update(camera_node_position, sky->getCloudColor()); if (clouds->isCameraInsideCloud() && m_cache_enable_fog) { // if inside clouds, and fog enabled, use that as sky // color(s) - video::SColor clouds_dark = clouds->getColor() - .getInterpolated(video::SColor(255, 0, 0, 0), 0.9); + video::SColor clouds_dark = + clouds->getColor().getInterpolated( + video::SColor(255, 0, 0, + 0), + 0.9); sky->overrideColors(clouds_dark, clouds->getColor()); sky->setInClouds(true); - runData.fog_range = std::fmin(runData.fog_range * 0.5f, 32.0f * BS); + runData.fog_range = std::fmin( + runData.fog_range * 0.5f, 32.0f * BS); // do not draw clouds after all clouds->setVisible(false); } @@ -3104,24 +3077,17 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, */ if (m_cache_enable_fog) { - driver->setFog( - sky->getBgColor(), - video::EFT_FOG_LINEAR, + driver->setFog(sky->getBgColor(), video::EFT_FOG_LINEAR, runData.fog_range * m_cache_fog_start, - runData.fog_range * 1.0, - 0.01, + runData.fog_range * 1.0, 0.01, false, // pixel fog - true // range fog + true // range fog ); } else { - driver->setFog( - sky->getBgColor(), - video::EFT_FOG_LINEAR, - 100000 * BS, - 110000 * BS, - 0.01f, + driver->setFog(sky->getBgColor(), video::EFT_FOG_LINEAR, 100000 * BS, + 110000 * BS, 0.01f, false, // pixel fog - false // range fog + false // range fog ); } @@ -3154,15 +3120,17 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, runData.update_draw_list_timer += dtime; v3f camera_direction = camera->getDirection(); - if (runData.update_draw_list_timer >= 0.2 - || runData.update_draw_list_last_cam_dir.getDistanceFrom(camera_direction) > 0.2 - || m_camera_offset_changed) { + if (runData.update_draw_list_timer >= 0.2 || + runData.update_draw_list_last_cam_dir.getDistanceFrom( + camera_direction) > 0.2 || + m_camera_offset_changed) { runData.update_draw_list_timer = 0; client->getEnv().getClientMap().updateDrawList(); runData.update_draw_list_last_cam_dir = camera_direction; } - m_game_ui->update(*stats, client, draw_control, cam, runData.pointed_old, gui_chat_console, dtime); + m_game_ui->update(*stats, client, draw_control, cam, runData.pointed_old, + gui_chat_console, dtime); /* make sure menu is on top @@ -3181,7 +3149,9 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, auto &loc = formspec->getFormspecLocation(); if (loc.type == InventoryLocation::NODEMETA) { - NodeMetadata *meta = client->getEnv().getClientMap().getNodeMetadata(loc.p); + NodeMetadata *meta = + client->getEnv().getClientMap().getNodeMetadata( + loc.p); if (!meta || meta->getString("formspec").empty()) { formspec->quitMenu(); break; @@ -3201,11 +3171,10 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, driver->beginScene(true, true, skycolor); bool draw_wield_tool = (m_game_ui->m_flags.show_hud && - (player->hud_flags & HUD_FLAG_WIELDITEM_VISIBLE) && - (camera->getCameraMode() == CAMERA_MODE_FIRST)); - bool draw_crosshair = ( - (player->hud_flags & HUD_FLAG_CROSSHAIR_VISIBLE) && - (camera->getCameraMode() != CAMERA_MODE_THIRD_FRONT)); + (player->hud_flags & HUD_FLAG_WIELDITEM_VISIBLE) && + (camera->getCameraMode() == CAMERA_MODE_FIRST)); + bool draw_crosshair = ((player->hud_flags & HUD_FLAG_CROSSHAIR_VISIBLE) && + (camera->getCameraMode() != CAMERA_MODE_THIRD_FRONT)); #ifdef HAVE_TOUCHSCREENGUI try { draw_crosshair = !g_settings->getBool("touchtarget"); @@ -3213,7 +3182,9 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, } #endif RenderingEngine::draw_scene(skycolor, m_game_ui->m_flags.show_hud, - m_game_ui->m_flags.show_minimap, draw_wield_tool, draw_crosshair, g_settings->getBool("enable_tracers"), g_settings->getBool("enable_esp")); + m_game_ui->m_flags.show_minimap, draw_wield_tool, draw_crosshair, + g_settings->getBool("enable_tracers"), + g_settings->getBool("enable_esp")); /* Profiler graph @@ -3225,16 +3196,21 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, 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); - + if (!gui_chat_console->isOpen()) { + if (m_game_ui->m_flags.show_cheat_menu) + m_cheat_menu->draw(driver, m_game_ui->m_flags.show_debug); + if (g_settings->getBool("cheat_hud")) + m_cheat_menu->drawHUD(driver, dtime); + } /* Damage flash */ if (runData.damage_flash > 0.0f) { video::SColor color(runData.damage_flash, 180, 0, 0); - if (! g_settings->getBool("no_hurt_cam")) - 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; } @@ -3260,7 +3236,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, /* End scene */ - + driver->endScene(); stats->drawtime = tt_draw.stop(true); @@ -3276,8 +3252,6 @@ inline void Game::updateProfilerGraphs(ProfilerGraph *graph) graph->put(values); } - - /**************************************************************************** Misc ****************************************************************************/ @@ -3291,14 +3265,15 @@ inline void Game::limitFps(FpsControl *fps_timings, f32 *dtime) u32 time = device->getTimer()->getTime(); u32 last_time = fps_timings->last_time; - if (time > last_time) // Make sure time hasn't overflowed + if (time > last_time) // Make sure time hasn't overflowed fps_timings->busy_time = time - last_time; else fps_timings->busy_time = 0; - u32 frametime_min = 1000 / (g_menumgr.pausesGame() - ? g_settings->getFloat("pause_fps_max") - : g_settings->getFloat("fps_max")); + u32 frametime_min = + 1000 / + (g_menumgr.pausesGame() ? g_settings->getFloat("pause_fps_max") + : g_settings->getFloat("fps_max")); if (fps_timings->busy_time < frametime_min) { fps_timings->sleep_time = frametime_min - fps_timings->busy_time; @@ -3316,7 +3291,7 @@ inline void Game::limitFps(FpsControl *fps_timings, f32 *dtime) device->getTimer()->tick(); // Update device timer time = device->getTimer()->getTime(); - if (time > last_time) // Make sure last_time hasn't overflowed + if (time > last_time) // Make sure last_time hasn't overflowed *dtime = (time - last_time) / 1000.0; else *dtime = 0; @@ -3327,8 +3302,8 @@ inline void Game::limitFps(FpsControl *fps_timings, f32 *dtime) void Game::showOverlayMessage(const char *msg, float dtime, int percent, bool draw_clouds) { const wchar_t *wmsg = wgettext(msg); - RenderingEngine::draw_load_screen(wmsg, guienv, texture_src, dtime, percent, - draw_clouds); + RenderingEngine::draw_load_screen( + wmsg, guienv, texture_src, dtime, percent, draw_clouds); delete[] wmsg; } @@ -3339,12 +3314,12 @@ void Game::settingChangedCallback(const std::string &setting_name, void *data) void Game::updateAllMapBlocksCallback(const std::string &setting_name, void *data) { - ((Game *) data)->client->updateAllMapBlocks(); + ((Game *)data)->client->updateAllMapBlocks(); } void Game::freecamChangedCallback(const std::string &setting_name, void *data) { - Game *game = (Game *) data; + Game *game = (Game *)data; LocalPlayer *player = game->client->getEnv().getLocalPlayer(); if (g_settings->getBool("freecam")) { game->camera->setCameraMode(CAMERA_MODE_FIRST); @@ -3357,23 +3332,25 @@ void Game::freecamChangedCallback(const std::string &setting_name, void *data) void Game::readSettings() { - m_cache_doubletap_jump = g_settings->getBool("doubletap_jump"); - m_cache_enable_clouds = g_settings->getBool("enable_clouds"); - m_cache_enable_joysticks = g_settings->getBool("enable_joysticks"); - m_cache_enable_particles = g_settings->getBool("enable_particles"); - m_cache_enable_fog = g_settings->getBool("enable_fog"); - m_cache_mouse_sensitivity = g_settings->getFloat("mouse_sensitivity"); - m_cache_joystick_frustum_sensitivity = g_settings->getFloat("joystick_frustum_sensitivity"); - m_repeat_right_click_time = g_settings->getFloat("repeat_rightclick_time"); + m_cache_doubletap_jump = g_settings->getBool("doubletap_jump"); + m_cache_enable_clouds = g_settings->getBool("enable_clouds"); + m_cache_enable_joysticks = g_settings->getBool("enable_joysticks"); + m_cache_enable_particles = g_settings->getBool("enable_particles"); + m_cache_enable_fog = g_settings->getBool("enable_fog"); + m_cache_mouse_sensitivity = g_settings->getFloat("mouse_sensitivity"); + m_cache_joystick_frustum_sensitivity = + g_settings->getFloat("joystick_frustum_sensitivity"); + m_repeat_right_click_time = g_settings->getFloat("repeat_rightclick_time"); - m_cache_enable_noclip = g_settings->getBool("noclip"); - m_cache_enable_free_move = g_settings->getBool("free_move"); + m_cache_enable_noclip = g_settings->getBool("noclip"); + m_cache_enable_free_move = g_settings->getBool("free_move"); - m_cache_fog_start = g_settings->getFloat("fog_start"); + m_cache_fog_start = g_settings->getFloat("fog_start"); m_cache_cam_smoothing = 0; if (g_settings->getBool("cinematic")) - m_cache_cam_smoothing = 1 - g_settings->getFloat("cinematic_camera_smoothing"); + m_cache_cam_smoothing = + 1 - g_settings->getFloat("cinematic_camera_smoothing"); else m_cache_cam_smoothing = 1 - g_settings->getFloat("camera_smoothing"); @@ -3395,41 +3372,40 @@ void Game::extendedResourceCleanup() // Extended resource accounting infostream << "Irrlicht resources after cleanup:" << std::endl; infostream << "\tRemaining meshes : " - << RenderingEngine::get_mesh_cache()->getMeshCount() << std::endl; - infostream << "\tRemaining textures : " - << driver->getTextureCount() << std::endl; + << RenderingEngine::get_mesh_cache()->getMeshCount() << std::endl; + infostream << "\tRemaining textures : " << driver->getTextureCount() << std::endl; for (unsigned int i = 0; i < driver->getTextureCount(); i++) { irr::video::ITexture *texture = driver->getTextureByIndex(i); infostream << "\t\t" << i << ":" << texture->getName().getPath().c_str() - << std::endl; + << std::endl; } clearTextureNameCache(); - infostream << "\tRemaining materials: " - << driver-> getMaterialRendererCount() - << " (note: irrlicht doesn't support removing renderers)" << std::endl; + infostream << "\tRemaining materials: " << driver->getMaterialRendererCount() + << " (note: irrlicht doesn't support removing renderers)" << std::endl; } void Game::showDeathFormspec() { - static std::string formspec_str = - std::string("formspec_version[1]") + - SIZE_TAG - "bgcolor[#320000b4;true]" - "label[4.85,1.35;" + gettext("You died") + "]" - "button_exit[4,3;3,0.5;btn_respawn;" + gettext("Respawn") + "]" - ; + static std::string formspec_str = std::string("formspec_version[1]") + + SIZE_TAG "bgcolor[#320000b4;true]" + "label[4.85,1.35;" + + gettext("You died") + + "]" + "button_exit[4,3;3,0.5;btn_respawn;" + + gettext("Respawn") + "]"; /* Create menu */ /* Note: FormspecFormSource and LocalFormspecHandler * * are deleted by guiFormSpecMenu */ FormspecFormSource *fs_src = new FormspecFormSource(formspec_str); - LocalFormspecHandler *txt_dst = new LocalFormspecHandler("MT_DEATH_SCREEN", client); + LocalFormspecHandler *txt_dst = + new LocalFormspecHandler("MT_DEATH_SCREEN", client); auto *&formspec = m_game_ui->getFormspecGUI(); - GUIFormSpecMenu::create(formspec, client, &input->joystick, - fs_src, txt_dst, client->getFormspecPrepend()); + GUIFormSpecMenu::create(formspec, client, &input->joystick, fs_src, txt_dst, + client->getFormspecPrepend()); formspec->setFocus("btn_respawn"); } @@ -3437,59 +3413,53 @@ void Game::showDeathFormspec() void Game::showPauseMenu() { #ifdef __ANDROID__ - static const std::string control_text = strgettext("Default Controls:\n" - "No menu visible:\n" - "- single tap: button activate\n" - "- double tap: place/use\n" - "- slide finger: look around\n" - "Menu/Inventory visible:\n" - "- double tap (outside):\n" - " -->close\n" - "- touch stack, touch slot:\n" - " --> move stack\n" - "- touch&drag, tap 2nd finger\n" - " --> place single item to slot\n" - ); + static const std::string control_text = + strgettext("Default Controls:\n" + "No menu visible:\n" + "- single tap: button activate\n" + "- double tap: place/use\n" + "- slide finger: look around\n" + "Menu/Inventory visible:\n" + "- double tap (outside):\n" + " -->close\n" + "- touch stack, touch slot:\n" + " --> move stack\n" + "- touch&drag, tap 2nd finger\n" + " --> place single item to slot\n"); #else - static const std::string control_text_template = strgettext("Controls:\n" - "- %s: move forwards\n" - "- %s: move backwards\n" - "- %s: move left\n" - "- %s: move right\n" - "- %s: jump/climb\n" - "- %s: sneak/go down\n" - "- %s: drop item\n" - "- %s: inventory\n" - "- %s: enderchest\n" - "- Mouse: turn/look\n" - "- Mouse left: dig/punch\n" - "- Mouse right: place/use\n" - "- Mouse wheel: select item\n" - "- %s: chat\n" - "- %s: Killaura\n" - "- %s: Freecam\n" - "- %s: Scaffold\n" - "- %s: NextItem\n" - ); - - char control_text_buf[600]; - - porting::mt_snprintf(control_text_buf, sizeof(control_text_buf), control_text_template.c_str(), - GET_KEY_NAME(keymap_forward), - GET_KEY_NAME(keymap_backward), - GET_KEY_NAME(keymap_left), - GET_KEY_NAME(keymap_right), - GET_KEY_NAME(keymap_jump), - GET_KEY_NAME(keymap_sneak), - GET_KEY_NAME(keymap_drop), - GET_KEY_NAME(keymap_inventory), - GET_KEY_NAME(keymap_enderchest), - GET_KEY_NAME(keymap_chat), - GET_KEY_NAME(keymap_toggle_killaura), + static const std::string control_text_template = + strgettext("Controls:\n" + "- %s: move forwards\n" + "- %s: move backwards\n" + "- %s: move left\n" + "- %s: move right\n" + "- %s: jump/climb\n" + "- %s: sneak/go down\n" + "- %s: drop item\n" + "- %s: inventory\n" + "- %s: enderchest\n" + "- Mouse: turn/look\n" + "- Mouse left: dig/punch\n" + "- Mouse right: place/use\n" + "- Mouse wheel: select item\n" + "- %s: chat\n" + "- %s: Killaura\n" + "- %s: Freecam\n" + "- %s: Scaffold\n" + "- %s: NextItem\n"); + + char control_text_buf[600]; + + porting::mt_snprintf(control_text_buf, sizeof(control_text_buf), + control_text_template.c_str(), GET_KEY_NAME(keymap_forward), + GET_KEY_NAME(keymap_backward), GET_KEY_NAME(keymap_left), + GET_KEY_NAME(keymap_right), GET_KEY_NAME(keymap_jump), + GET_KEY_NAME(keymap_sneak), GET_KEY_NAME(keymap_drop), + GET_KEY_NAME(keymap_inventory), GET_KEY_NAME(keymap_enderchest), + GET_KEY_NAME(keymap_chat), GET_KEY_NAME(keymap_toggle_killaura), GET_KEY_NAME(keymap_toggle_freecam), GET_KEY_NAME(keymap_toggle_scaffold), - GET_KEY_NAME(keymap_toggle_next_item) - ); + GET_KEY_NAME(keymap_toggle_next_item)); std::string control_text = std::string(control_text_buf); str_formspec_escape(control_text); @@ -3498,13 +3468,12 @@ void Game::showPauseMenu() float ypos = simple_singleplayer_mode ? 0.7f : 0.1f; std::ostringstream os; - os << "formspec_version[1]" << SIZE_TAG - << "button_exit[4," << (ypos++) << ";3,0.5;btn_continue;" - << strgettext("Continue") << "]"; + os << "formspec_version[1]" << SIZE_TAG << "button_exit[4," << (ypos++) + << ";3,0.5;btn_continue;" << strgettext("Continue") << "]"; if (!simple_singleplayer_mode) { os << "button_exit[4," << (ypos++) << ";3,0.5;btn_change_password;" - << strgettext("Change Password") << "]"; + << strgettext("Change Password") << "]"; } else { os << "field[4.95,0;5,1.5;;" << strgettext("Game paused") << ";]"; } @@ -3513,27 +3482,27 @@ void Game::showPauseMenu() #if USE_SOUND if (g_settings->getBool("enable_sound")) { os << "button_exit[4," << (ypos++) << ";3,0.5;btn_sound;" - << strgettext("Sound Volume") << "]"; + << strgettext("Sound Volume") << "]"; } #endif - os << "button_exit[4," << (ypos++) << ";3,0.5;btn_key_config;" - << strgettext("Change Keys") << "]"; + os << "button_exit[4," << (ypos++) << ";3,0.5;btn_key_config;" + << strgettext("Change Keys") << "]"; #endif - os << "button_exit[4," << (ypos++) << ";3,0.5;btn_exit_menu;" - << strgettext("Exit to Menu") << "]"; - os << "button_exit[4," << (ypos++) << ";3,0.5;btn_exit_os;" - << strgettext("Exit to OS") << "]" - << "textarea[7.5,0.25;3.9,6.25;;" << control_text << ";]" - << "textarea[0.4,0.25;3.9,6.25;;" << PROJECT_NAME_C " " VERSION_STRING "\n" - << "\n" - << strgettext("Game info:") << "\n"; + os << "button_exit[4," << (ypos++) << ";3,0.5;btn_exit_menu;" + << strgettext("Exit to Menu") << "]"; + os << "button_exit[4," << (ypos++) << ";3,0.5;btn_exit_os;" + << strgettext("Exit to OS") << "]" + << "textarea[7.5,0.25;3.9,6.25;;" << control_text << ";]" + << "textarea[0.4,0.25;3.9,6.25;;" << PROJECT_NAME_C " " VERSION_STRING "\n" + << "\n" + << strgettext("Game info:") << "\n"; const std::string &address = client->getAddressName(); static const std::string mode = strgettext("- Mode: "); if (!simple_singleplayer_mode) { Address serverAddress = client->getServerAddress(); if (!address.empty()) { os << mode << strgettext("Remote server") << "\n" - << strgettext("- Address: ") << address; + << strgettext("- Address: ") << address; } else { os << mode << strgettext("Hosting server"); } @@ -3544,21 +3513,24 @@ void Game::showPauseMenu() if (simple_singleplayer_mode || address.empty()) { static const std::string on = strgettext("On"); static const std::string off = strgettext("Off"); - const std::string &damage = g_settings->getBool("enable_damage") ? on : off; - const std::string &creative = g_settings->getBool("creative_mode") ? on : off; - const std::string &announced = g_settings->getBool("server_announce") ? on : off; + const std::string &damage = + g_settings->getBool("enable_damage") ? on : off; + const std::string &creative = + g_settings->getBool("creative_mode") ? on : off; + const std::string &announced = + g_settings->getBool("server_announce") ? on : off; os << strgettext("- Damage: ") << damage << "\n" - << strgettext("- Creative Mode: ") << creative << "\n"; + << strgettext("- Creative Mode: ") << creative << "\n"; if (!simple_singleplayer_mode) { - const std::string &pvp = g_settings->getBool("enable_pvp") ? on : off; + const std::string &pvp = + g_settings->getBool("enable_pvp") ? on : off; //~ PvP = Player versus Player os << strgettext("- PvP: ") << pvp << "\n" - << strgettext("- Public: ") << announced << "\n"; + << strgettext("- Public: ") << announced << "\n"; std::string server_name = g_settings->get("server_name"); str_formspec_escape(server_name); if (announced == on && !server_name.empty()) os << strgettext("- Server Name: ") << server_name; - } } os << ";]"; @@ -3570,8 +3542,8 @@ void Game::showPauseMenu() LocalFormspecHandler *txt_dst = new LocalFormspecHandler("MT_PAUSE_MENU"); auto *&formspec = m_game_ui->getFormspecGUI(); - GUIFormSpecMenu::create(formspec, client, &input->joystick, - fs_src, txt_dst, client->getFormspecPrepend()); + GUIFormSpecMenu::create(formspec, client, &input->joystick, fs_src, txt_dst, + client->getFormspecPrepend()); formspec->setFocus("btn_continue"); formspec->doPause = true; } @@ -3584,15 +3556,12 @@ void Game::showPauseMenu() Game *g_game; -void the_game(bool *kill, - InputHandler *input, - const GameStartData &start_data, - std::string &error_message, - ChatBackend &chat_backend, +void the_game(bool *kill, InputHandler *input, const GameStartData &start_data, + std::string &error_message, ChatBackend &chat_backend, bool *reconnect_requested) // Used for local game { Game game; - + g_game = &game; /* Make a copy of the server address because if a local singleplayer server @@ -3603,13 +3572,14 @@ void the_game(bool *kill, try { if (game.startup(kill, input, start_data, error_message, - reconnect_requested, &chat_backend)) { + reconnect_requested, &chat_backend)) { game.run(); } } catch (SerializationError &e) { - error_message = std::string("A serialization error occurred:\n") - + e.what() + "\n\nThe server is probably " + error_message = std::string("A serialization error occurred:\n") + + e.what() + + "\n\nThe server is probably " " running a different version of " PROJECT_NAME_C "."; errorstream << error_message << std::endl; } catch (ServerError &e) { |