summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-06-18 22:03:20 +0300
committerAndrei Karas <akaras@inbox.ru>2016-06-18 22:03:20 +0300
commitbc94e3dbe141ca257363850077d3faf48338fb87 (patch)
treefa5dd9a6bcc0f4d35fffc3717203c8a45425195f
parentafb663b60d9e946ce0b23f42e033bb94a99f26a2 (diff)
downloadmv-bc94e3dbe141ca257363850077d3faf48338fb87.tar.gz
mv-bc94e3dbe141ca257363850077d3faf48338fb87.tar.bz2
mv-bc94e3dbe141ca257363850077d3faf48338fb87.tar.xz
mv-bc94e3dbe141ca257363850077d3faf48338fb87.zip
Fix asserts about not found translated item names.
-rw-r--r--src/resources/db/itemdb.cpp11
-rw-r--r--src/resources/iteminfo.cpp6
-rw-r--r--src/resources/iteminfo.h10
3 files changed, 27 insertions, 0 deletions
diff --git a/src/resources/db/itemdb.cpp b/src/resources/db/itemdb.cpp
index d79f75933..be196f615 100644
--- a/src/resources/db/itemdb.cpp
+++ b/src/resources/db/itemdb.cpp
@@ -301,6 +301,7 @@ void ItemDB::loadXmlFile(const std::string &fileName,
const int inherit = XML::getProperty(node, "inherit", -1);
std::string name = XML::langProperty(node, "name", "");
+ std::string nameEn = XML::getProperty(node, "name", "");
std::string image = XML::getProperty(node, "image", "");
std::string floor = XML::getProperty(node, "floor", "");
std::string description = XML::langProperty(node, "description", "");
@@ -383,6 +384,11 @@ void ItemDB::loadXmlFile(const std::string &fileName,
name = inheritItemInfo->getName();
// TRANSLATORS: item info name
itemInfo->setName(name.empty() ? _("unnamed") : name);
+ if (nameEn.empty())
+ itemInfo->setNameEn(name.empty() ? _("unnamed") : name);
+ else
+ itemInfo->setNameEn(nameEn);
+
if (description.empty() && inheritItemInfo)
description = inheritItemInfo->getDescription();
itemInfo->setDescription(description);
@@ -606,6 +612,11 @@ void ItemDB::loadXmlFile(const std::string &fileName,
temp = normalize(name);
mNamedItemInfos[temp] = itemInfo;
}
+ if (!nameEn.empty())
+ {
+ temp = normalize(nameEn);
+ mNamedItemInfos[temp] = itemInfo;
+ }
if (!attackAction.empty())
{
diff --git a/src/resources/iteminfo.cpp b/src/resources/iteminfo.cpp
index 1de4d9579..b23065f60 100644
--- a/src/resources/iteminfo.cpp
+++ b/src/resources/iteminfo.cpp
@@ -41,6 +41,7 @@ ItemInfo::ItemInfo() :
mMissileParticleFile(),
mDisplay(),
mName(),
+ mNameEn(),
mDescription(),
mEffect(),
mUseButton(),
@@ -256,6 +257,11 @@ const std::string ItemInfo::getName(const ItemColor color) const
return replaceColors(mName, color);
}
+const std::string ItemInfo::getNameEn(const ItemColor color) const
+{
+ return replaceColors(mNameEn, color);
+}
+
const std::string ItemInfo::replaceColors(std::string str,
const ItemColor color) const
{
diff --git a/src/resources/iteminfo.h b/src/resources/iteminfo.h
index ad9a2d6ab..3eb19dc80 100644
--- a/src/resources/iteminfo.h
+++ b/src/resources/iteminfo.h
@@ -77,6 +77,15 @@ class ItemInfo final
const std::string getName(const ItemColor color)
const A_WARN_UNUSED;
+ void setNameEn(const std::string &name)
+ { mNameEn = name; }
+
+ const std::string &getNameEn() const A_WARN_UNUSED
+ { return mNameEn; }
+
+ const std::string getNameEn(const ItemColor color)
+ const A_WARN_UNUSED;
+
const std::string getLink() const A_WARN_UNUSED;
void setDisplay(const SpriteDisplay &display)
@@ -325,6 +334,7 @@ class ItemInfo final
SpriteDisplay mDisplay; /**< Display info (like icon) */
std::string mName;
+ std::string mNameEn;
std::string mDescription; /**< Short description. */
std::string mEffect; /**< Description of effects. */
std::string mUseButton;