summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-12-12 18:13:32 +0300
committerAndrei Karas <akaras@inbox.ru>2014-12-12 18:13:32 +0300
commita1e54a22abd85e1913a25ef63c947210c2dd8ddc (patch)
tree61fd55570417b0063f55a99c0d7c9d6ddc9ac616 /src
parent1a31a833cee6ea7cd37e12742b64110747e8d6ab (diff)
downloadmv-a1e54a22abd85e1913a25ef63c947210c2dd8ddc.tar.gz
mv-a1e54a22abd85e1913a25ef63c947210c2dd8ddc.tar.bz2
mv-a1e54a22abd85e1913a25ef63c947210c2dd8ddc.tar.xz
mv-a1e54a22abd85e1913a25ef63c947210c2dd8ddc.zip
Add chat command for add item name to chat.
New chat command: /addchat ID Alias: /chatadd ID
Diffstat (limited to 'src')
-rw-r--r--src/actions/commands.cpp43
-rw-r--r--src/actions/commands.h1
-rw-r--r--src/input/inputaction.h1
-rw-r--r--src/input/inputactionmap.h9
4 files changed, 54 insertions, 0 deletions
diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp
index 6708567cf..151e54474 100644
--- a/src/actions/commands.cpp
+++ b/src/actions/commands.cpp
@@ -22,10 +22,14 @@
#include "actormanager.h"
#include "configuration.h"
+#include "flooritem.h"
+#include "inventory.h"
+#include "item.h"
#include "actions/actiondef.h"
#include "being/localplayer.h"
+#include "being/playerinfo.h"
#include "being/playerrelations.h"
#include "gui/chatconsts.h"
@@ -43,6 +47,8 @@
#include "net/pethandler.h"
#include "net/serverfeatures.h"
+#include "resources/iteminfo.h"
+
#include "utils/chatutils.h"
#include "utils/gettext.h"
#include "utils/process.h"
@@ -245,6 +251,43 @@ impHandler(chatNuke)
return true;
}
+impHandler(chatAdd)
+{
+ if (!chatWindow)
+ return false;
+
+ if (event.args.empty())
+ return true;
+
+ const int id = atoi(event.args.c_str());
+ if (!id)
+ return true;
+
+ Inventory *const inv = PlayerInfo::getInventory();
+ const Item *item = nullptr;
+ if (inv)
+ {
+ // +++ need add also color here
+ item = inv->findItem(id, 1);
+ }
+
+ if (item)
+ {
+ // +++ need add also color here
+ chatWindow->addItemText(item->getInfo().getName());
+ return true;
+ }
+
+ const FloorItem *const floorItem = actorManager->findItem(id);
+
+ if (floorItem)
+ {
+ // +++ need add also color here
+ chatWindow->addItemText(floorItem->getInfo().getName());
+ }
+ return true;
+}
+
impHandler0(present)
{
if (chatWindow)
diff --git a/src/actions/commands.h b/src/actions/commands.h
index 160737572..34dcf0c44 100644
--- a/src/actions/commands.h
+++ b/src/actions/commands.h
@@ -37,6 +37,7 @@ namespace Actions
decHandler(chatEnemy);
decHandler(chatErase);
decHandler(chatNuke);
+ decHandler(chatAdd);
decHandler(present);
decHandler(printAll);
decHandler(move);
diff --git a/src/input/inputaction.h b/src/input/inputaction.h
index c020b3b5b..28bb44fd8 100644
--- a/src/input/inputaction.h
+++ b/src/input/inputaction.h
@@ -496,6 +496,7 @@ namespace InputAction
GUILD,
NUKE,
USE,
+ CHAT_ADD,
TOTAL
};
} // namespace InputAction
diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h
index f51f5f6f5..b25dfe848 100644
--- a/src/input/inputactionmap.h
+++ b/src/input/inputactionmap.h
@@ -4207,6 +4207,15 @@ static const InputActionData inputActionData[InputAction::TOTAL] = {
InputCondition::INGAME,
"use|useitem",
true},
+ {"keyChatAdd",
+ InputType::UNKNOWN, InputAction::NO_VALUE,
+ InputType::UNKNOWN, InputAction::NO_VALUE,
+ Input::GRP_DEFAULT,
+ &Actions::chatAdd,
+ InputAction::NO_VALUE, 50,
+ InputCondition::INGAME,
+ "addchat|chatadd",
+ true},
};
#endif // INPUT_INPUTACTIONMAP_H