Merge pull request #5 from gordominossi/feature/multiblock-statuses

Feature/multiblock statuses
This commit is contained in:
gordominossi 2021-01-03 15:30:13 -03:00 committed by GitHub
commit c1e47f4e61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 56 additions and 5 deletions

View File

@ -2,7 +2,7 @@
parser = require("utils.parser") parser = require("utils.parser")
inherits = require("utils.inherits") inherits = require("utils.inherits")
SingleBlock = require("data.datasource.single-block") SingleBlock = require("data.datasource.single-block")
local mock = require("data.mock.mock-multi-block") local mock = require("data.mock.mock-miner")
-- --
local Miner = local Miner =
@ -16,10 +16,10 @@ local Miner =
function Miner:getName() function Miner:getName()
local sensorInformation = self:getSensorInformation() local sensorInformation = self:getSensorInformation()
return parser.parseProblems(sensorInformation[1]) return parser.parseName(sensorInformation[1])
end end
function Miner:getWoarkArea() function Miner:getWorkArea()
local sensorInformation = self:getSensorInformation() local sensorInformation = self:getSensorInformation()
return parser.parseWorkArea(sensorInformation[2]) return parser.parseWorkArea(sensorInformation[2])
end end

View File

@ -0,0 +1,5 @@
local function exec(miner)
return miner.isMachineActive() and miner.hasWork() -- TODO: differenciate cases
end
return exec

View File

@ -0,0 +1,25 @@
-- Import section
event = require("event")
local minerDatasource = require("data.datasource.miner")
--
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
end
end
event.listen("component_added", addToMinerList)
local function exec()
return minerList, newMiners
end
return exec

View File

@ -0,0 +1,12 @@
local function exec(multiblocks)
local statuses = {}
for _, multiblock in ipairs(multiblocks) do
statuses[multiblock.name] = {
problems = multiblock:getNumberOfProblems(),
efficiencyPercentage = multiblock:getEfficiencyPercentage()
}
end
return statuses
end
return exec

View File

@ -15,25 +15,34 @@ local getEnergyStatus = require("domain.energy.get-energy-status-usecase")
-- --
local cleanroom = MultiBlock:new(multiBlockAddresses.cleanroom) local cleanroom = MultiBlock:new(multiBlockAddresses.cleanroom)
cleanroom.name = "cleanroom"
local cleanroomMachines = {} local cleanroomMachines = {}
for _, address in pairs(cleanroomAddresses) do for _, address in pairs(cleanroomAddresses) do
table.insert(cleanroomMachines, SingleBlock:new(address)) table.insert(cleanroomMachines, SingleBlock:new(address))
end end
local EBF11 = MultiBlock:new(multiBlockAddresses.EBF11) local EBF11 = MultiBlock:new(multiBlockAddresses.EBF11)
EBF11.name = "EBF11"
local multiblocks = {cleanroom, EBF11} local multiblocks = {cleanroom, EBF11}
local energyBuffer = EnergyProvider:new(energyBufferAddress.batteryBuffer1) local energyBuffer = EnergyProvider:new(energyBufferAddress.batteryBuffer1)
local energyProducers = {} local energyProducers = {}
local multiblockStatuses = {}
for i = 0, 100 do for i = 0, 100 do
print(i) print(i)
protectCleanroomRecipes(cleanroom, cleanroomMachines) protectCleanroomRecipes(cleanroom, cleanroomMachines)
-- local multiblockStatuses = getMultiblockStatuses(multiblocks) multiblockStatuses = getMultiblockStatuses(multiblocks)
local energyStatus = getEnergyStatus(energyProducers, energyBuffer) local energyStatus = getEnergyStatus(energyProducers, energyBuffer)
os.sleep(0) os.sleep(0)
i = i + 1 i = i + 1
end end
require('resources.sound.zelda-secret')()
for multiblock, status in pairs(multiblockStatuses) do
print(multiblock .. ": \
problems: " .. status.problems .. "\
efficiency: " .. status.efficiencyPercentage)
end
require("resources.sound.zelda-secret")()