1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Add nametag background setting and object property (#10937)

This commit is contained in:
rubenwardy 2021-02-17 19:51:28 +00:00 committed by GitHub
parent a8f6befd39
commit f85e9ab925
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 254 additions and 58 deletions

View file

@ -312,6 +312,17 @@ void read_object_properties(lua_State *L, int index,
prop->nametag_color = color;
}
lua_pop(L, 1);
lua_getfield(L, -1, "nametag_bgcolor");
if (!lua_isnil(L, -1)) {
if (lua_toboolean(L, -1)) {
video::SColor color;
if (read_color(L, -1, &color))
prop->nametag_bgcolor = color;
} else {
prop->nametag_bgcolor = nullopt;
}
}
lua_pop(L, 1);
lua_getfield(L, -1, "automatic_face_movement_max_rotation_per_sec");
if (lua_isnumber(L, -1)) {
@ -403,6 +414,13 @@ void push_object_properties(lua_State *L, ObjectProperties *prop)
lua_setfield(L, -2, "nametag");
push_ARGB8(L, prop->nametag_color);
lua_setfield(L, -2, "nametag_color");
if (prop->nametag_bgcolor) {
push_ARGB8(L, prop->nametag_bgcolor.value());
lua_setfield(L, -2, "nametag_bgcolor");
} else {
lua_pushboolean(L, false);
lua_setfield(L, -2, "nametag_bgcolor");
}
lua_pushnumber(L, prop->automatic_face_movement_max_rotation_per_sec);
lua_setfield(L, -2, "automatic_face_movement_max_rotation_per_sec");
lua_pushlstring(L, prop->infotext.c_str(), prop->infotext.size());

View file

@ -50,22 +50,26 @@ bool LuaHelper::isNaN(lua_State *L, int idx)
/*
* Read template functions
*/
template <> bool LuaHelper::readParam(lua_State *L, int index)
template <>
bool LuaHelper::readParam(lua_State *L, int index)
{
return lua_toboolean(L, index) != 0;
}
template <> s16 LuaHelper::readParam(lua_State *L, int index)
template <>
s16 LuaHelper::readParam(lua_State *L, int index)
{
return lua_tonumber(L, index);
}
template <> int LuaHelper::readParam(lua_State *L, int index)
template <>
int LuaHelper::readParam(lua_State *L, int index)
{
return luaL_checkint(L, index);
}
template <> float LuaHelper::readParam(lua_State *L, int index)
template <>
float LuaHelper::readParam(lua_State *L, int index)
{
if (isNaN(L, index))
throw LuaError("NaN value is not allowed.");
@ -73,7 +77,8 @@ template <> float LuaHelper::readParam(lua_State *L, int index)
return (float)luaL_checknumber(L, index);
}
template <> v2s16 LuaHelper::readParam(lua_State *L, int index)
template <>
v2s16 LuaHelper::readParam(lua_State *L, int index)
{
v2s16 p;
CHECK_POS_TAB(index);
@ -88,7 +93,8 @@ template <> v2s16 LuaHelper::readParam(lua_State *L, int index)
return p;
}
template <> v2f LuaHelper::readParam(lua_State *L, int index)
template <>
v2f LuaHelper::readParam(lua_State *L, int index)
{
v2f p;
CHECK_POS_TAB(index);
@ -103,7 +109,8 @@ template <> v2f LuaHelper::readParam(lua_State *L, int index)
return p;
}
template <> v3f LuaHelper::readParam(lua_State *L, int index)
template <>
v3f LuaHelper::readParam(lua_State *L, int index)
{
v3f p;
CHECK_POS_TAB(index);
@ -122,7 +129,8 @@ template <> v3f LuaHelper::readParam(lua_State *L, int index)
return p;
}
template <> std::string LuaHelper::readParam(lua_State *L, int index)
template <>
std::string LuaHelper::readParam(lua_State *L, int index)
{
size_t length;
std::string result;

View file

@ -38,7 +38,8 @@ protected:
* @param index Lua Index to read
* @return read value from Lua
*/
template <typename T> static T readParam(lua_State *L, int index);
template <typename T>
static T readParam(lua_State *L, int index);
/**
* Read a value using a template type T from Lua State L and index