From 9d33bb1bdaf0f19ccaa742a316af9620b05b825d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 3 Jul 2014 15:09:13 +0300 Subject: Add into items.xml option useButton. For now unused. --- src/resources/db/itemdb.cpp | 17 +++++++++++++ src/resources/iteminfo.cpp | 1 + src/resources/iteminfo.h | 7 ++++++ src/resources/itemtypemap.h | 3 +++ src/resources/itemtypemapdata.h | 56 ++++++++++++++++++++++++++++------------- 5 files changed, 66 insertions(+), 18 deletions(-) diff --git a/src/resources/db/itemdb.cpp b/src/resources/db/itemdb.cpp index f40fdbbd6..0cad05f39 100644 --- a/src/resources/db/itemdb.cpp +++ b/src/resources/db/itemdb.cpp @@ -126,6 +126,19 @@ static ItemType::Type itemTypeFromString(const std::string &name) return ItemType::UNUSABLE; } +static std::string useButtonFromItemType(const ItemType::Type &type) +{ + const size_t sz = sizeof(itemTypeMap) / sizeof(itemTypeMap[0]); + for (size_t f = 0; f < sz; f ++) + { + const ItemTypeMap &item = itemTypeMap[f]; + if (item.type == type) + return gettext(item.useButton.c_str()); + } + logger->log("Unknown item type"); + return std::string(); +} + static void initStatic() { mConstructed = true; @@ -243,6 +256,7 @@ void ItemDB::loadXmlFile(const std::string &fileName, int &tagNum) const int pet = XML::getProperty(node, "pet", 0); const int maxFloorOffset = XML::getIntProperty( node, "maxFloorOffset", mapTileSize, 0, mapTileSize); + std::string useButton = XML::getProperty(node, "useButton", ""); std::string colors; if (serverVersion >= 1) { @@ -291,6 +305,9 @@ void ItemDB::loadXmlFile(const std::string &fileName, int &tagNum) itemInfo->setName(name.empty() ? _("unnamed") : name); itemInfo->setDescription(description); itemInfo->setType(itemTypeFromString(typeStr)); + if (useButton.empty()) + useButton = useButtonFromItemType(itemInfo->getType()); + itemInfo->setUseButton(useButton); itemInfo->addTag(mTags["All"]); itemInfo->setPet(pet); itemInfo->setProtected(XML::getBoolProperty( diff --git a/src/resources/iteminfo.cpp b/src/resources/iteminfo.cpp index 608fb6c20..1d44c2eda 100644 --- a/src/resources/iteminfo.cpp +++ b/src/resources/iteminfo.cpp @@ -46,6 +46,7 @@ ItemInfo::ItemInfo() : mName(), mDescription(), mEffect(), + mUseButton(), mType(ItemType::UNUSABLE), mWeight(0), mView(0), diff --git a/src/resources/iteminfo.h b/src/resources/iteminfo.h index eb22b10d5..4c8ece517 100644 --- a/src/resources/iteminfo.h +++ b/src/resources/iteminfo.h @@ -96,6 +96,12 @@ class ItemInfo final void setType(const ItemType::Type type) { mType = type; } + void setUseButton(const std::string &str) + { mUseButton = str; } + + const std::string &getUseButton() const A_WARN_UNUSED + { return mUseButton; } + ItemType::Type getType() const A_WARN_UNUSED { return mType; } @@ -267,6 +273,7 @@ class ItemInfo final std::string mName; std::string mDescription; /**< Short description. */ std::string mEffect; /**< Description of effects. */ + std::string mUseButton; ItemType::Type mType; /**< Item type. */ int mWeight; /**< Weight in grams. */ int mView; /**< Item ID of how this item looks. */ diff --git a/src/resources/itemtypemap.h b/src/resources/itemtypemap.h index c8dc48197..08ec73ca0 100644 --- a/src/resources/itemtypemap.h +++ b/src/resources/itemtypemap.h @@ -21,12 +21,15 @@ #ifndef RESOURCES_ITEMTYPEMAP_H #define RESOURCES_ITEMTYPEMAP_H +#include "resources/itemtype.h" + #include "localconsts.h" struct ItemTypeMap final { std::string name; ItemType::Type type; + std::string useButton; }; #endif // RESOURCES_ITEMTYPEMAP_H diff --git a/src/resources/itemtypemapdata.h b/src/resources/itemtypemapdata.h index c232dbe52..b1412414c 100644 --- a/src/resources/itemtypemapdata.h +++ b/src/resources/itemtypemapdata.h @@ -23,28 +23,48 @@ #include "localconsts.h" +#include "utils/gettext.h" + #include "resources/itemtypemap.h" ItemTypeMap itemTypeMap[] = { - {"generic", ItemType::UNUSABLE}, - {"other", ItemType::UNUSABLE}, - {"usable", ItemType::USABLE}, - {"equip-1hand", ItemType::EQUIPMENT_ONE_HAND_WEAPON}, - {"equip-2hand", ItemType::EQUIPMENT_TWO_HANDS_WEAPON}, - {"equip-torso", ItemType::EQUIPMENT_TORSO}, - {"equip-arms", ItemType::EQUIPMENT_ARMS}, - {"equip-head", ItemType::EQUIPMENT_HEAD}, - {"equip-legs", ItemType::EQUIPMENT_LEGS}, - {"equip-shield", ItemType::EQUIPMENT_SHIELD}, - {"equip-ring", ItemType::EQUIPMENT_RING}, - {"equip-charm", ItemType::EQUIPMENT_CHARM}, - {"equip-necklace", ItemType::EQUIPMENT_NECKLACE}, - {"equip-neck", ItemType::EQUIPMENT_NECKLACE}, - {"equip-feet", ItemType::EQUIPMENT_FEET}, - {"equip-ammo", ItemType::EQUIPMENT_AMMO}, - {"racesprite", ItemType::SPRITE_RACE}, - {"hairsprite", ItemType::SPRITE_HAIR}, + // TRANSLATORS: inventory button + {"generic", ItemType::UNUSABLE, N_("Use")}, + // TRANSLATORS: inventory button + {"other", ItemType::UNUSABLE, N_("Use")}, + // TRANSLATORS: inventory button + {"usable", ItemType::USABLE, N_("Use")}, + // TRANSLATORS: inventory button + {"equip-1hand", ItemType::EQUIPMENT_ONE_HAND_WEAPON, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-2hand", ItemType::EQUIPMENT_TWO_HANDS_WEAPON, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-torso", ItemType::EQUIPMENT_TORSO, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-arms", ItemType::EQUIPMENT_ARMS, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-head", ItemType::EQUIPMENT_HEAD, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-legs", ItemType::EQUIPMENT_LEGS, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-shield", ItemType::EQUIPMENT_SHIELD, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-ring", ItemType::EQUIPMENT_RING, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-charm", ItemType::EQUIPMENT_CHARM, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-necklace", ItemType::EQUIPMENT_NECKLACE, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-neck", ItemType::EQUIPMENT_NECKLACE, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-feet", ItemType::EQUIPMENT_FEET, N_("Equip")}, + // TRANSLATORS: inventory button + {"equip-ammo", ItemType::EQUIPMENT_AMMO, N_("Equip")}, + // TRANSLATORS: inventory button + {"racesprite", ItemType::SPRITE_RACE, N_("Use")}, + // TRANSLATORS: inventory button + {"hairsprite", ItemType::SPRITE_HAIR, N_("Use")}, }; #endif // RESOURCES_ITEMTYPEMAPDATA_H -- cgit v1.2.3-60-g2f50