summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources')
-rw-r--r--src/resources/db/itemdb.cpp29
-rw-r--r--src/resources/item/itemfieldtype.h47
2 files changed, 54 insertions, 22 deletions
diff --git a/src/resources/db/itemdb.cpp b/src/resources/db/itemdb.cpp
index 8729e54b5..9cea2b551 100644
--- a/src/resources/db/itemdb.cpp
+++ b/src/resources/db/itemdb.cpp
@@ -32,6 +32,8 @@
#include "resources/iteminfo.h"
#include "resources/itemtypemapdata.h"
+#include "resources/item/itemfieldtype.h"
+
#include "resources/sprite/spritereference.h"
#include "resources/db/itemdbstat.h"
@@ -77,26 +79,7 @@ static int parseDirectionName(const std::string &name);
namespace
{
- struct FieldType final
- {
-#ifdef ADVGCC
- FieldType(const char *const name0,
- const char *const description0,
- const bool sign0) :
- name(name0),
- description(description0),
- sign(sign0)
- { }
-
- A_DELETE_COPY(FieldType)
-#endif
-
- const char *name;
- const char *description;
- const bool sign;
- };
-
- static const FieldType fields[] =
+ static const ItemFieldType fields[] =
{
// TRANSLATORS: item info label (attack)
{ "attack", N_("Attack %s"), true },
@@ -573,14 +556,16 @@ void ItemDB::loadXmlFile(const std::string &fileName,
std::string effect;
for (size_t i = 0; i < sizeof(fields) / sizeof(fields[0]); ++ i)
{
- std::string value = XML::getProperty(node, fields[i].name, "");
+ std::string value = XML::getProperty(node,
+ fields[i].name.c_str(),
+ "");
if (value.empty())
continue;
if (!effect.empty())
effect.append(" / ");
if (fields[i].sign && isDigit(value))
value = "+" + value;
- effect.append(strprintf(gettext(fields[i].description),
+ effect.append(strprintf(gettext(fields[i].description.c_str()),
value.c_str()));
}
FOR_EACH (std::vector<Stat>::const_iterator, it, extraStats)
diff --git a/src/resources/item/itemfieldtype.h b/src/resources/item/itemfieldtype.h
new file mode 100644
index 000000000..6975bfa6e
--- /dev/null
+++ b/src/resources/item/itemfieldtype.h
@@ -0,0 +1,47 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2011-2016 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RESOURCES_ITEM_ITEMFIELDTYPE_H
+#define RESOURCES_ITEM_ITEMFIELDTYPE_H
+
+#include <string>
+
+#include "localconsts.h"
+
+struct ItemFieldType final
+{
+#ifdef ADVGCC
+ ItemFieldType(const std::string &name0,
+ const std::string &description0,
+ const bool sign0) :
+ name(name0),
+ description(description0),
+ sign(sign0)
+ { }
+
+ A_DELETE_COPY(ItemFieldType)
+#endif
+
+ const std::string name;
+ const std::string description;
+ const bool sign;
+};
+
+#endif // RESOURCES_ITEM_ITEMFIELDTYPE_H