From 87291ea44a61614d5bd9efc0657926da3f867b5f Mon Sep 17 00:00:00 2001 From: RealBadAngel Date: Fri, 8 Jan 2016 15:59:36 +0100 Subject: [PATCH] Show infotext with description for item entities --- builtin/game/item_entity.lua | 4 ++++ doc/lua_api.txt | 1 + src/content_cao.h | 5 +++++ src/game.cpp | 7 +++++-- src/object_properties.cpp | 2 ++ src/object_properties.h | 1 + src/script/common/c_content.cpp | 3 +++ 7 files changed, 21 insertions(+), 2 deletions(-) diff --git a/builtin/game/item_entity.lua b/builtin/game/item_entity.lua index be158c119..a66bf33d0 100644 --- a/builtin/game/item_entity.lua +++ b/builtin/game/item_entity.lua @@ -31,6 +31,7 @@ core.register_entity(":__builtin:item", { spritediv = {x = 1, y = 1}, initial_sprite_basepos = {x = 0, y = 0}, is_visible = false, + infotext = "", }, itemstring = '', @@ -50,6 +51,7 @@ core.register_entity(":__builtin:item", { local c = s local itemtable = stack:to_table() local itemname = nil + local description = "" if itemtable then itemname = stack:to_table().name end @@ -58,6 +60,7 @@ core.register_entity(":__builtin:item", { if core.registered_items[itemname] then item_texture = core.registered_items[itemname].inventory_image item_type = core.registered_items[itemname].type + description = core.registered_items[itemname].description end local prop = { is_visible = true, @@ -66,6 +69,7 @@ core.register_entity(":__builtin:item", { visual_size = {x = s, y = s}, collisionbox = {-c, -c, -c, c, c, c}, automatic_rotate = math.pi * 0.5, + infotext = description, } self.object:set_properties(prop) end, diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 0ff8f031d..c2d5183d7 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -3241,6 +3241,7 @@ Definition tables backface_culling = true, -- false to disable backface_culling for model nametag = "", -- by default empty, for players their name is shown if empty nametag_color = , -- sets color of nametag as ColorSpec + infotext = "", -- by default empty, text to be shown when pointed at object } ### Entity definition (`register_entity`) diff --git a/src/content_cao.h b/src/content_cao.h index d9145c5f1..abb242aa4 100644 --- a/src/content_cao.h +++ b/src/content_cao.h @@ -201,6 +201,11 @@ public: float time_from_last_punch=1000000); std::string debugInfoText(); + + std::string infoText() + { + return m_prop.infotext; + } }; diff --git a/src/game.cpp b/src/game.cpp index 92d919931..3902c50bb 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -3732,8 +3732,11 @@ void Game::handlePointingAtObject(GameRunData *runData, { infotext = utf8_to_wide(runData->selected_object->infoText()); - if (infotext == L"" && show_debug) { - infotext = utf8_to_wide(runData->selected_object->debugInfoText()); + if (show_debug) { + if (infotext != L"") { + infotext += L"\n"; + } + infotext += utf8_to_wide(runData->selected_object->debugInfoText()); } if (input->getLeftState()) { diff --git a/src/object_properties.cpp b/src/object_properties.cpp index abd1bbd09..89ca26274 100644 --- a/src/object_properties.cpp +++ b/src/object_properties.cpp @@ -118,6 +118,7 @@ void ObjectProperties::serialize(std::ostream &os) const os << serializeString(nametag); writeARGB8(os, nametag_color); writeF1000(os, automatic_face_movement_max_rotation_per_sec); + os << serializeString(infotext); // Add stuff only at the bottom. // 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_color = readARGB8(is); automatic_face_movement_max_rotation_per_sec = readF1000(is); + infotext = deSerializeString(is); }catch(SerializationError &e){} } else diff --git a/src/object_properties.h b/src/object_properties.h index 47698cff7..02ec9d1f7 100644 --- a/src/object_properties.h +++ b/src/object_properties.h @@ -51,6 +51,7 @@ struct ObjectProperties std::string nametag; video::SColor nametag_color; f32 automatic_face_movement_max_rotation_per_sec; + std::string infotext; ObjectProperties(); std::string dump(); diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 62de2c968..275b22bb8 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -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); } 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_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()); + lua_setfield(L, -2, "infotext"); } /******************************************************************************/