summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-01-17 15:57:05 +0300
committerAndrei Karas <akaras@inbox.ru>2016-01-17 19:19:57 +0300
commit261a118937d8b1cd41cf16d983f880e5957f84b1 (patch)
treed7b44426193cc31d309bebd801068b3960cdce60
parent41141188d70dd7d6e0b8667bda9d0f6569c0b97b (diff)
downloadplus-261a118937d8b1cd41cf16d983f880e5957f84b1.tar.gz
plus-261a118937d8b1cd41cf16d983f880e5957f84b1.tar.bz2
plus-261a118937d8b1cd41cf16d983f880e5957f84b1.tar.xz
plus-261a118937d8b1cd41cf16d983f880e5957f84b1.zip
Extend addchat command with support for cards.
-rw-r--r--src/actions/commands.cpp28
-rw-r--r--src/resources/db/itemdb.cpp16
-rw-r--r--src/resources/db/itemdb.h2
3 files changed, 32 insertions, 14 deletions
diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp
index bb43e2a9d..2cfe01720 100644
--- a/src/actions/commands.cpp
+++ b/src/actions/commands.cpp
@@ -284,22 +284,20 @@ impHandler(chatAdd)
if (event.args.empty())
return true;
- const int id = atoi(event.args.c_str());
- if (id == 0)
+ std::vector<int> str;
+ splitToIntVector(str, event.args, ',');
+ if (str.empty())
return true;
- Inventory *const inv = PlayerInfo::getInventory();
- const Item *item = nullptr;
- if (inv)
- {
- // +++ need add also color here
- item = inv->findItem(id, ItemColor_one);
- }
+ int id = str[0];
+ if (id == 0)
+ return true;
- if (item)
+ if (ItemDB::exists(id))
{
- // +++ need add also color here
- chatWindow->addItemText(item->getInfo().getName());
+ const std::string names = ItemDB::getNamesStr(str);
+ if (!names.empty())
+ chatWindow->addItemText(names);
return true;
}
@@ -308,8 +306,10 @@ impHandler(chatAdd)
if (floorItem)
{
- // +++ need add also color here
- chatWindow->addItemText(floorItem->getInfo().getName());
+ str[0] = floorItem->getItemId();
+ logger->log("parts: %d", (int)str.size());
+ const std::string names = ItemDB::getNamesStr(str);
+ chatWindow->addItemText(names);
}
return true;
}
diff --git a/src/resources/db/itemdb.cpp b/src/resources/db/itemdb.cpp
index b4af71c17..9a815bed6 100644
--- a/src/resources/db/itemdb.cpp
+++ b/src/resources/db/itemdb.cpp
@@ -1056,6 +1056,22 @@ static void loadOrderSprite(ItemInfo *const itemInfo,
itemInfo->setDrawPriority(direction, priority);
}
+std::string ItemDB::getNamesStr(const std::vector<int> &parts)
+{
+ std::string str;
+ FOR_EACH (std::vector<int>::const_iterator, it, parts)
+ {
+ const int id = *it;
+ if (exists(id))
+ {
+ if (!str.empty())
+ str.append(",");
+ str.append(get(id).getName());
+ }
+ }
+ return str;
+}
+
#ifdef UNITTESTS
ItemDB::NamedItemInfos &ItemDB::getNamedItemInfosTest()
{
diff --git a/src/resources/db/itemdb.h b/src/resources/db/itemdb.h
index 9231bbfc8..7cc47b121 100644
--- a/src/resources/db/itemdb.h
+++ b/src/resources/db/itemdb.h
@@ -60,6 +60,8 @@ namespace ItemDB
const ItemDB::ItemInfos &getItemInfos();
+ std::string getNamesStr(const std::vector<int> &parts);
+
#ifdef UNITTESTS
ItemDB::NamedItemInfos &getNamedItemInfosTest();
#endif