From 9eee3c3f465c071bb9908749cf48be3c131a1bdf Mon Sep 17 00:00:00 2001 From: BlockMen Date: Fri, 20 Nov 2015 23:46:33 +0100 Subject: Add option to give every object a nametag or change the nametag text of players --- src/content_cao.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/content_cao.cpp') diff --git a/src/content_cao.cpp b/src/content_cao.cpp index 72f6145b0..ed4e3b713 100644 --- a/src/content_cao.cpp +++ b/src/content_cao.cpp @@ -551,7 +551,6 @@ GenericCAO::GenericCAO(IGameDef *gamedef, ClientEnvironment *env): m_animated_meshnode(NULL), m_wield_meshnode(NULL), m_spritenode(NULL), - m_nametag_color(video::SColor(255, 255, 255, 255)), m_textnode(NULL), m_position(v3f(0,10*BS,0)), m_velocity(v3f(0,0,0)), @@ -972,19 +971,19 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc, updateTextures(""); scene::ISceneNode *node = getSceneNode(); - if (node && m_is_player && !m_is_local_player) { + if (node && m_prop.nametag != "" && !m_is_local_player) { // Add a text node for showing the name gui::IGUIEnvironment* gui = irr->getGUIEnvironment(); - std::wstring wname = utf8_to_wide(m_name); + std::wstring nametag_text = utf8_to_wide(m_prop.nametag); m_textnode = smgr->addTextSceneNode(gui->getSkin()->getFont(), - wname.c_str(), m_nametag_color, node); + nametag_text.c_str(), m_prop.nametag_color, node); m_textnode->grab(); m_textnode->setPosition(v3f(0, BS*1.1, 0)); // Enforce hiding nametag, // because if freetype is enabled, a grey // shadow can remain. - m_textnode->setVisible(m_nametag_color.getAlpha() > 0); + m_textnode->setVisible(m_prop.nametag_color.getAlpha() > 0); } updateNodePos(); @@ -1594,6 +1593,9 @@ void GenericCAO::processMessage(const std::string &data) m_tx_basepos = m_prop.initial_sprite_basepos; } + if ((m_is_player && !m_is_local_player) && m_prop.nametag == "") + m_prop.nametag = m_name; + expireVisuals(); } else if(cmd == GENERIC_CMD_UPDATE_POSITION) @@ -1772,15 +1774,15 @@ void GenericCAO::processMessage(const std::string &data) m_armor_groups[name] = rating; } } else if (cmd == GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES) { + // Deprecated, for backwards compatibility only. readU8(is); // version - m_nametag_color = readARGB8(is); + m_prop.nametag_color = readARGB8(is); if (m_textnode != NULL) { - m_textnode->setTextColor(m_nametag_color); + m_textnode->setTextColor(m_prop.nametag_color); // Enforce hiding nametag, - // because if freetype is enabled, a grey - // shadow can remain. - m_textnode->setVisible(m_nametag_color.getAlpha() > 0); + // because if freetype is enabled, a grey shadow can remain. + m_textnode->setVisible(m_prop.nametag_color.getAlpha() > 0); } } } -- cgit v1.2.3