From 14800b09f0cc47ab4452039c45ba99295a40e2d8 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 25 Feb 2016 00:53:34 +0300 Subject: Add chat command /saveposition. Also add it to player context menu. --- src/actions/commands.cpp | 6 ++++++ src/actions/commands.h | 1 + src/dyetool/actions/commands.cpp | 1 + src/enums/input/inputaction.h | 1 + src/gui/popups/popupmenu.cpp | 3 +++ src/input/inputactionmap.h | 6 ++++++ src/net/adminhandler.h | 2 ++ src/net/eathena/adminhandler.cpp | 8 ++++++++ src/net/eathena/adminhandler.h | 2 ++ src/net/tmwa/adminhandler.cpp | 4 ++++ src/net/tmwa/adminhandler.h | 3 +++ 11 files changed, 37 insertions(+) (limited to 'src') diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp index fe53ffa61..cdb1fa69c 100644 --- a/src/actions/commands.cpp +++ b/src/actions/commands.cpp @@ -1368,4 +1368,10 @@ impHandler(commandSpawnEvilClone) return true; } +impHandler(commandSavePosition) +{ + adminHandler->savePosition(event.args); + return true; +} + } // namespace Actions diff --git a/src/actions/commands.h b/src/actions/commands.h index ee4492818..130efec9a 100644 --- a/src/actions/commands.h +++ b/src/actions/commands.h @@ -116,6 +116,7 @@ namespace Actions decHandler(commandSpawnClone); decHandler(commandSpawnSlaveClone); decHandler(commandSpawnEvilClone); + decHandler(commandSavePosition); } // namespace Actions #undef decHandler diff --git a/src/dyetool/actions/commands.cpp b/src/dyetool/actions/commands.cpp index 4c54e8d26..984d814d3 100644 --- a/src/dyetool/actions/commands.cpp +++ b/src/dyetool/actions/commands.cpp @@ -116,5 +116,6 @@ impHandlerVoid(commandSpawnSlave) impHandlerVoid(commandSpawnClone) impHandlerVoid(commandSpawnSlaveClone) impHandlerVoid(commandSpawnEvilClone) +impHandlerVoid(commandSavePosition) } // namespace Actions diff --git a/src/enums/input/inputaction.h b/src/enums/input/inputaction.h index ffcf27249..5844e36be 100644 --- a/src/enums/input/inputaction.h +++ b/src/enums/input/inputaction.h @@ -645,6 +645,7 @@ enumStart(InputAction) COMMAND_SPAWN_CLONE, COMMAND_SPAWN_SLAVE_CLONE, COMMAND_SPAWN_EVIL_CLONE, + COMMAND_SAVE_POSITION, TOTAL } enumEnd(InputAction); diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index 6e063b98c..e109be3f4 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -2734,6 +2734,9 @@ void PopupMenu::showPlayerGMCommands() // TRANSLATORS: mute menu mBrowserBox->addRow("mute", _("Mute...")); } + // TRANSLATORS: popup menu item + // TRANSLATORS: set player save position + mBrowserBox->addRow("/savepos", _("Set save position")); mBrowserBox->addRow("##3---"); // TRANSLATORS: popup menu item // TRANSLATORS: spawn player clone diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index 4faadd258..be335c9fb 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -5359,6 +5359,12 @@ static const InputActionData inputActionData "spawnevilclone|playerevilclone|evilclone", UseArgs_true, Protected_true}, + {"keyCommandSavePosition", + defaultAction(&Actions::commandSavePosition), + InputCondition::INGAME, + "savepos|saveposition", + UseArgs_true, + Protected_true}, }; #undef defaultAction diff --git a/src/net/adminhandler.h b/src/net/adminhandler.h index 63a30dc07..963356a81 100644 --- a/src/net/adminhandler.h +++ b/src/net/adminhandler.h @@ -134,6 +134,8 @@ class AdminHandler notfinal virtual void spawnSlaveClone(const std::string &name) const = 0; virtual void spawnEvilClone(const std::string &name) const = 0; + + virtual void savePosition(const std::string &name) const = 0; }; } // namespace Net diff --git a/src/net/eathena/adminhandler.cpp b/src/net/eathena/adminhandler.cpp index 16a4e999d..4c7b776f9 100644 --- a/src/net/eathena/adminhandler.cpp +++ b/src/net/eathena/adminhandler.cpp @@ -273,4 +273,12 @@ void AdminHandler::spawnEvilClone(const std::string &name) const chatHandler->talk("@evilclone " + name, GENERAL_CHANNEL); } +void AdminHandler::savePosition(const std::string &name) const +{ + if (name.empty() || (localPlayer && name == localPlayer->getName())) + chatHandler->talk("@save", GENERAL_CHANNEL); + else + chatHandler->talk("#save " + name, GENERAL_CHANNEL); +} + } // namespace EAthena diff --git a/src/net/eathena/adminhandler.h b/src/net/eathena/adminhandler.h index 1808231b5..d0212a027 100644 --- a/src/net/eathena/adminhandler.h +++ b/src/net/eathena/adminhandler.h @@ -108,6 +108,8 @@ class AdminHandler final : public Ea::AdminHandler void spawnEvilClone(const std::string &name) const override final; + void savePosition(const std::string &name) const override final; + protected: static std::string mStatsName; }; diff --git a/src/net/tmwa/adminhandler.cpp b/src/net/tmwa/adminhandler.cpp index a0c6e5457..f9180a7d8 100644 --- a/src/net/tmwa/adminhandler.cpp +++ b/src/net/tmwa/adminhandler.cpp @@ -198,4 +198,8 @@ void AdminHandler::spawnEvilClone(const std::string &name A_UNUSED) const { } +void AdminHandler::savePosition(const std::string &name A_UNUSED) const +{ +} + } // namespace TmwAthena diff --git a/src/net/tmwa/adminhandler.h b/src/net/tmwa/adminhandler.h index 94025716a..0aaa64f17 100644 --- a/src/net/tmwa/adminhandler.h +++ b/src/net/tmwa/adminhandler.h @@ -118,6 +118,9 @@ class AdminHandler final : public Ea::AdminHandler void spawnEvilClone(const std::string &name) const override final A_CONST; + + void savePosition(const std::string &name) const override final + A_CONST; }; } // namespace TmwAthena -- cgit v1.2.3-60-g2f50