[CSM] Add function to set minimap shape (#5569)
authorbigfoot547 <bigfoot547@users.noreply.github.com>
Fri, 14 Apr 2017 07:04:41 +0000 (02:04 -0500)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Fri, 14 Apr 2017 07:04:41 +0000 (09:04 +0200)
* [CSM] Add function to set minimap shape

Also deprecates `toggle_shape`.

* Oh fish, I messed that one up!

* Fix Style

* Sorry, I missed something

I still had the `luamethod` call in there!

* Add getters

* Remove extra line

* Remove useless variable

Please review again @nerzhul . Thanks!

* Satisfy nerzhul

clientmods/preview/init.lua
doc/client_lua_api.md
src/minimap.cpp
src/minimap.h
src/script/lua_api/l_minimap.cpp
src/script/lua_api/l_minimap.h

index df07f8c3fe81c550a2a16062d5e7f8e1f1e5fd6d..4b31fa3233536f83f6eb66efcb6c71290db8b218 100644 (file)
@@ -62,7 +62,7 @@ local function preview_minimap()
        minimap:set_mode(4)
        minimap:show()
        minimap:set_pos({x=5, y=50, z=5})
-       minimap:toggle_shape()
+       minimap:set_shape(math.random(0, 1))
 
        print("[PREVIEW] Minimap: mode => " .. dump(minimap:get_mode()) ..
                        " position => " .. dump(minimap:get_pos()) ..
index 43a317a843934e3f19a77f44bb6930503a058763..b2aeb3f251b36b0dbe860b991b31bc89e130d02b 100644 (file)
@@ -779,7 +779,8 @@ An interface to manipulate minimap on client UI
 * `get_angle()`: returns the current minimap angle in degrees
 * `set_mode(mode)`: sets the minimap mode (0 to 6)
 * `get_mode()`: returns the current minimap mode
-* `toggle_shape()`: toggles minimap shape to round or square.
+* `set_shape(shape)`: Sets the minimap shape. (0 = square, 1 = round)
+* `get_shape()`: Gets the minimap shape. (0 = square, 1 = round)
 
 ### LocalPlayer
 An interface to retrieve information about the player. The player is
index a7f4822c901b572a6f3397693fce50e00c269381..500f49828a93463f9700cf56bd0acecf01b71066 100644 (file)
@@ -272,6 +272,28 @@ void Minimap::toggleMinimapShape()
        m_minimap_update_thread->deferUpdate();
 }
 
+void Minimap::setMinimapShape(MinimapShape shape)
+{
+       MutexAutoLock lock(m_mutex);
+       
+       if (shape == MINIMAP_SHAPE_SQUARE)
+               data->minimap_shape_round = false;
+       else if (shape == MINIMAP_SHAPE_ROUND)
+               data->minimap_shape_round = true;
+       
+       g_settings->setBool("minimap_shape_round", data->minimap_shape_round);
+       m_minimap_update_thread->deferUpdate(); 
+}
+
+MinimapShape Minimap::getMinimapShape()
+{
+       if (data->minimap_shape_round) {
+               return MINIMAP_SHAPE_ROUND;
+       } else {
+               return MINIMAP_SHAPE_SQUARE;
+       }
+}
+
 void Minimap::setMinimapMode(MinimapMode mode)
 {
        static const MinimapModeDef modedefs[MINIMAP_MODE_COUNT] = {
index eb0ae1cf446e909937602637762fc0101964e2c7..c50530335082bcf80c45be4130af51b88e7d860f 100644 (file)
@@ -45,6 +45,11 @@ enum MinimapMode {
        MINIMAP_MODE_COUNT,
 };
 
+enum MinimapShape {
+       MINIMAP_SHAPE_SQUARE,
+       MINIMAP_SHAPE_ROUND,
+};
+
 struct MinimapModeDef {
        bool is_radar;
        u16 scan_height;
@@ -128,6 +133,8 @@ public:
        void setMinimapMode(MinimapMode mode);
        MinimapMode getMinimapMode() const { return data->mode; }
        void toggleMinimapShape();
+       void setMinimapShape(MinimapShape shape);
+       MinimapShape getMinimapShape();
 
 
        video::ITexture *getMinimapTexture();
index c68602909e9ca0e70e6210194f19e922a8cfab41..f32a07ce8cf462eeec010183cb9e772501cb92c6 100644 (file)
@@ -108,12 +108,23 @@ int LuaMinimap::l_set_mode(lua_State *L)
        return 1;
 }
 
-int LuaMinimap::l_toggle_shape(lua_State *L)
+int LuaMinimap::l_set_shape(lua_State *L)
+{
+       LuaMinimap *ref = checkobject(L, 1);
+       Minimap *m = getobject(ref);
+       if (!lua_isnumber(L, 2))
+               return 0;
+
+       m->setMinimapShape((MinimapShape)lua_tonumber(L, 2));
+       return 0;
+}
+
+int LuaMinimap::l_get_shape(lua_State *L)
 {
        LuaMinimap *ref = checkobject(L, 1);
        Minimap *m = getobject(ref);
 
-       m->toggleMinimapShape();
+       lua_pushnumber(L, (int)m->getMinimapShape());
        return 1;
 }
 
@@ -210,6 +221,7 @@ const luaL_Reg LuaMinimap::methods[] = {
        luamethod(LuaMinimap, set_angle),
        luamethod(LuaMinimap, get_mode),
        luamethod(LuaMinimap, set_mode),
-       luamethod(LuaMinimap, toggle_shape),
+       luamethod(LuaMinimap, set_shape),
+       luamethod(LuaMinimap, get_shape),
        {0,0}
 };
index 8be72b8e7cf558d8fab99b75d009708b8cddd6a7..ba702b0b1433b5bad659007d4bc1a26addc52650 100644 (file)
@@ -45,7 +45,8 @@ private:
        static int l_show(lua_State *L);
        static int l_hide(lua_State *L);
 
-       static int l_toggle_shape(lua_State *L);
+       static int l_set_shape(lua_State *L);
+       static int l_get_shape(lua_State *L);
 
        Minimap *m_minimap;