summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-08-15 02:52:07 +0300
committerAndrei Karas <akaras@inbox.ru>2011-08-15 02:52:07 +0300
commit34e386d0c2d4ae844d50185f70bba945960bad62 (patch)
tree96b2d1e4ab38dbc7b061006c3d3382f35af4a739
parent47f0e16e34cf22701b7c0670297bb7288a55310d (diff)
downloadmv-34e386d0c2d4ae844d50185f70bba945960bad62.tar.gz
mv-34e386d0c2d4ae844d50185f70bba945960bad62.tar.bz2
mv-34e386d0c2d4ae844d50185f70bba945960bad62.tar.xz
mv-34e386d0c2d4ae844d50185f70bba945960bad62.zip
Add warp menu item for gms in navigation items.
-rw-r--r--src/gui/popupmenu.cpp13
-rw-r--r--src/net/adminhandler.h1
-rw-r--r--src/net/ea/adminhandler.cpp6
-rw-r--r--src/net/ea/adminhandler.h2
-rw-r--r--src/net/manaserv/adminhandler.cpp5
-rw-r--r--src/net/manaserv/adminhandler.h2
6 files changed, 29 insertions, 0 deletions
diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp
index c95864396..a7c008684 100644
--- a/src/gui/popupmenu.cpp
+++ b/src/gui/popupmenu.cpp
@@ -502,6 +502,11 @@ void PopupMenu::showPopup(int x, int y, MapItem *mapItem)
mBrowserBox->addRow(strprintf("@@rename map|%s@@", _("Rename")));
mBrowserBox->addRow(strprintf("@@remove map|%s@@", _("Remove")));
+ if (player_node && player_node->isGM())
+ {
+ mBrowserBox->addRow("##3---");
+ mBrowserBox->addRow(strprintf("@@warp map|%s@@", _("Warp")));
+ }
mBrowserBox->addRow("##3---");
mBrowserBox->addRow(strprintf("@@cancel|%s@@", _("Cancel")));
@@ -1144,6 +1149,14 @@ void PopupMenu::handleLink(const std::string &link,
if (chatWindow)
chatWindow->clearTab();
}
+ else if (link == "warp map" && mMapItem)
+ {
+ if (Game::instance())
+ {
+ Net::getAdminHandler()->warp(Game::instance()->getCurrentMapName(),
+ mMapItem->getX(), mMapItem->getY());
+ }
+ }
else if (link == "remove map" && mMapItem)
{
if (viewport)
diff --git a/src/net/adminhandler.h b/src/net/adminhandler.h
index 2d7eccebf..d063c4eb1 100644
--- a/src/net/adminhandler.h
+++ b/src/net/adminhandler.h
@@ -53,6 +53,7 @@ class AdminHandler
virtual void mute(int playerId, int type, int limit) = 0;
+ virtual void warp(std::string map, int x, int y) = 0;
// TODO
};
diff --git a/src/net/ea/adminhandler.cpp b/src/net/ea/adminhandler.cpp
index 5440d14d0..bdd43b3f8 100644
--- a/src/net/ea/adminhandler.cpp
+++ b/src/net/ea/adminhandler.cpp
@@ -63,4 +63,10 @@ void AdminHandler::mute(int playerId A_UNUSED, int type A_UNUSED,
return; // Still looking into this
}
+void AdminHandler::warp(std::string map, int x, int y)
+{
+ Net::getChatHandler()->talk(strprintf(
+ "@warp %s %d %d", map.c_str(), x, y));
+}
+
} // namespace Ea
diff --git a/src/net/ea/adminhandler.h b/src/net/ea/adminhandler.h
index 6f77c0e18..fcf1e25b2 100644
--- a/src/net/ea/adminhandler.h
+++ b/src/net/ea/adminhandler.h
@@ -51,6 +51,8 @@ class AdminHandler : public Net::AdminHandler
virtual void unban(const std::string &name);
virtual void mute(int playerId, int type, int limit);
+
+ virtual void warp(std::string map, int x, int y);
};
} // namespace Ea
diff --git a/src/net/manaserv/adminhandler.cpp b/src/net/manaserv/adminhandler.cpp
index 72e7c7ca8..2c76e99a3 100644
--- a/src/net/manaserv/adminhandler.cpp
+++ b/src/net/manaserv/adminhandler.cpp
@@ -91,4 +91,9 @@ void AdminHandler::mute(int playerId A_UNUSED, int type A_UNUSED,
// TODO
}
+void AdminHandler::warp(std::string map, int x, int y)
+{
+ // TODO
+}
+
} // namespace ManaServ
diff --git a/src/net/manaserv/adminhandler.h b/src/net/manaserv/adminhandler.h
index a91841085..65e9ea2b0 100644
--- a/src/net/manaserv/adminhandler.h
+++ b/src/net/manaserv/adminhandler.h
@@ -58,6 +58,8 @@ class AdminHandler : public Net::AdminHandler
void unban(const std::string &name);
void mute(int playerId, int type, int limit);
+
+ void warp(std::string map, int x, int y);
};
} // namespace ManaServ