diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-12-28 17:07:33 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-12-28 17:07:33 +0300 |
commit | 2cfa0d17583869b7a2fb6e558b160e46389f5599 (patch) | |
tree | f47e37d1c955365f9173ab53a1e9602e29903096 /src/gui/windows/chatwindow.cpp | |
parent | 4e7669dd6e07658fa86878d1e64c482a094b3b19 (diff) | |
download | manaplus-2cfa0d17583869b7a2fb6e558b160e46389f5599.tar.gz manaplus-2cfa0d17583869b7a2fb6e558b160e46389f5599.tar.bz2 manaplus-2cfa0d17583869b7a2fb6e558b160e46389f5599.tar.xz manaplus-2cfa0d17583869b7a2fb6e558b160e46389f5599.zip |
Impliment actual move actions from pet commands.
Diffstat (limited to 'src/gui/windows/chatwindow.cpp')
-rw-r--r-- | src/gui/windows/chatwindow.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/gui/windows/chatwindow.cpp b/src/gui/windows/chatwindow.cpp index 524256dd4..7f6c2e731 100644 --- a/src/gui/windows/chatwindow.cpp +++ b/src/gui/windows/chatwindow.cpp @@ -1513,6 +1513,15 @@ bool ChatWindow::resortChatLog(std::string line, localPetEmote(nick, static_cast<uint8_t>( atoi(line.c_str()))); } + else if (line.find(": \302\202\302m") != std::string::npos) + { + const std::string nick = line.substr(0, idx2 - 1); + line = line.substr(idx2 + 6); + int x = 0; + int y = 0; + if (parse2Int(line, x, y)) + localPetMove(nick, x, y); + } // ignore other special message formats. return false; } @@ -1670,6 +1679,22 @@ void ChatWindow::localPetEmote(const std::string &nick, const uint8_t emoteId) } } +void ChatWindow::localPetMove(const std::string &nick, + const int x, const int y) +{ + Being *const being = actorManager->findBeingByName( + nick, ActorType::Player); + if (being) + { + Being *const pet = being->getFirstPet(); + if (pet) + { + pet->setDestination(x, y); + pet->disablePetAi(); + } + } +} + void ChatWindow::initTradeFilter() { const std::string tradeListName = settings.serverConfigDir |