forked from Mirrorlandia_minetest/minetest
Show infotext with description for item entities
This commit is contained in:
parent
eb6e2c11b1
commit
87291ea44a
@ -31,6 +31,7 @@ core.register_entity(":__builtin:item", {
|
|||||||
spritediv = {x = 1, y = 1},
|
spritediv = {x = 1, y = 1},
|
||||||
initial_sprite_basepos = {x = 0, y = 0},
|
initial_sprite_basepos = {x = 0, y = 0},
|
||||||
is_visible = false,
|
is_visible = false,
|
||||||
|
infotext = "",
|
||||||
},
|
},
|
||||||
|
|
||||||
itemstring = '',
|
itemstring = '',
|
||||||
@ -50,6 +51,7 @@ core.register_entity(":__builtin:item", {
|
|||||||
local c = s
|
local c = s
|
||||||
local itemtable = stack:to_table()
|
local itemtable = stack:to_table()
|
||||||
local itemname = nil
|
local itemname = nil
|
||||||
|
local description = ""
|
||||||
if itemtable then
|
if itemtable then
|
||||||
itemname = stack:to_table().name
|
itemname = stack:to_table().name
|
||||||
end
|
end
|
||||||
@ -58,6 +60,7 @@ core.register_entity(":__builtin:item", {
|
|||||||
if core.registered_items[itemname] then
|
if core.registered_items[itemname] then
|
||||||
item_texture = core.registered_items[itemname].inventory_image
|
item_texture = core.registered_items[itemname].inventory_image
|
||||||
item_type = core.registered_items[itemname].type
|
item_type = core.registered_items[itemname].type
|
||||||
|
description = core.registered_items[itemname].description
|
||||||
end
|
end
|
||||||
local prop = {
|
local prop = {
|
||||||
is_visible = true,
|
is_visible = true,
|
||||||
@ -66,6 +69,7 @@ core.register_entity(":__builtin:item", {
|
|||||||
visual_size = {x = s, y = s},
|
visual_size = {x = s, y = s},
|
||||||
collisionbox = {-c, -c, -c, c, c, c},
|
collisionbox = {-c, -c, -c, c, c, c},
|
||||||
automatic_rotate = math.pi * 0.5,
|
automatic_rotate = math.pi * 0.5,
|
||||||
|
infotext = description,
|
||||||
}
|
}
|
||||||
self.object:set_properties(prop)
|
self.object:set_properties(prop)
|
||||||
end,
|
end,
|
||||||
|
@ -3241,6 +3241,7 @@ Definition tables
|
|||||||
backface_culling = true, -- false to disable backface_culling for model
|
backface_culling = true, -- false to disable backface_culling for model
|
||||||
nametag = "", -- by default empty, for players their name is shown if empty
|
nametag = "", -- by default empty, for players their name is shown if empty
|
||||||
nametag_color = <color>, -- sets color of nametag as ColorSpec
|
nametag_color = <color>, -- sets color of nametag as ColorSpec
|
||||||
|
infotext = "", -- by default empty, text to be shown when pointed at object
|
||||||
}
|
}
|
||||||
|
|
||||||
### Entity definition (`register_entity`)
|
### Entity definition (`register_entity`)
|
||||||
|
@ -201,6 +201,11 @@ public:
|
|||||||
float time_from_last_punch=1000000);
|
float time_from_last_punch=1000000);
|
||||||
|
|
||||||
std::string debugInfoText();
|
std::string debugInfoText();
|
||||||
|
|
||||||
|
std::string infoText()
|
||||||
|
{
|
||||||
|
return m_prop.infotext;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -3732,8 +3732,11 @@ void Game::handlePointingAtObject(GameRunData *runData,
|
|||||||
{
|
{
|
||||||
infotext = utf8_to_wide(runData->selected_object->infoText());
|
infotext = utf8_to_wide(runData->selected_object->infoText());
|
||||||
|
|
||||||
if (infotext == L"" && show_debug) {
|
if (show_debug) {
|
||||||
infotext = utf8_to_wide(runData->selected_object->debugInfoText());
|
if (infotext != L"") {
|
||||||
|
infotext += L"\n";
|
||||||
|
}
|
||||||
|
infotext += utf8_to_wide(runData->selected_object->debugInfoText());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input->getLeftState()) {
|
if (input->getLeftState()) {
|
||||||
|
@ -118,6 +118,7 @@ void ObjectProperties::serialize(std::ostream &os) const
|
|||||||
os << serializeString(nametag);
|
os << serializeString(nametag);
|
||||||
writeARGB8(os, nametag_color);
|
writeARGB8(os, nametag_color);
|
||||||
writeF1000(os, automatic_face_movement_max_rotation_per_sec);
|
writeF1000(os, automatic_face_movement_max_rotation_per_sec);
|
||||||
|
os << serializeString(infotext);
|
||||||
|
|
||||||
// Add stuff only at the bottom.
|
// Add stuff only at the bottom.
|
||||||
// Never remove anything, because we don't want new versions of this
|
// Never remove anything, because we don't want new versions of this
|
||||||
@ -159,6 +160,7 @@ void ObjectProperties::deSerialize(std::istream &is)
|
|||||||
nametag = deSerializeString(is);
|
nametag = deSerializeString(is);
|
||||||
nametag_color = readARGB8(is);
|
nametag_color = readARGB8(is);
|
||||||
automatic_face_movement_max_rotation_per_sec = readF1000(is);
|
automatic_face_movement_max_rotation_per_sec = readF1000(is);
|
||||||
|
infotext = deSerializeString(is);
|
||||||
}catch(SerializationError &e){}
|
}catch(SerializationError &e){}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -51,6 +51,7 @@ struct ObjectProperties
|
|||||||
std::string nametag;
|
std::string nametag;
|
||||||
video::SColor nametag_color;
|
video::SColor nametag_color;
|
||||||
f32 automatic_face_movement_max_rotation_per_sec;
|
f32 automatic_face_movement_max_rotation_per_sec;
|
||||||
|
std::string infotext;
|
||||||
|
|
||||||
ObjectProperties();
|
ObjectProperties();
|
||||||
std::string dump();
|
std::string dump();
|
||||||
|
@ -216,6 +216,7 @@ void read_object_properties(lua_State *L, int index,
|
|||||||
prop->automatic_face_movement_max_rotation_per_sec = luaL_checknumber(L, -1);
|
prop->automatic_face_movement_max_rotation_per_sec = luaL_checknumber(L, -1);
|
||||||
}
|
}
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
getstringfield(L, -1, "infotext", prop->infotext);
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
@ -282,6 +283,8 @@ void push_object_properties(lua_State *L, ObjectProperties *prop)
|
|||||||
lua_setfield(L, -2, "nametag_color");
|
lua_setfield(L, -2, "nametag_color");
|
||||||
lua_pushnumber(L, prop->automatic_face_movement_max_rotation_per_sec);
|
lua_pushnumber(L, prop->automatic_face_movement_max_rotation_per_sec);
|
||||||
lua_setfield(L, -2, "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());
|
||||||
|
lua_setfield(L, -2, "infotext");
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user