summaryrefslogtreecommitdiff
path: root/src/resources/db
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2017-01-31 21:27:52 +0300
committerAndrei Karas <akaras@inbox.ru>2017-01-31 21:27:52 +0300
commit35481061f62111f916a39ce3cac6a314579418f9 (patch)
treeecf73b207a78f9e35bb47f8ed1067931733090b7 /src/resources/db
parentaea9e7f8c26644ba38db5eb9dbf412195f9851b2 (diff)
downloadplus-35481061f62111f916a39ce3cac6a314579418f9.tar.gz
plus-35481061f62111f916a39ce3cac6a314579418f9.tar.bz2
plus-35481061f62111f916a39ce3cac6a314579418f9.tar.xz
plus-35481061f62111f916a39ce3cac6a314579418f9.zip
Load currency names for each npc from npcs.xml.
Diffstat (limited to 'src/resources/db')
-rw-r--r--src/resources/db/npcdb.cpp12
-rw-r--r--src/resources/db/unitsdb.cpp12
-rw-r--r--src/resources/db/unitsdb.h2
3 files changed, 26 insertions, 0 deletions
diff --git a/src/resources/db/npcdb.cpp b/src/resources/db/npcdb.cpp
index 55ca39c99..4e5fd35fe 100644
--- a/src/resources/db/npcdb.cpp
+++ b/src/resources/db/npcdb.cpp
@@ -27,6 +27,8 @@
#include "resources/beingcommon.h"
#include "resources/beinginfo.h"
+#include "resources/db/unitsdb.h"
+
#include "resources/sprite/spritereference.h"
#include "utils/checkutils.h"
@@ -115,6 +117,16 @@ void NPCDB::loadXmlFile(const std::string &fileName,
currentInfo->setAllowDelete(XML::getBoolProperty(npcNode,
"allowDelete", true));
+ const std::string currency = XML::getProperty(npcNode,
+ "currency", "default");
+ if (UnitsDb::existsCurrency(currency) == false)
+ {
+ reportAlways("Not found currency '%s' for npc %d",
+ currency.c_str(),
+ CAST_S32(id));
+ }
+ currentInfo->setCurrency(currency);
+
SpriteDisplay display;
for_each_xml_child_node(spriteNode, npcNode)
{
diff --git a/src/resources/db/unitsdb.cpp b/src/resources/db/unitsdb.cpp
index 3001ccb7b..94d055ffd 100644
--- a/src/resources/db/unitsdb.cpp
+++ b/src/resources/db/unitsdb.cpp
@@ -214,11 +214,18 @@ void UnitsDb::loadXmlFile(const std::string &fileName,
const std::string type = XML::getProperty(node, "type", "");
UnitDescription ud = loadUnit(node);
if (type == "weight")
+ {
defaultWeight = ud;
+ }
else if (type == "currency")
+ {
defaultCurrency = ud;
+ mCurrencies["default"] = ud;
+ }
else
+ {
logger->log("Error unknown unit type: %s", type.c_str());
+ }
}
else if (xmlNameEqual(node, "currency"))
{
@@ -318,6 +325,11 @@ std::string UnitsDb::formatWeight(const int value)
return formatUnit(value, defaultWeight);
}
+bool UnitsDb::existsCurrency(const std::string &name)
+{
+ return mCurrencies.find(name) != mCurrencies.end();
+}
+
static std::string splitNumber(std::string str,
const std::string &separator)
{
diff --git a/src/resources/db/unitsdb.h b/src/resources/db/unitsdb.h
index b8c81cfc3..7a913cc16 100644
--- a/src/resources/db/unitsdb.h
+++ b/src/resources/db/unitsdb.h
@@ -51,6 +51,8 @@ class UnitsDb final
* Formats the given number in the correct weight/mass format.
*/
static std::string formatWeight(const int value) A_WARN_UNUSED;
+
+ static bool existsCurrency(const std::string &name) A_WARN_UNUSED;
};
#endif // RESOURCES_DB_UNITSDB_H