summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-09-28 15:04:05 +0300
committerAndrei Karas <akaras@inbox.ru>2014-09-28 15:04:05 +0300
commit0278a66e30a3f2df0932ee501b5e5dc09b1a23ce (patch)
tree733f005cf75347666908bf5cf40e99e870cb728c /src
parent5a537c0ee685a7afc332f6707fd255032eb9d77b (diff)
downloadmanaplus-0278a66e30a3f2df0932ee501b5e5dc09b1a23ce.tar.gz
manaplus-0278a66e30a3f2df0932ee501b5e5dc09b1a23ce.tar.bz2
manaplus-0278a66e30a3f2df0932ee501b5e5dc09b1a23ce.tar.xz
manaplus-0278a66e30a3f2df0932ee501b5e5dc09b1a23ce.zip
Show portal names in popup if portal not present at map.
Diffstat (limited to 'src')
-rw-r--r--src/actormanager.cpp4
-rw-r--r--src/being/being.cpp3
-rw-r--r--src/net/ea/beinghandler.cpp19
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();