summaryrefslogtreecommitdiff
path: root/shop2/stock.lua
diff options
context:
space:
mode:
Diffstat (limited to 'shop2/stock.lua')
-rw-r--r--shop2/stock.lua39
1 files changed, 39 insertions, 0 deletions
diff --git a/shop2/stock.lua b/shop2/stock.lua
new file mode 100644
index 0000000..ce76bf0
--- /dev/null
+++ b/shop2/stock.lua
@@ -0,0 +1,39 @@
+
+
+local chest
+for _,name in ipairs(peripheral.getNames()) do
+ if name:match("chest") then chest = peripheral.wrap(name) break end
+end
+assert(chest,"couldn't find chest")
+-- might not work if there are multiple modems but why would you do that
+local localname = peripheral.find("modem").getNameLocal()
+
+local function take_stock()
+ -- if you do this in parallel, you avoid having to wait 1 tick for each
+ -- slot of the chest. which is probably good.
+ local out = {}
+ local fns = {}
+ for i=1,chest.size() do
+ fns[i] = function() out[i] = chest.getItemDetail(i) end
+ end
+ parallel.waitForAll(unpack(fns))
+ return out
+end
+
+local function item_desc_matches(idesc,itemdetail)
+ -- idesc is an entry from ITEMS
+ -- itemdetail is something returned from getItemDetail on the chest
+ -- if you were wondering
+ return idesc.itname == itemdetail.name
+end
+
+local function stock_amt(stockinfo,idesc)
+ local total = 0
+ for ix,itm in pairs(stockinfo) do
+ if item_desc_matches(idesc,itm) then
+ total = total + itm.count
+ end
+ end
+ return total
+end
+