mirror of
https://github.com/S4mpsa/InfOS.git
synced 2025-08-03 18:06:04 -04:00

Added check to itemstocker to detect server restart Fixed autofeeder breaking on server restart Added simple script to control turbines depending on battery level
80 lines
2.6 KiB
Lua
80 lines
2.6 KiB
Lua
comp=require("component");screen=require("term");computer=require("computer");event=require("event"); thread = require("thread"); sides = require("sides")
|
|
get=require("utility"); ARG=require("ARGraphics"); G = require("graphics")
|
|
local uc = require("unicode"); tx = require("transforms")
|
|
config = require("config")
|
|
local GPU = comp.gpu
|
|
local sUtil = {}
|
|
function sUtil.refreshCraftables()
|
|
local c = comp.me_interface.getCraftables()
|
|
local max = 0
|
|
if max > 0 then
|
|
c = tx.sub(c, 1, max)
|
|
end
|
|
for i, craftable in pairs(c) do
|
|
if i ~= "n" then
|
|
if i % 10 == 0 then
|
|
G.centeredText(GPU, currentWindows["Number"].x+25, currentWindows["Number"].y*2+3, 0xFFFFFF, "Discovering Patterns: "..i.." / "..#c)
|
|
end
|
|
end
|
|
if craftable ~= #c then
|
|
craftables[craftable.getItemStack().label] = craftable.request
|
|
end
|
|
end
|
|
G.centeredText(GPU, 86, 85, 0xFFFFFF, "Patterns in memory: "..#c)
|
|
end
|
|
local cachedAmounts = {}
|
|
function sUtil.updateCache()
|
|
local itemList = interface.getItemsInNetwork()
|
|
for i = 1, #itemList, 1 do
|
|
if i % 200 == 0 then os.sleep() end
|
|
cachedAmounts[itemList[i].label] = itemList[i].size
|
|
itemList[i] = nil
|
|
end
|
|
end
|
|
function sUtil.getAmount(itemLabel)
|
|
if cachedAmounts[itemLabel] == nil then return 0 else return cachedAmounts[itemLabel] end
|
|
end
|
|
function sUtil.uniques()
|
|
return #cachedAmounts
|
|
end
|
|
function sUtil.update(label, oldAmount, newAmount)
|
|
local file = io.open("configured", 'r')
|
|
local fileContent = {}
|
|
local lineNumber = 0
|
|
local i = 1
|
|
for line in file:lines() do
|
|
if line == label..","..oldAmount then lineNumber = i end
|
|
table.insert (fileContent, line)
|
|
i = i + 1
|
|
end
|
|
io.close(file)
|
|
file = io.open("configured", 'w')
|
|
for index, value in ipairs(fileContent) do
|
|
if index ~= lineNumber then
|
|
file:write(value..'\n')
|
|
else
|
|
file:write(label..","..newAmount..'\n')
|
|
end
|
|
end
|
|
io.close(file)
|
|
end
|
|
function sUtil.addPattern(label, amount)
|
|
local file = io.open("configured", "a")
|
|
file:write(label..","..amount.."\n")
|
|
file:close()
|
|
itemsToStock[label] = amount
|
|
end
|
|
local function split(s, sep)
|
|
local fields = {}; local sep = sep or " "; local pattern = string.format("([^%s]+)", sep)
|
|
string.gsub(s, pattern, function(c) fields[#fields + 1] = c end)
|
|
return fields
|
|
end
|
|
function sUtil.loadPatterns()
|
|
local file = io.open("configured", "r")
|
|
for line in file:lines() do
|
|
local tokens = split(line, ",")
|
|
itemsToStock[tokens[1]] = tokens[2]
|
|
end
|
|
end
|
|
|
|
return sUtil |