Add a plugin to rename squads and hotkeys (without the 9 char limit).

develop
Alexander Gavrilov 2011-12-29 17:37:07 +04:00
parent d7faa6c471
commit 298e2fe92d
3 changed files with 120 additions and 3 deletions

@ -91,9 +91,35 @@ struct Core::Cond
void cheap_tokenise(string const& input, vector<string> &output)
{
istringstream str(input);
istream_iterator<string> cur(str), end;
output.assign(cur, end);
string *cur = NULL;
for (unsigned i = 0; i < input.size(); i++) {
char c = input[i];
if (isspace(c)) {
cur = NULL;
} else {
if (!cur) {
output.push_back("");
cur = &output.back();
}
if (c == '"') {
for (i++; i < input.size(); i++) {
c = input[i];
if (c == '"')
break;
else if (c == '\\') {
if (++i < input.size())
cur->push_back(input[i]);
}
else
cur->push_back(c);
}
} else {
cur->push_back(c);
}
}
}
}
struct IODATA

@ -59,6 +59,7 @@ DFHACK_PLUGIN(filltraffic filltraffic.cpp)
DFHACK_PLUGIN(seedwatch seedwatch.cpp)
DFHACK_PLUGIN(initflags initflags.cpp)
DFHACK_PLUGIN(stockpiles stockpiles.cpp)
DFHACK_PLUGIN(rename rename.cpp)
#DFHACK_PLUGIN(versionosd versionosd.cpp)
# this is the skeleton plugin. If you want to make your own, make a copy and then change it

@ -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;
}