forked from Mirrorlandia_minetest/minetest
[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
This commit is contained in:
parent
6f641df8a5
commit
e80a83d1cb
@ -62,7 +62,7 @@ local function preview_minimap()
|
|||||||
minimap:set_mode(4)
|
minimap:set_mode(4)
|
||||||
minimap:show()
|
minimap:show()
|
||||||
minimap:set_pos({x=5, y=50, z=5})
|
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()) ..
|
print("[PREVIEW] Minimap: mode => " .. dump(minimap:get_mode()) ..
|
||||||
" position => " .. dump(minimap:get_pos()) ..
|
" position => " .. dump(minimap:get_pos()) ..
|
||||||
|
@ -779,7 +779,8 @@ An interface to manipulate minimap on client UI
|
|||||||
* `get_angle()`: returns the current minimap angle in degrees
|
* `get_angle()`: returns the current minimap angle in degrees
|
||||||
* `set_mode(mode)`: sets the minimap mode (0 to 6)
|
* `set_mode(mode)`: sets the minimap mode (0 to 6)
|
||||||
* `get_mode()`: returns the current minimap mode
|
* `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
|
### LocalPlayer
|
||||||
An interface to retrieve information about the player. The player is
|
An interface to retrieve information about the player. The player is
|
||||||
|
@ -272,6 +272,28 @@ void Minimap::toggleMinimapShape()
|
|||||||
m_minimap_update_thread->deferUpdate();
|
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)
|
void Minimap::setMinimapMode(MinimapMode mode)
|
||||||
{
|
{
|
||||||
static const MinimapModeDef modedefs[MINIMAP_MODE_COUNT] = {
|
static const MinimapModeDef modedefs[MINIMAP_MODE_COUNT] = {
|
||||||
|
@ -45,6 +45,11 @@ enum MinimapMode {
|
|||||||
MINIMAP_MODE_COUNT,
|
MINIMAP_MODE_COUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum MinimapShape {
|
||||||
|
MINIMAP_SHAPE_SQUARE,
|
||||||
|
MINIMAP_SHAPE_ROUND,
|
||||||
|
};
|
||||||
|
|
||||||
struct MinimapModeDef {
|
struct MinimapModeDef {
|
||||||
bool is_radar;
|
bool is_radar;
|
||||||
u16 scan_height;
|
u16 scan_height;
|
||||||
@ -128,6 +133,8 @@ public:
|
|||||||
void setMinimapMode(MinimapMode mode);
|
void setMinimapMode(MinimapMode mode);
|
||||||
MinimapMode getMinimapMode() const { return data->mode; }
|
MinimapMode getMinimapMode() const { return data->mode; }
|
||||||
void toggleMinimapShape();
|
void toggleMinimapShape();
|
||||||
|
void setMinimapShape(MinimapShape shape);
|
||||||
|
MinimapShape getMinimapShape();
|
||||||
|
|
||||||
|
|
||||||
video::ITexture *getMinimapTexture();
|
video::ITexture *getMinimapTexture();
|
||||||
|
@ -108,12 +108,23 @@ int LuaMinimap::l_set_mode(lua_State *L)
|
|||||||
return 1;
|
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);
|
LuaMinimap *ref = checkobject(L, 1);
|
||||||
Minimap *m = getobject(ref);
|
Minimap *m = getobject(ref);
|
||||||
|
|
||||||
m->toggleMinimapShape();
|
lua_pushnumber(L, (int)m->getMinimapShape());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,6 +221,7 @@ const luaL_Reg LuaMinimap::methods[] = {
|
|||||||
luamethod(LuaMinimap, set_angle),
|
luamethod(LuaMinimap, set_angle),
|
||||||
luamethod(LuaMinimap, get_mode),
|
luamethod(LuaMinimap, get_mode),
|
||||||
luamethod(LuaMinimap, set_mode),
|
luamethod(LuaMinimap, set_mode),
|
||||||
luamethod(LuaMinimap, toggle_shape),
|
luamethod(LuaMinimap, set_shape),
|
||||||
|
luamethod(LuaMinimap, get_shape),
|
||||||
{0,0}
|
{0,0}
|
||||||
};
|
};
|
||||||
|
@ -45,7 +45,8 @@ private:
|
|||||||
static int l_show(lua_State *L);
|
static int l_show(lua_State *L);
|
||||||
static int l_hide(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;
|
Minimap *m_minimap;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user