diff options
Diffstat (limited to 'shop2/stock.lua')
-rw-r--r-- | shop2/stock.lua | 39 |
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 + |