summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-09-10 11:41:28 +0300
committerAndrei Karas <akaras@inbox.ru>2015-09-10 14:06:42 +0300
commitad5bfca7d5df9201e5460e68ca149674bac5ac2c (patch)
treead852ef64385bc07349a03bda66d318bb960ddd4
parent574efa8ae89f7786239753537eb32c222686f4a1 (diff)
downloadmanaplus-ad5bfca7d5df9201e5460e68ca149674bac5ac2c.tar.gz
manaplus-ad5bfca7d5df9201e5460e68ca149674bac5ac2c.tar.bz2
manaplus-ad5bfca7d5df9201e5460e68ca149674bac5ac2c.tar.xz
manaplus-ad5bfca7d5df9201e5460e68ca149674bac5ac2c.zip
Show name on named items.
-rw-r--r--src/gui/popups/itempopup.cpp53
1 files changed, 42 insertions, 11 deletions
diff --git a/src/gui/popups/itempopup.cpp b/src/gui/popups/itempopup.cpp
index a9afe136a..56e907620 100644
--- a/src/gui/popups/itempopup.cpp
+++ b/src/gui/popups/itempopup.cpp
@@ -23,10 +23,13 @@
#include "gui/popups/itempopup.h"
+#include "actormanager.h"
#include "configuration.h"
#include "item.h"
#include "units.h"
+#include "being/being.h"
+
#include "gui/gui.h"
#include "gui/fonts/font.h"
@@ -41,6 +44,7 @@
#include "resources/iteminfo.h"
#include "resources/resourcemanager.h"
+#include "net/beinghandler.h"
#include "net/serverfeatures.h"
#include "debug.h"
@@ -267,21 +271,48 @@ std::string ItemPopup::getCardsString(const int *const cards)
std::string label;
- for (int f = 0; f < maxCards; f ++)
+ switch (cards[0])
{
- const int id = cards[f];
- if (id)
+ case 0xfe: // named item
+ {
+ const int32_t charId = cards[2] + 65536 * cards[3];
+ std::string name = actorManager->findCharById(charId);
+ if (name.empty())
+ {
+ name = toString(charId);
+ beingHandler->requestNameByCharId(charId);
+ }
+ // TRANSLATORS: named item description
+ label.append(strprintf(_("Item named: %s"), name.c_str()));
+ return label;
+ }
+ case 0x00FFU: // forged item
+ {
+ return label;
+ }
+ case 0xFF00U:
{
- if (!label.empty())
- label.append(" / ");
- const ItemInfo &info = ItemDB::get(id);
- label.append(info.getName());
+ return label;
+ }
+ default:
+ {
+ for (int f = 0; f < maxCards; f ++)
+ {
+ const int id = cards[f];
+ if (id)
+ {
+ if (!label.empty())
+ label.append(" / ");
+ const ItemInfo &info = ItemDB::get(id);
+ label.append(info.getName());
+ }
+ }
+ if (label.empty())
+ return label;
+ // TRANSLATORS: popup label
+ return _("Cards: ") + label;
}
}
- if (label.empty())
- return label;
- // TRANSLATORS: popup label
- return _("Cards: ") + label;
}
#define caseSetColor(name1, name2) \