diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-09-28 15:04:05 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-09-28 15:04:05 +0300 |
commit | 0278a66e30a3f2df0932ee501b5e5dc09b1a23ce (patch) | |
tree | 733f005cf75347666908bf5cf40e99e870cb728c /src | |
parent | 5a537c0ee685a7afc332f6707fd255032eb9d77b (diff) | |
download | mv-0278a66e30a3f2df0932ee501b5e5dc09b1a23ce.tar.gz mv-0278a66e30a3f2df0932ee501b5e5dc09b1a23ce.tar.bz2 mv-0278a66e30a3f2df0932ee501b5e5dc09b1a23ce.tar.xz mv-0278a66e30a3f2df0932ee501b5e5dc09b1a23ce.zip |
Show portal names in popup if portal not present at map.
Diffstat (limited to 'src')
-rw-r--r-- | src/actormanager.cpp | 4 | ||||
-rw-r--r-- | src/being/being.cpp | 3 | ||||
-rw-r--r-- | src/net/ea/beinghandler.cpp | 19 |
3 files changed, 25 insertions, 1 deletions
diff --git a/src/actormanager.cpp b/src/actormanager.cpp index a27cd0f34..d920d63ac 100644 --- a/src/actormanager.cpp +++ b/src/actormanager.cpp @@ -253,6 +253,10 @@ Being *ActorManager::createBeing(const int id, if (localPlayer) localPlayer->checkNewName(being); } + else if (type == ActorType::Portal) + { + beingHandler->requestNameById(id); + } if (type == ActorType::Player) { if (botCheckerWindow) diff --git a/src/being/being.cpp b/src/being/being.cpp index 0779be63b..3cc51ef9d 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -233,6 +233,9 @@ Being::Being(const int id, mGotComment = true; } + if (mType == ActorType::Portal) + mShowName = false; + config.addListener("visiblenames", this); reReadConfig(); diff --git a/src/net/ea/beinghandler.cpp b/src/net/ea/beinghandler.cpp index f9fdf3c38..fe42daedc 100644 --- a/src/net/ea/beinghandler.cpp +++ b/src/net/ea/beinghandler.cpp @@ -33,10 +33,14 @@ #include "particle/particle.h" +#include "gui/viewport.h" + #include "gui/windows/botcheckerwindow.h" #include "gui/windows/socialwindow.h" #include "gui/windows/killstats.h" +#include "resources/mapitemtype.h" + #include "resources/map/map.h" #include "debug.h" @@ -331,7 +335,20 @@ void BeingHandler::processNameResponse(Net::MessageIn &msg) const } else { - dstBeing->setName(msg.readString(24, "name")); + const std::string name = msg.readString(24, "name"); + if (dstBeing->getType() != ActorType::Portal) + { + dstBeing->setName(name); + } + else if (viewport) + { + Map *const map = viewport->getMap(); + if (map) + { + map->addPortalTile(name, MapItemType::PORTAL, + dstBeing->getTileX(), dstBeing->getTileY()); + } + } dstBeing->updateGuild(); dstBeing->addToCache(); |