summaryrefslogtreecommitdiff
path: root/plugins/rename.cpp
diff options
context:
space:
mode:
authorAlexander Gavrilov2011-12-29 17:37:07 +0400
committerAlexander Gavrilov2011-12-29 17:37:07 +0400
commit298e2fe92d7b709be4528f2eb15380bdd92a54da (patch)
tree66ad93cdcc060878d4aa6c272f9a55d62abbed33 /plugins/rename.cpp
parentd7faa6c4711435d0af33f97ebf7ec4f5f3701bbf (diff)
downloaddfhack-298e2fe92d7b709be4528f2eb15380bdd92a54da.tar.gz
dfhack-298e2fe92d7b709be4528f2eb15380bdd92a54da.tar.bz2
dfhack-298e2fe92d7b709be4528f2eb15380bdd92a54da.tar.xz
Add a plugin to rename squads and hotkeys (without the 9 char limit).
Diffstat (limited to 'plugins/rename.cpp')
-rw-r--r--plugins/rename.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/plugins/rename.cpp b/plugins/rename.cpp
new file mode 100644
index 00000000..3b695106
--- /dev/null
+++ b/plugins/rename.cpp
@@ -0,0 +1,90 @@
+#include <dfhack/Core.h>
+#include <dfhack/Console.h>
+#include <dfhack/Export.h>
+#include <dfhack/PluginManager.h>
+
+#include <dfhack/DataDefs.h>
+#include <dfhack/df/ui.h>
+#include <dfhack/df/world.h>
+#include <dfhack/df/squad.h>
+
+#include <stdlib.h>
+
+using std::vector;
+using std::string;
+using std::endl;
+using namespace DFHack;
+using namespace df::enums;
+
+using df::global::ui;
+using df::global::world;
+
+static command_result rename(Core * c, vector <string> & parameters);
+
+DFhackCExport const char * plugin_name ( void )
+{
+ return "rename";
+}
+
+DFhackCExport command_result plugin_init (Core *c, std::vector <PluginCommand> &commands)
+{
+ commands.clear();
+ if (world && ui) {
+ commands.push_back(PluginCommand("rename", "Rename various things.", rename));
+ }
+ return CR_OK;
+}
+
+DFhackCExport command_result plugin_shutdown ( Core * c )
+{
+ return CR_OK;
+}
+
+static command_result usage(Core *c)
+{
+ c->con << "Usage:" << endl
+ << " rename squad <index> \"name\"" << endl
+ << " rename hotkey <index> \"name\"" << endl;
+ return CR_OK;
+}
+
+static command_result rename(Core * c, vector <string> &parameters)
+{
+ CoreSuspender suspend(c);
+
+ string cmd;
+ if (!parameters.empty())
+ cmd = parameters[0];
+
+ if (cmd == "squad") {
+ if (parameters.size() != 3)
+ return usage(c);
+
+ std::vector<df::squad*> &squads = world->squads.all;
+
+ int id = atoi(parameters[1].c_str());
+ if (id < 1 || id > squads.size()) {
+ c->con.printerr("Invalid squad index\n");
+ return usage(c);
+ }
+
+ squads[id-1]->alias = parameters[2];
+ } else if (cmd == "hotkey") {
+ if (parameters.size() != 3)
+ return usage(c);
+
+ int id = atoi(parameters[1].c_str());
+ if (id < 1 || id > 16) {
+ c->con.printerr("Invalid hotkey index\n");
+ return usage(c);
+ }
+
+ ui->main.hotkeys[id-1].name = parameters[2];
+ } else {
+ if (!parameters.empty() && cmd != "?")
+ c->con.printerr("Invalid command: %s\n", cmd.c_str());
+ return usage(c);
+ }
+
+ return CR_OK;
+}