Show infotext with description for item entities

This commit is contained in:
RealBadAngel 2016-01-08 15:59:36 +01:00 committed by paramat
parent eb6e2c11b1
commit 87291ea44a
7 changed files with 21 additions and 2 deletions

View File

@ -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,

View File

@ -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`)

View File

@ -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;
}
}; };

View File

@ -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()) {

View File

@ -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

View File

@ -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();

View File

@ -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");
} }
/******************************************************************************/ /******************************************************************************/