X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fgame.cpp;h=0645a7b809367925074a2ca0e6089d204d3a16ec;hb=c7a78037809a2f9c431441f7ef91f84eb8744fff;hp=1c8fa092417171b120bc6529e7aeacb8b16958c1;hpb=38561023b468b923aa2b7957b807fa2700ea59ce;p=dragonfireclient.git diff --git a/src/game.cpp b/src/game.cpp index 1c8fa0924..0645a7b80 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -859,7 +859,7 @@ class GameGlobalShaderConstantSetter : public IShaderConstantSetter // Fog distance float fog_distance = 10000 * BS; - if (g_settings->getBool("enable_fog") && !*m_force_fog_off) + if (m_fogEnabled && !*m_force_fog_off) fog_distance = *m_fog_range; services->setPixelShaderConstant("fogDistance", &fog_distance, 1); @@ -1074,7 +1074,7 @@ static void show_deathscreen(GUIFormSpecMenu **cur_formspec, std::string(FORMSPEC_VERSION_STRING) + SIZE_TAG "bgcolor[#320000b4;true]" - "label[4.85,1.35;You died.]" + "label[4.85,1.35;" + gettext("You died.") + "]" "button_exit[4,3;3,0.5;btn_respawn;" + gettext("Respawn") + "]" ; @@ -1157,7 +1157,7 @@ static void show_pause_menu(GUIFormSpecMenu **cur_formspec, LocalFormspecHandler *txt_dst = new LocalFormspecHandler("MT_PAUSE_MENU"); create_formspec_menu(cur_formspec, invmgr, gamedef, tsrc, device, fs_src, txt_dst, NULL); - + (*cur_formspec)->setFocus(L"btn_continue"); (*cur_formspec)->doPause = true; } @@ -1539,7 +1539,7 @@ class Game // Misc void limitFps(FpsControl *fps_timings, f32 *dtime); - void showOverlayMessage(const char *msg, float dtime, int percent, + void showOverlayMessage(const wchar_t *msg, float dtime, int percent, bool draw_clouds = true); private: @@ -1806,7 +1806,7 @@ void Game::run() void Game::shutdown() { - showOverlayMessage("Shutting down...", 0, 0, false); + showOverlayMessage(wgettext("Shutting down..."), 0, 0, false); if (clouds) clouds->drop(); @@ -1855,7 +1855,7 @@ bool Game::init( u16 port, const SubgameSpec &gamespec) { - showOverlayMessage("Loading...", 0, 0); + showOverlayMessage(wgettext("Loading..."), 0, 0); texture_src = createTextureSource(device); shader_src = createShaderSource(device); @@ -1912,7 +1912,7 @@ bool Game::initSound() bool Game::createSingleplayerServer(const std::string map_dir, const SubgameSpec &gamespec, u16 port, std::string *address) { - showOverlayMessage("Creating server...", 0, 5); + showOverlayMessage(wgettext("Creating server..."), 0, 5); std::string bind_str = g_settings->get("bind_address"); Address bind_addr(0, 0, 0, 0, port); @@ -1949,7 +1949,7 @@ bool Game::createClient(const std::string &playername, const std::string &password, std::string *address, u16 port, std::wstring *error_message) { - showOverlayMessage("Creating client...", 0, 10); + showOverlayMessage(wgettext("Creating client..."), 0, 10); draw_control = new MapDrawControl; if (!draw_control) @@ -2122,7 +2122,7 @@ bool Game::connectToServer(const std::string &playername, *aborted = false; bool local_server_mode = false; - showOverlayMessage("Resolving address...", 0, 15); + showOverlayMessage(wgettext("Resolving address..."), 0, 15); Address connect_address(0, 0, 0, 0, port); @@ -2213,7 +2213,7 @@ bool Game::connectToServer(const std::string &playername, } // Update status - showOverlayMessage("Connecting to server...", dtime, 20); + showOverlayMessage(wgettext("Connecting to server..."), dtime, 20); } } catch (con::PeerNotFoundException &e) { // TODO: Should something be done here? At least an info/error @@ -2271,12 +2271,12 @@ bool Game::getServerContent(bool *aborted) int progress = 25; if (!client->itemdefReceived()) { - wchar_t *text = wgettext("Item definitions..."); + const wchar_t *text = wgettext("Item definitions..."); progress = 25; draw_load_screen(text, device, guienv, dtime, progress); delete[] text; } else if (!client->nodedefReceived()) { - wchar_t *text = wgettext("Node definitions..."); + const wchar_t *text = wgettext("Node definitions..."); progress = 30; draw_load_screen(text, device, guienv, dtime, progress); delete[] text; @@ -2299,7 +2299,7 @@ bool Game::getServerContent(bool *aborted) } progress = 30 + client->mediaReceiveProgress() * 35 + 0.5; - draw_load_screen(narrow_to_wide(message.str().c_str()), device, + draw_load_screen(narrow_to_wide(message.str()), device, guienv, dtime, progress); } } @@ -2669,6 +2669,15 @@ void Game::dropSelectedItem() void Game::openInventory() { + /* + * Don't permit to open inventory is CAO or player doesn't exists. + * This prevent showing an empty inventory at player load + */ + + LocalPlayer *player = client->getEnv().getLocalPlayer(); + if (player == NULL || player->getCAO() == NULL) + return; + infostream << "the_game: " << "Launching inventory" << std::endl; PlayerInventoryFormSource *fs_src = new PlayerInventoryFormSource(client); @@ -3218,10 +3227,13 @@ void Game::updateCamera(VolatileRunFlags *flags, u32 busy_time, v3s16 old_camera_offset = camera->getOffset(); if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_CAMERA_MODE])) { - camera->toggleCameraMode(); GenericCAO *playercao = player->getCAO(); - assert(playercao != NULL); + // If playercao not loaded, don't change camera + if (playercao == NULL) + return; + + camera->toggleCameraMode(); playercao->setVisible(camera->getCameraMode() > CAMERA_MODE_FIRST); } @@ -4111,12 +4123,11 @@ inline void Game::limitFps(FpsControl *fps_timings, f32 *dtime) } -void Game::showOverlayMessage(const char *msg, float dtime, +void Game::showOverlayMessage(const wchar_t *msg, float dtime, int percent, bool draw_clouds) { - wchar_t *text = wgettext(msg); - draw_load_screen(text, device, guienv, dtime, percent, draw_clouds); - delete[] text; + draw_load_screen(msg, device, guienv, dtime, percent, draw_clouds); + delete[] msg; } @@ -4196,6 +4207,7 @@ void the_game(bool *kill, errorstream << "ServerError: " << e.what() << std::endl; } catch (ModError &e) { errorstream << "ModError: " << e.what() << std::endl; - error_message = narrow_to_wide(e.what()) + wgettext("\nCheck debug.txt for details."); + error_message = narrow_to_wide(e.what()) + wstrgettext("\nCheck debug.txt for details."); } } +