blob: ce76bf04eb48402ac3f593f98f948b0f21371701 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
|