summaryrefslogtreecommitdiff
path: root/plugins/rename.cpp
diff options
context:
space:
mode:
authorAlexander Gavrilov2012-02-22 17:44:36 +0400
committerAlexander Gavrilov2012-02-22 17:44:36 +0400
commite88d5cb035784f421c8650a436f32be5ada24705 (patch)
tree57318bf1c65aaef2eb64c5c549c3bf2bd25001e7 /plugins/rename.cpp
parent34c9c2d663198ce33a270bfa84332684d4cba22b (diff)
downloaddfhack-e88d5cb035784f421c8650a436f32be5ada24705.tar.gz
dfhack-e88d5cb035784f421c8650a436f32be5ada24705.tar.bz2
dfhack-e88d5cb035784f421c8650a436f32be5ada24705.tar.xz
Fix rename squad: use entity data to skip squads from abandoned forts.
Diffstat (limited to 'plugins/rename.cpp')
-rw-r--r--plugins/rename.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/plugins/rename.cpp b/plugins/rename.cpp
index 12267151..09d737be 100644
--- a/plugins/rename.cpp
+++ b/plugins/rename.cpp
@@ -11,6 +11,7 @@
#include "df/squad.h"
#include "df/unit.h"
#include "df/unit_soul.h"
+#include "df/historical_entity.h"
#include "df/historical_figure.h"
#include "df/historical_figure_info.h"
#include "df/assumed_identity.h"
@@ -66,6 +67,18 @@ static void set_nickname(df::language_name *name, std::string nick)
name->nickname = nick;
}
+static df::squad *getSquadByIndex(unsigned idx)
+{
+ auto entity = df::historical_entity::find(ui->group_id);
+ if (!entity)
+ return NULL;
+
+ if (idx >= entity->squads.size())
+ return NULL;
+
+ return df::squad::find(entity->squads[idx]);
+}
+
static command_result rename(Core * c, vector <string> &parameters)
{
CoreSuspender suspend(c);
@@ -79,15 +92,15 @@ static command_result rename(Core * c, vector <string> &parameters)
if (parameters.size() != 3)
return CR_WRONG_USAGE;
- 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");
+ df::squad *squad = getSquadByIndex(id-1);
+
+ if (!squad) {
+ c->con.printerr("Couldn't find squad with index %d.\n", id);
return CR_WRONG_USAGE;
}
- squads[id-1]->alias = parameters[2];
+ squad->alias = parameters[2];
}
else if (cmd == "hotkey")
{