diff options
| author | Alexander Gavrilov | 2012-05-18 19:18:49 +0400 |
|---|---|---|
| committer | Alexander Gavrilov | 2012-05-18 19:18:49 +0400 |
| commit | 4aa6dbdd005c8930f2ae972e780caa3fde97f854 (patch) | |
| tree | f29f5027d6a827c25a7123e4f946d82c3976cd46 /plugins/lua | |
| parent | e2f39368b17bbc9d6b380faed7ceb52b1bd8eb2d (diff) | |
| download | dfhack-4aa6dbdd005c8930f2ae972e780caa3fde97f854.tar.gz dfhack-4aa6dbdd005c8930f2ae972e780caa3fde97f854.tar.bz2 dfhack-4aa6dbdd005c8930f2ae972e780caa3fde97f854.tar.xz | |
Support sorting items in the trade screens.
Caveat: sorts items in containers independently from the container.
Diffstat (limited to 'plugins/lua')
| -rw-r--r-- | plugins/lua/sort.lua | 2 | ||||
| -rw-r--r-- | plugins/lua/sort/items.lua | 62 | ||||
| -rw-r--r-- | plugins/lua/sort/units.lua | 6 |
3 files changed, 70 insertions, 0 deletions
diff --git a/plugins/lua/sort.lua b/plugins/lua/sort.lua index f042e85c..55e83898 100644 --- a/plugins/lua/sort.lua +++ b/plugins/lua/sort.lua @@ -2,9 +2,11 @@ local _ENV = mkmodule('plugins.sort') local utils = require('utils') local units = require('plugins.sort.units') +local items = require('plugins.sort.items') orders = orders or {} orders.units = units.orders +orders.items = items.orders function parse_ordering_spec(type,...) local group = orders[type] diff --git a/plugins/lua/sort/items.lua b/plugins/lua/sort/items.lua new file mode 100644 index 00000000..2e1b3fd1 --- /dev/null +++ b/plugins/lua/sort/items.lua @@ -0,0 +1,62 @@ +local _ENV = mkmodule('plugins.sort.items') + +local utils = require('utils') + +orders = orders or {} + +-- Relies on NULL being auto-translated to NULL, and then sorted +orders.exists = { + key = function(item) + return 1 + end +} + +orders.type = { + key = function(item) + return item:getType() + end +} + +orders.description = { + key = function(item) + return dfhack.with_temp_object( + df.new "string", + function(str,item) + item:getItemDescription(str,0) + return str.value + end, + item + ) + end +} + +orders.quality = { + key = function(item) + return item:getQuality() + end +} + +orders.improvement = { + key = function(item) + return item:getImprovementQuality() + end +} + +orders.wear = { + key = function(item) + return item:getWear() + end +} + +orders.material = { + key = function(item) + local mattype = item:getActualMaterial() + local matindex = item:getActualMaterialIndex() + local info = dfhack.matinfo.decode(mattype, matindex) + if info then + return info:toString() + end + end +} + +return _ENV
\ No newline at end of file diff --git a/plugins/lua/sort/units.lua b/plugins/lua/sort/units.lua index 35795502..d8ae83a3 100644 --- a/plugins/lua/sort/units.lua +++ b/plugins/lua/sort/units.lua @@ -109,4 +109,10 @@ orders.squad_position = { end } +orders.happiness = { + key = function(unit) + return unit.status.happiness + end +} + return _ENV
\ No newline at end of file |
