aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbigfoot547 <bigfoot547@users.noreply.github.com>2017-04-14 02:04:41 -0500
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-04-14 09:04:41 +0200
commite80a83d1cb9d01273ddca1c075c25cd01c291ca7 (patch)
tree277bc42c60466ca4e35fd29072c3eae5e6511391
parent6f641df8a52ccb84452a289416527e3d1a36621a (diff)
downloadminetest-e80a83d1cb9d01273ddca1c075c25cd01c291ca7.tar.gz
minetest-e80a83d1cb9d01273ddca1c075c25cd01c291ca7.tar.bz2
minetest-e80a83d1cb9d01273ddca1c075c25cd01c291ca7.zip
[CSM] Add function to set minimap shape (#5569)
* [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
-rw-r--r--clientmods/preview/init.lua2
-rw-r--r--doc/client_lua_api.md3
-rw-r--r--src/minimap.cpp22
-rw-r--r--src/minimap.h7
-rw-r--r--src/script/lua_api/l_minimap.cpp18
-rw-r--r--src/script/lua_api/l_minimap.h3
6 files changed, 49 insertions, 6 deletions
diff --git a/clientmods/preview/init.lua b/clientmods/preview/init.lua
index df07f8c3f..4b31fa323 100644
--- a/clientmods/preview/init.lua
+++ b/clientmods/preview/init.lua
@@ -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()) ..
diff --git a/doc/client_lua_api.md b/doc/client_lua_api.md
index 43a317a84..b2aeb3f25 100644
--- a/doc/client_lua_api.md
+++ b/doc/client_lua_api.md
@@ -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
diff --git a/src/minimap.cpp b/src/minimap.cpp
index a7f4822c9..500f49828 100644
--- a/src/minimap.cpp
+++ b/src/minimap.cpp
@@ -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] = {
diff --git a/src/minimap.h b/src/minimap.h
index eb0ae1cf4..c50530335 100644
--- a/src/minimap.h
+++ b/src/minimap.h
@@ -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();
diff --git a/src/script/lua_api/l_minimap.cpp b/src/script/lua_api/l_minimap.cpp
index c68602909..f32a07ce8 100644
--- a/src/script/lua_api/l_minimap.cpp
+++ b/src/script/lua_api/l_minimap.cpp
@@ -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}
};
diff --git a/src/script/lua_api/l_minimap.h b/src/script/lua_api/l_minimap.h
index 8be72b8e7..ba702b0b1 100644
--- a/src/script/lua_api/l_minimap.h
+++ b/src/script/lua_api/l_minimap.h
@@ -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;