From ff53770b5a3d4c9911ffba93f9a62697dd5b6d81 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 1 Jun 2016 17:07:23 +0300 Subject: Move item field type class into separate file. --- src/CMakeLists.txt | 1 + src/Makefile.am | 1 + src/resources/db/itemdb.cpp | 29 ++++++----------------- src/resources/item/itemfieldtype.h | 47 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 22 deletions(-) create mode 100644 src/resources/item/itemfieldtype.h 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::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 . + */ + +#ifndef RESOURCES_ITEM_ITEMFIELDTYPE_H +#define RESOURCES_ITEM_ITEMFIELDTYPE_H + +#include + +#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 -- cgit v1.2.3-60-g2f50