diff --git a/Programs/monitor-system/domain/miner/get-miner-status-usecase.lua b/Programs/monitor-system/domain/miner/get-miner-status-usecase.lua index 51c7377..9c1072d 100644 --- a/Programs/monitor-system/domain/miner/get-miner-status-usecase.lua +++ b/Programs/monitor-system/domain/miner/get-miner-status-usecase.lua @@ -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 diff --git a/Programs/monitor-system/domain/miner/list-miners-usecase.lua b/Programs/monitor-system/domain/miner/list-miners-usecase.lua index 9727185..d5c4490 100644 --- a/Programs/monitor-system/domain/miner/list-miners-usecase.lua +++ b/Programs/monitor-system/domain/miner/list-miners-usecase.lua @@ -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 diff --git a/Programs/monitor-system/init.lua b/Programs/monitor-system/init.lua index 808a9cb..547c519 100755 --- a/Programs/monitor-system/init.lua +++ b/Programs/monitor-system/init.lua @@ -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)