summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-06-01 17:07:23 +0300
committerAndrei Karas <akaras@inbox.ru>2016-06-01 19:53:54 +0300
commitff53770b5a3d4c9911ffba93f9a62697dd5b6d81 (patch)
treeb192af38dc0c1b20e72cfae300427f7075044ea6
parent5cf2b1abffc97e6d0d79dec6088a3b59e07bc490 (diff)
downloadmv-ff53770b5a3d4c9911ffba93f9a62697dd5b6d81.tar.gz
mv-ff53770b5a3d4c9911ffba93f9a62697dd5b6d81.tar.bz2
mv-ff53770b5a3d4c9911ffba93f9a62697dd5b6d81.tar.xz
mv-ff53770b5a3d4c9911ffba93f9a62697dd5b6d81.zip
Move item field type class into separate file.
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/Makefile.am1
-rw-r--r--src/resources/db/itemdb.cpp29
-rw-r--r--src/resources/item/itemfieldtype.h47
4 files changed, 56 insertions, 22 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3bbe3bb9c..5e8e7e6c2 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1008,6 +1008,7 @@ SET(SRCS
resources/item/complexitem.h
resources/item/item.cpp
resources/item/item.h
+ resources/item/itemfieldtype.h
itemcolormanager.cpp
itemcolormanager.h
gui/shortcut/itemshortcut.cpp
diff --git a/src/Makefile.am b/src/Makefile.am
index e45202c22..2c48a41e3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -807,6 +807,7 @@ manaplus_SOURCES += main.cpp \
resources/item/complexitem.h \
resources/item/item.cpp \
resources/item/item.h \
+ resources/item/itemfieldtype.h \
itemcolormanager.cpp \
itemcolormanager.h \
gui/shortcut/itemshortcut.cpp \
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