From dc599c219c283a4f7517c8ffe1e781b9847ef045 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 2 Oct 2013 22:56:43 +0300 Subject: add support for /me command inside /away comand. Example: /away /me sleeping --- src/being/localplayer.cpp | 26 ++++++++++++++++++++++---- src/being/localplayer.h | 2 ++ src/defaults.cpp | 1 + 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp index 3da2f7ed9..de2f3f30c 100644 --- a/src/being/localplayer.cpp +++ b/src/being/localplayer.cpp @@ -3507,16 +3507,31 @@ void LocalPlayer::tryPingRequest() void LocalPlayer::setAway(const std::string &message) { - if (!message.empty()) - config.setValue("afkMessage", message); + setAfkMessage(message); changeAwayMode(); updateStatus(); } -void LocalPlayer::setPseudoAway(const std::string &message) +void LocalPlayer::setAfkMessage(std::string message) { if (!message.empty()) + { + if (message.size() > 4 && message.substr(0, 4) == "/me ") + { + message = message.substr(4); + config.setValue("afkFormat", 1); + } + else + { + config.setValue("afkFormat", 0); + } config.setValue("afkMessage", message); + } +} + +void LocalPlayer::setPseudoAway(const std::string &message) +{ + setAfkMessage(message); mPseudoAwayMode = !mPseudoAwayMode; } @@ -3528,9 +3543,12 @@ void LocalPlayer::afkRespond(ChatTab *const tab, const std::string &nick) if (mAfkTime == 0 || time < mAfkTime || time - mAfkTime > awayLimitTimer) { - const std::string msg("*AFK*: " + std::string msg("*AFK*: " + config.getStringValue("afkMessage")); + if (config.getIntValue("afkFormat") == 1) + msg = "*" + msg + "*"; + if (!tab) { Net::getChatHandler()->privateMessage(nick, msg); diff --git a/src/being/localplayer.h b/src/being/localplayer.h index adf712187..735c4b58c 100644 --- a/src/being/localplayer.h +++ b/src/being/localplayer.h @@ -330,6 +330,8 @@ class LocalPlayer final : public Being, void afkRespond(ChatTab *const tab, const std::string &nick); + void setAfkMessage(std::string message); + bool navigateTo(const int x, const int y); void navigateTo(const Being *const being); diff --git a/src/defaults.cpp b/src/defaults.cpp index 6e44aa36f..40b8fec66 100644 --- a/src/defaults.cpp +++ b/src/defaults.cpp @@ -98,6 +98,7 @@ DefaultsData* getConfigDefaults() AddDEF("disableGameModifiers", false); AddDEF("targetDeadPlayers", false); AddDEF("afkMessage", "I am away from keyboard."); + AddDEF("afkFormat", 0); AddDEF("particleMaxCount", 3000); AddDEF("particleFastPhysics", 1); AddDEF("particleEmitterSkip", 1); -- cgit v1.2.3-70-g09d2