Adding miner statuses to init.

usecase now gets multiple miners
This commit is contained in:
Gabriel Moreira Minossi 2021-01-03 16:19:53 -03:00
parent ee70e0b4a8
commit d1d7a7a448
3 changed files with 33 additions and 13 deletions

View File

@ -1,5 +1,14 @@
local function exec(miner)
return miner.isMachineActive() and miner.hasWork() -- TODO: differenciate cases
local function exec(miners)
local statuses = {}
if #miners > 0 then
for address, miner in ipairs(miners) do
statuses[address] = {
active = miner:isMachineActive(),
hasWork = miner:hasWork()
}
end
end
return statuses
end
return exec

View File

@ -1,25 +1,29 @@
-- Import section
event = require("event")
local minerDatasource = require("data.datasource.miner")
local oneUp = require("resources.sound.mario-one-up")
--
local minerList = {}
local newMiners = {}
local function addToMinerList(_, address, machine)
if minerDatasource.getName(machine.getSensorInformation()) == "Multiblock Miner" then
if minerList[address] == nil then
newMiners[address] = machine
else
newMiners[address] = nil
end
minerList[address] = machine
oneUp()
end
end
local function removeMinerFromList(_, address, machine)
if minerDatasource.getName(machine.getSensorInformation()) == "Multiblock Miner" then
minerList[address] = nil
end
end
event.listen("touch", require("resources.sound.mario-one-up"))
event.listen("component_added", addToMinerList)
event.listen("component_removed", removeMinerFromList)
local function exec()
return minerList, newMiners
return minerList
end
return exec

View File

@ -12,6 +12,8 @@ local energyBufferAddress = require("config.addresses.energy-buffers")
local protectCleanroomRecipes = require("domain.cleanroom.protect-recipes-usecase")
local getMultiblockStatuses = require("domain.multiblock.get-multiblock-status-usecase")
local getEnergyStatus = require("domain.energy.get-energy-status-usecase")
local listMiners = require("domain.miner.list-miners-usecase")
local getMinersStatuses = require("domain.miner.get-miner-status-usecase")
--
local cleanroom = MultiBlock:new(multiBlockAddresses.cleanroom)
@ -29,18 +31,23 @@ local multiblocks = {cleanroom, EBF11}
local energyBuffer = EnergyProvider:new(energyBufferAddress.batteryBuffer1)
local energyProducers = {}
local multiblockStatuses = {}
local multiblocksStatuses = {}
for i = 0, 100 do
for i = 1, 100 do
print(i)
protectCleanroomRecipes(cleanroom, cleanroomMachines)
multiblockStatuses = getMultiblockStatuses(multiblocks)
multiblocksStatuses = getMultiblockStatuses(multiblocks)
local energyStatus = getEnergyStatus(energyProducers, energyBuffer)
local minersList = listMiners()
local minersStatuses = getMinersStatuses(minersList)
os.sleep(0)
i = i + 1
end
for multiblock, status in pairs(multiblockStatuses) do
for multiblock, status in pairs(multiblocksStatuses) do
print(multiblock .. ": \
problems: " .. status.problems .. "\
efficiency: " .. status.efficiencyPercentage)