diff options
| author | Alexander Gavrilov | 2011-12-29 17:37:07 +0400 |
|---|---|---|
| committer | Alexander Gavrilov | 2011-12-29 17:37:07 +0400 |
| commit | 298e2fe92d7b709be4528f2eb15380bdd92a54da (patch) | |
| tree | 66ad93cdcc060878d4aa6c272f9a55d62abbed33 /plugins/rename.cpp | |
| parent | d7faa6c4711435d0af33f97ebf7ec4f5f3701bbf (diff) | |
| download | dfhack-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.cpp | 90 |
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> ¶meters) +{ + 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; +} |
