]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
[CSM] Fix minimap problems (#5405)
authorLoïc Blot <nerzhul@users.noreply.github.com>
Fri, 17 Mar 2017 06:54:49 +0000 (07:54 +0100)
committerGitHub <noreply@github.com>
Fri, 17 Mar 2017 06:54:49 +0000 (07:54 +0100)
This fixes issue #5404

clientmods/preview/init.lua
src/client.cpp
src/client.h
src/game.cpp
src/script/lua_api/l_minimap.cpp

index 3f85d576d0536dab48f277d07d11791cc513be3d..25a61da51b723e71769be356bbfe45c9869c14b2 100644 (file)
@@ -49,8 +49,8 @@ core.register_chatcommand("test_node", {
 
 local function preview_minimap()
        local minimap = core.ui.minimap
-       minimap:show()
        minimap:set_mode(4)
+       minimap:show()
        minimap:set_pos({x=5, y=50, z=5})
        minimap:toggle_shape()
 
@@ -61,9 +61,13 @@ end
 
 core.after(2, function()
        print("[PREVIEW] loaded " .. modname .. " mod")
-       preview_minimap()
        modstorage:set_string("current_mod", modname)
        print(modstorage:get_string("current_mod"))
+       preview_minimap()
+end)
+
+core.after(5, function()
+       core.ui.minimap:show()
 
        print("[PREVIEW] Day count: " .. core.get_day_count() ..
                " time of day " .. core.get_timeofday())
index b355fa61747fe382ab9915757ad2adfe2c4cf70e..e87c0ff94387cebe20f20ecf8d8622653d21c0a1 100644 (file)
@@ -224,7 +224,6 @@ Client::Client(
        m_device(device),
        m_camera(NULL),
        m_minimap_disabled_by_server(false),
-       m_minimap_shown_by_mod(false),
        m_server_ser_ver(SER_FMT_VER_INVALID),
        m_proto_ver(0),
        m_playeritem(0),
@@ -1933,11 +1932,7 @@ void Client::makeScreenshot(IrrlichtDevice *device)
 
 bool Client::shouldShowMinimap() const
 {
-       if (m_minimap_disabled_by_server) {
-               return false;
-       }
-
-       return m_minimap_shown_by_mod;
+       return !m_minimap_disabled_by_server;
 }
 
 // IGameDef interface
index 5c8a0ae25d33128c11ea313a67fd395b9cc67178..fc1cbe310d955c230e13b508b271f84aafd7c3ab 100644 (file)
@@ -532,7 +532,6 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        { return m_camera; }
 
        bool shouldShowMinimap() const;
-       void setMinimapShownByMod(bool state) { m_minimap_shown_by_mod = state; }
 
        // IGameDef interface
        virtual IItemDefManager* getItemDefManager();
@@ -634,7 +633,6 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        Camera *m_camera;
        Minimap *m_minimap;
        bool m_minimap_disabled_by_server;
-       bool m_minimap_shown_by_mod;
        // Server serialization version
        u8 m_server_ser_ver;
 
index 3862670172a9d1f3aa08660b6e3e144b345e3746..4a3acf493cbaca4d769880f5c71b757b50c57f9c 100644 (file)
@@ -1769,7 +1769,7 @@ void Game::run()
                updateProfilerGraphs(&graph);
 
                // Update if minimap has been disabled by the server
-               flags.show_minimap = client->shouldShowMinimap();
+               flags.show_minimap &= client->shouldShowMinimap();
        }
 }
 
index bbe9aef8275b5a4e803e1949ba2ad21fd06caa0b..cb02455767137d6e8103568e32d71c0ecb9fd650 100644 (file)
@@ -118,17 +118,21 @@ int LuaMinimap::l_toggle_shape(lua_State *L)
 
 int LuaMinimap::l_show(lua_State *L)
 {
-       Client *client = getClient(L);
-       assert(client);
-       client->setMinimapShownByMod(true);
+       LuaMinimap *ref = checkobject(L, 1);
+       Minimap *m = getobject(ref);
+
+       if (m->getMinimapMode() == MINIMAP_MODE_OFF)
+               m->setMinimapMode(MINIMAP_MODE_SURFACEx1);
        return 1;
 }
 
 int LuaMinimap::l_hide(lua_State *L)
 {
-       Client *client = getClient(L);
-       assert(client);
-       client->setMinimapShownByMod(false);
+       LuaMinimap *ref = checkobject(L, 1);
+       Minimap *m = getobject(ref);
+
+       if (m->getMinimapMode() != MINIMAP_MODE_OFF)
+               m->setMinimapMode(MINIMAP_MODE_OFF);
        return 1;
 }