summaryrefslogtreecommitdiff
path: root/plugins/sort.cpp
diff options
context:
space:
mode:
authorAlexander Gavrilov2012-05-21 22:29:03 +0400
committerAlexander Gavrilov2012-05-21 22:29:03 +0400
commit81022451c2c474a3f362eddb091ce0444c51243c (patch)
tree8a1deb3add64a78a19df24a4cbbd21643cfc5bb4 /plugins/sort.cpp
parent34f08c0223db45203cb2de760b6a1edca76f39ee (diff)
downloaddfhack-81022451c2c474a3f362eddb091ce0444c51243c.tar.gz
dfhack-81022451c2c474a3f362eddb091ce0444c51243c.tar.bz2
dfhack-81022451c2c474a3f362eddb091ce0444c51243c.tar.xz
Support sorting items in stocks, and correct unit sorting in joblist.
Diffstat (limited to 'plugins/sort.cpp')
-rw-r--r--plugins/sort.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/plugins/sort.cpp b/plugins/sort.cpp
index 9274a4cf..5748a065 100644
--- a/plugins/sort.cpp
+++ b/plugins/sort.cpp
@@ -6,6 +6,7 @@
#include "modules/Gui.h"
#include "modules/Translation.h"
#include "modules/Units.h"
+#include "modules/Job.h"
#include "LuaTools.h"
@@ -22,6 +23,7 @@
#include "df/viewscreen_tradegoodsst.h"
#include "df/viewscreen_dwarfmodest.h"
#include "df/viewscreen_petst.h"
+#include "df/viewscreen_storesst.h"
#include "df/layer_object_listst.h"
#include "df/assign_trade_status.h"
@@ -273,7 +275,16 @@ DEFINE_SORT_HANDLER(unit_sorters, joblist, "", jobs)
{
PARSE_SPEC("units", parameters);
- if (compute_order(*pout, L, top, &order, jobs->units))
+ std::vector<df::unit*> units;
+ for (size_t i = 0; i < jobs->units.size(); i++)
+ {
+ auto unit = jobs->units[i];
+ if (!unit && jobs->jobs[i])
+ unit = Job::getWorker(jobs->jobs[i]);
+ units.push_back(unit);
+ }
+
+ if (compute_order(*pout, L, top, &order, units))
{
reorder_cursor(&jobs->cursor_pos, order);
reorder_vector(&jobs->units, order);
@@ -526,6 +537,17 @@ DEFINE_SORT_HANDLER(item_sorters, layer_assigntrade, "/Items", bring)
}
}
+DEFINE_SORT_HANDLER(item_sorters, stores, "/Items", stocks)
+{
+ PARSE_SPEC("items", parameters);
+
+ if (compute_order(*pout, L, top, &order, stocks->items))
+ {
+ reorder_cursor(&stocks->item_cursor, order);
+ reorder_vector(&stocks->items, order);
+ }
+}
+
static bool item_list_hotkey(df::viewscreen *screen)
{
auto focus = Gui::getFocusString(screen);