summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-02-25 18:37:52 +0300
committerAndrei Karas <akaras@inbox.ru>2016-02-25 18:37:52 +0300
commit86c02e2712e2177ae6a41bbfa66e6284d6ff9b15 (patch)
treeee2bfa8e5d4d37c64516b822650000c5f3c1be9f
parent03eb816ad582e712f05696e65a3d443fcf181222 (diff)
downloadmanaplus-86c02e2712e2177ae6a41bbfa66e6284d6ff9b15.tar.gz
manaplus-86c02e2712e2177ae6a41bbfa66e6284d6ff9b15.tar.bz2
manaplus-86c02e2712e2177ae6a41bbfa66e6284d6ff9b15.tar.xz
manaplus-86c02e2712e2177ae6a41bbfa66e6284d6ff9b15.zip
Add chat command /loadposition. Also add it to player context menu.
-rw-r--r--src/actions/commands.cpp6
-rw-r--r--src/actions/commands.h1
-rw-r--r--src/dyetool/actions/commands.cpp1
-rw-r--r--src/enums/input/inputaction.h1
-rw-r--r--src/gui/popups/popupmenu.cpp5
-rw-r--r--src/input/inputactionmap.h6
-rw-r--r--src/net/adminhandler.h2
-rw-r--r--src/net/eathena/adminhandler.cpp5
-rw-r--r--src/net/eathena/adminhandler.h2
-rw-r--r--src/net/tmwa/adminhandler.cpp4
-rw-r--r--src/net/tmwa/adminhandler.h3
11 files changed, 35 insertions, 1 deletions
diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp
index ebb472130..771bf0ed5 100644
--- a/src/actions/commands.cpp
+++ b/src/actions/commands.cpp
@@ -1375,4 +1375,10 @@ impHandler(commandSavePosition)
return true;
}
+impHandler(commandLoadPosition)
+{
+ adminHandler->loadPosition(event.args);
+ return true;
+}
+
} // namespace Actions
diff --git a/src/actions/commands.h b/src/actions/commands.h
index 130efec9a..c7b1b60cb 100644
--- a/src/actions/commands.h
+++ b/src/actions/commands.h
@@ -117,6 +117,7 @@ namespace Actions
decHandler(commandSpawnSlaveClone);
decHandler(commandSpawnEvilClone);
decHandler(commandSavePosition);
+ decHandler(commandLoadPosition);
} // namespace Actions
#undef decHandler
diff --git a/src/dyetool/actions/commands.cpp b/src/dyetool/actions/commands.cpp
index 984d814d3..3f6254053 100644
--- a/src/dyetool/actions/commands.cpp
+++ b/src/dyetool/actions/commands.cpp
@@ -117,5 +117,6 @@ impHandlerVoid(commandSpawnClone)
impHandlerVoid(commandSpawnSlaveClone)
impHandlerVoid(commandSpawnEvilClone)
impHandlerVoid(commandSavePosition)
+impHandlerVoid(commandLoadPosition)
} // namespace Actions
diff --git a/src/enums/input/inputaction.h b/src/enums/input/inputaction.h
index 5844e36be..c3e04d935 100644
--- a/src/enums/input/inputaction.h
+++ b/src/enums/input/inputaction.h
@@ -646,6 +646,7 @@ enumStart(InputAction)
COMMAND_SPAWN_SLAVE_CLONE,
COMMAND_SPAWN_EVIL_CLONE,
COMMAND_SAVE_POSITION,
+ COMMAND_LOAD_POSITION,
TOTAL
}
enumEnd(InputAction);
diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp
index cdcbf836a..763bdd771 100644
--- a/src/gui/popups/popupmenu.cpp
+++ b/src/gui/popups/popupmenu.cpp
@@ -2737,7 +2737,10 @@ void PopupMenu::showPlayerGMCommands()
}
// TRANSLATORS: popup menu item
// TRANSLATORS: set player save position
- mBrowserBox->addRow("/savepos", _("Set save position"));
+ mBrowserBox->addRow("/savepos 'NAME'", _("Set save position"));
+ // TRANSLATORS: popup menu item
+ // TRANSLATORS: warp player to save position
+ mBrowserBox->addRow("/loadpos 'NAME'", _("Warp to 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 be335c9fb..1289a9ecd 100644
--- a/src/input/inputactionmap.h
+++ b/src/input/inputactionmap.h
@@ -5365,6 +5365,12 @@ static const InputActionData inputActionData
"savepos|saveposition",
UseArgs_true,
Protected_true},
+ {"keyCommandLoadPosition",
+ defaultAction(&Actions::commandLoadPosition),
+ InputCondition::INGAME,
+ "loadpos|loadposition",
+ UseArgs_true,
+ Protected_true},
};
#undef defaultAction
diff --git a/src/net/adminhandler.h b/src/net/adminhandler.h
index 963356a81..f34a47306 100644
--- a/src/net/adminhandler.h
+++ b/src/net/adminhandler.h
@@ -136,6 +136,8 @@ class AdminHandler notfinal
virtual void spawnEvilClone(const std::string &name) const = 0;
virtual void savePosition(const std::string &name) const = 0;
+
+ virtual void loadPosition(const std::string &name) const = 0;
};
} // namespace Net
diff --git a/src/net/eathena/adminhandler.cpp b/src/net/eathena/adminhandler.cpp
index 9794a8b51..80a1df983 100644
--- a/src/net/eathena/adminhandler.cpp
+++ b/src/net/eathena/adminhandler.cpp
@@ -255,4 +255,9 @@ void AdminHandler::savePosition(const std::string &name) const
Gm::runCharCommand("save", name);
}
+void AdminHandler::loadPosition(const std::string &name) const
+{
+ Gm::runCharCommand("load", name);
+}
+
} // namespace EAthena
diff --git a/src/net/eathena/adminhandler.h b/src/net/eathena/adminhandler.h
index d0212a027..e5b5e511a 100644
--- a/src/net/eathena/adminhandler.h
+++ b/src/net/eathena/adminhandler.h
@@ -110,6 +110,8 @@ class AdminHandler final : public Ea::AdminHandler
void savePosition(const std::string &name) const override final;
+ void loadPosition(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 264eca1ad..69bdf27b8 100644
--- a/src/net/tmwa/adminhandler.cpp
+++ b/src/net/tmwa/adminhandler.cpp
@@ -199,4 +199,8 @@ void AdminHandler::savePosition(const std::string &name A_UNUSED) const
{
}
+void AdminHandler::loadPosition(const std::string &name A_UNUSED) const
+{
+}
+
} // namespace TmwAthena
diff --git a/src/net/tmwa/adminhandler.h b/src/net/tmwa/adminhandler.h
index 0aaa64f17..9d0471b8c 100644
--- a/src/net/tmwa/adminhandler.h
+++ b/src/net/tmwa/adminhandler.h
@@ -121,6 +121,9 @@ class AdminHandler final : public Ea::AdminHandler
void savePosition(const std::string &name) const override final
A_CONST;
+
+ void loadPosition(const std::string &name) const override final
+ A_CONST;
};
} // namespace TmwAthena