summaryrefslogtreecommitdiff
path: root/plugins/lua
diff options
context:
space:
mode:
authorAlexander Gavrilov2012-05-18 19:18:49 +0400
committerAlexander Gavrilov2012-05-18 19:18:49 +0400
commit4aa6dbdd005c8930f2ae972e780caa3fde97f854 (patch)
treef29f5027d6a827c25a7123e4f946d82c3976cd46 /plugins/lua
parente2f39368b17bbc9d6b380faed7ceb52b1bd8eb2d (diff)
downloaddfhack-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.lua2
-rw-r--r--plugins/lua/sort/items.lua62
-rw-r--r--plugins/lua/sort/units.lua6
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