mirror of
https://github.com/S4mpsa/InfOS.git
synced 2025-08-04 02:16:05 -04:00
Merge pull request #10 from gordominossi/feature/integration
Feature/integration
This commit is contained in:
commit
aa41d187fd
@ -26,6 +26,8 @@ Widget = require("api.gui.widget")
|
|||||||
| e | w | w | w |
|
| e | w | w | w |
|
||||||
| l | power |b|f|
|
| l | power |b|f|
|
||||||
--]]
|
--]]
|
||||||
|
local page = {}
|
||||||
|
|
||||||
local pages = {
|
local pages = {
|
||||||
glasses = require("api.gui.page.glasses"),
|
glasses = require("api.gui.page.glasses"),
|
||||||
widgets = require("api.gui.page.widgets"),
|
widgets = require("api.gui.page.widgets"),
|
||||||
@ -41,11 +43,8 @@ pages[4] = pages.stock
|
|||||||
pages[5] = pages.notifications
|
pages[5] = pages.notifications
|
||||||
pages[6] = pages.overview
|
pages[6] = pages.overview
|
||||||
|
|
||||||
local page = {}
|
|
||||||
|
|
||||||
local elements = {
|
local elements = {
|
||||||
machineWidgets = {},
|
machineWidgets = {},
|
||||||
powerWidgets = {},
|
|
||||||
panelSections = {},
|
panelSections = {},
|
||||||
navigationButtons = {}
|
navigationButtons = {}
|
||||||
}
|
}
|
||||||
@ -182,8 +181,8 @@ function page.create(element)
|
|||||||
elements[15] = elements.machineWidgets.active[8]
|
elements[15] = elements.machineWidgets.active[8]
|
||||||
elements[16] = elements.machineWidgets.active[9]
|
elements[16] = elements.machineWidgets.active[9]
|
||||||
|
|
||||||
elements[18] = elements.powerWidgets[1]
|
elements[18] = elements.powerWidget
|
||||||
elements[19] = elements.powerWidgets[1]
|
elements[19] = elements.powerWidget
|
||||||
|
|
||||||
elements[1] = elements.panelSections[1]
|
elements[1] = elements.panelSections[1]
|
||||||
elements[5] = elements.panelSections[2]
|
elements[5] = elements.panelSections[2]
|
||||||
@ -197,7 +196,13 @@ end
|
|||||||
|
|
||||||
function page.fake()
|
function page.fake()
|
||||||
elements.machineWidgets = Widget.fakeWidgets()
|
elements.machineWidgets = Widget.fakeWidgets()
|
||||||
elements.powerWidgets = Widget.fakePowerWidget()
|
elements.powerWidget = Widget.fakePowerWidget()
|
||||||
|
page.create(pages.overview)
|
||||||
|
end
|
||||||
|
|
||||||
|
function page.setup(energyBufferAddress)
|
||||||
|
elements.machineWidgets = Widget.fakeWidgets()
|
||||||
|
elements.powerWidget = Widget.createPowerWidget(energyBufferAddress)
|
||||||
page.create(pages.overview)
|
page.create(pages.overview)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -208,10 +213,10 @@ function page.update()
|
|||||||
for index, activeMachineWidget in ipairs(elements.machineWidgets.active) do
|
for index, activeMachineWidget in ipairs(elements.machineWidgets.active) do
|
||||||
activeMachineWidget.draw(activeMachineWidget, index)
|
activeMachineWidget.draw(activeMachineWidget, index)
|
||||||
end
|
end
|
||||||
for index, powerWidget in ipairs(elements.powerWidgets) do
|
|
||||||
powerWidget:update()
|
elements.powerWidget:update()
|
||||||
powerWidget:draw(index)
|
elements.powerWidget:draw()
|
||||||
end
|
|
||||||
for index, navigationButton in ipairs(elements.navigationButtons) do
|
for index, navigationButton in ipairs(elements.navigationButtons) do
|
||||||
navigationButton:update()
|
navigationButton:update()
|
||||||
navigationButton:draw(index)
|
navigationButton:draw(index)
|
||||||
|
@ -3,6 +3,7 @@ Unicode = require("unicode")
|
|||||||
DoubleBuffer = require("graphics.doubleBuffering")
|
DoubleBuffer = require("graphics.doubleBuffering")
|
||||||
Constants = require("api.gui.constants")
|
Constants = require("api.gui.constants")
|
||||||
Colors = require("graphics.colors")
|
Colors = require("graphics.colors")
|
||||||
|
Utility = require("utils.utility")
|
||||||
|
|
||||||
local widget = {}
|
local widget = {}
|
||||||
|
|
||||||
@ -13,6 +14,11 @@ local states = {
|
|||||||
{name = "BROKEN", color = Colors.errorColor}
|
{name = "BROKEN", color = Colors.errorColor}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local types = {
|
||||||
|
power = "power",
|
||||||
|
machine = "machine"
|
||||||
|
}
|
||||||
|
|
||||||
local function drawProgress(x, y, width, height, progress, maxProgress, color)
|
local function drawProgress(x, y, width, height, progress, maxProgress, color)
|
||||||
progress = math.floor(progress * (width + height - 2) / (maxProgress ~= 0 and maxProgress or 1))
|
progress = math.floor(progress * (width + height - 2) / (maxProgress ~= 0 and maxProgress or 1))
|
||||||
|
|
||||||
@ -64,7 +70,7 @@ function widget.drawBaseWidget(x, y, width, height, title)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function draw(self, index)
|
local function draw(self, index)
|
||||||
if self.type == "power" then
|
if self.type == types.power then
|
||||||
index = 10
|
index = 10
|
||||||
end
|
end
|
||||||
local scale = self.scale or 1
|
local scale = self.scale or 1
|
||||||
@ -83,13 +89,23 @@ local function draw(self, index)
|
|||||||
else
|
else
|
||||||
local middleInfo = self:getMiddleString()
|
local middleInfo = self:getMiddleString()
|
||||||
if middleInfo then
|
if middleInfo then
|
||||||
DoubleBuffer.drawText(x + 3 + 3 + Unicode.len("IDLE"), y + height - 3, Colors.textColor, middleInfo)
|
DoubleBuffer.drawText(
|
||||||
|
x - 3 - 3 + width - Unicode.len(middleInfo) -
|
||||||
|
Unicode.len(
|
||||||
|
Utility.splitNumber(self.progress) .. " / " .. Utility.splitNumber(self.maxProgress) .. " s"
|
||||||
|
),
|
||||||
|
y + height - 3,
|
||||||
|
Colors.textColor,
|
||||||
|
middleInfo
|
||||||
|
)
|
||||||
end
|
end
|
||||||
DoubleBuffer.drawText(
|
DoubleBuffer.drawText(
|
||||||
x + width - Unicode.len(self.progress .. "/" .. self.maxProgress .. " s") - 3,
|
x + width -
|
||||||
|
Unicode.len(Utility.splitNumber(self.progress) .. " / " .. Utility.splitNumber(self.maxProgress) .. " s") -
|
||||||
|
3,
|
||||||
y + height - 3,
|
y + height - 3,
|
||||||
Colors.accentA,
|
Colors.accentA,
|
||||||
self.progress .. "/" .. self.maxProgress .. " s"
|
Utility.splitNumber(self.progress) .. " / " .. Utility.splitNumber(self.maxProgress) .. " s"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -198,7 +214,8 @@ end
|
|||||||
function fake.powerWidget:getMiddleString()
|
function fake.powerWidget:getMiddleString()
|
||||||
local remaining = self.dProgress > 0 and self.maxProgress - self.progress or -self.progress
|
local remaining = self.dProgress > 0 and self.maxProgress - self.progress or -self.progress
|
||||||
return (self.dProgress > 0 and "+" or "") ..
|
return (self.dProgress > 0 and "+" or "") ..
|
||||||
self.dProgress .. "EU/s. " .. (self.dProgress > 0 and "Full in: " or "Empty in: ") .. remaining / self.dProgress
|
self.dProgress ..
|
||||||
|
"EU/s. " .. (self.dProgress > 0 and " Full in: " or "Empty in: ") .. remaining / self.dProgress
|
||||||
end
|
end
|
||||||
|
|
||||||
function fake.powerWidget.create()
|
function fake.powerWidget.create()
|
||||||
@ -207,9 +224,9 @@ function fake.powerWidget.create()
|
|||||||
state = states[1],
|
state = states[1],
|
||||||
progress = math.random(16000000),
|
progress = math.random(16000000),
|
||||||
maxProgress = 16000000,
|
maxProgress = 16000000,
|
||||||
scale = 2,
|
|
||||||
type = "power",
|
|
||||||
dProgress = 1,
|
dProgress = 1,
|
||||||
|
scale = 2,
|
||||||
|
type = types.power,
|
||||||
update = fake.powerWidget.update,
|
update = fake.powerWidget.update,
|
||||||
onClick = fake.powerWidget.onClick,
|
onClick = fake.powerWidget.onClick,
|
||||||
getMiddleString = fake.powerWidget.getMiddleString,
|
getMiddleString = fake.powerWidget.getMiddleString,
|
||||||
@ -228,12 +245,35 @@ function widget.fakeWidgets()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function widget.fakePowerWidget()
|
function widget.fakePowerWidget()
|
||||||
local fakePowerWidgets = {}
|
return fake.powerWidget.create()
|
||||||
|
end
|
||||||
|
|
||||||
table.insert(fakePowerWidgets, fake.powerWidget.create())
|
function widget.createPowerWidget(address)
|
||||||
fakePowerWidgets[11] = fakePowerWidgets[10]
|
local getPowerStatus = require("domain.energy.get-energy-status-usecase")
|
||||||
|
local function update(self)
|
||||||
|
for key, value in pairs(getPowerStatus(address, self.name)) do
|
||||||
|
self[key] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return fakePowerWidgets
|
local function getMiddleString(self)
|
||||||
|
local time = self.timeToFull or self.timeToEmpty or 0
|
||||||
|
return (self.dProgress >= 0 and " Full in: " or "Empty in: ") .. Utility.splitNumber(time) .. " s"
|
||||||
|
end
|
||||||
|
|
||||||
|
local powerWidget = {
|
||||||
|
name = "Power",
|
||||||
|
scale = 2,
|
||||||
|
type = types.power,
|
||||||
|
update = update,
|
||||||
|
onClick = function()
|
||||||
|
end,
|
||||||
|
getMiddleString = getMiddleString,
|
||||||
|
draw = draw
|
||||||
|
}
|
||||||
|
powerWidget:update()
|
||||||
|
|
||||||
|
return powerWidget
|
||||||
end
|
end
|
||||||
|
|
||||||
return widget
|
return widget
|
||||||
|
30
Programs/monitor-system/data/datasource/machine.lua
Normal file
30
Programs/monitor-system/data/datasource/machine.lua
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
-- Import section
|
||||||
|
local mock = require("data.mock.mock-energy-provider")
|
||||||
|
EnergyProvider = require("data.datasource.energy-provider")
|
||||||
|
Inherits = require("utils.inherits")
|
||||||
|
--
|
||||||
|
|
||||||
|
local machine = Inherits(EnergyProvider)
|
||||||
|
local machines = {}
|
||||||
|
machine.types = {
|
||||||
|
energy = "energy",
|
||||||
|
multiblock = "multiblock",
|
||||||
|
singleblock = "singleblock"
|
||||||
|
}
|
||||||
|
|
||||||
|
function machine.getMachine(address, name, type)
|
||||||
|
if machines[address] then
|
||||||
|
return machines[address]
|
||||||
|
else
|
||||||
|
local mach = {}
|
||||||
|
if type == machine.types.energy then
|
||||||
|
print(machine.name)
|
||||||
|
elseif type == machine.types.multiblock then
|
||||||
|
end
|
||||||
|
mach = machine:new(address, name)
|
||||||
|
machines[address] = mach
|
||||||
|
return mach
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return machine
|
@ -1,6 +1,7 @@
|
|||||||
-- Import section
|
-- Import section
|
||||||
Inherits = require("utils.inherits")
|
Inherits = require("utils.inherits")
|
||||||
MockSingleBlock = require("data.mock.mock-single-block")
|
MockSingleBlock = require("data.mock.mock-single-block")
|
||||||
|
Utility = require("utils.utility")
|
||||||
--
|
--
|
||||||
|
|
||||||
local MockEnergyProvider =
|
local MockEnergyProvider =
|
||||||
@ -11,15 +12,21 @@ local MockEnergyProvider =
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
local progress = math.random(1608388608)
|
||||||
|
local input = math.random(16000)
|
||||||
|
local output = math.random(16000)
|
||||||
function MockEnergyProvider.getSensorInformation()
|
function MockEnergyProvider.getSensorInformation()
|
||||||
|
input = input + math.random(-100, 100)
|
||||||
|
output = input + math.random(-100, 100)
|
||||||
|
progress = progress + input - output > 0 and progress + input - output or 0
|
||||||
return {
|
return {
|
||||||
"§9Insane Voltage Battery Buffer§r",
|
"§9Insane Voltage Battery Buffer§r",
|
||||||
"Stored Items:",
|
"Stored Items:",
|
||||||
"§a1,608,383,129§r EU / §e1,608,388,608§r EU",
|
"§a" .. Utility.splitNumber(progress) .. "§r EU / §e1,608,388,608§r EU",
|
||||||
"Average input:",
|
"Average input:",
|
||||||
"11,396 EU/t",
|
Utility.splitNumber(input) .. " EU/t",
|
||||||
"Average output:",
|
"Average output:",
|
||||||
"11,158 EU/t",
|
Utility.splitNumber(output) .. " EU/t",
|
||||||
n = 7
|
n = 7
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
-- Import section
|
-- Import section
|
||||||
local getConsumption = require("domain.energy.get-consumption-usecase")
|
Machine = require("data.datasource.machine")
|
||||||
local getProduction = require("domain.energy.get-production-usecase")
|
|
||||||
--
|
--
|
||||||
|
|
||||||
local function exec(energyBuffer)
|
local function exec(address, name)
|
||||||
-- local comsumption = getConsumption(energyBuffer)
|
local energyBuffer = Machine.getMachine(address, name, Machine.types.energy)
|
||||||
-- local production = getProduction(energyBuffer)
|
|
||||||
local consumption = energyBuffer:getAverageInput()
|
local consumption = energyBuffer:getAverageInput()
|
||||||
local production = energyBuffer:getAverageOutput()
|
local production = energyBuffer:getAverageOutput()
|
||||||
|
|
||||||
local changeRate = production - consumption
|
local changeRate = production - consumption
|
||||||
|
|
||||||
local totalEnergy = energyBuffer:getTotalEnergy()
|
local totalEnergy = energyBuffer:getTotalEnergy()
|
||||||
@ -17,14 +15,27 @@ local function exec(energyBuffer)
|
|||||||
|
|
||||||
local energyLimit = changeRate > 0 and maximumEnergy or 0
|
local energyLimit = changeRate > 0 and maximumEnergy or 0
|
||||||
|
|
||||||
local timeToFull = changeRate > 0 and (energyLimit - currentEnergy) / changeRate or nil
|
local state = {}
|
||||||
local timeToEmpty = changeRate < 0 and (energyLimit - currentEnergy) / changeRate or nil
|
if (currentEnergy == maximumEnergy) then
|
||||||
|
state = {name = changeRate .. " EU/s", color = Colors.workingColor}
|
||||||
|
elseif currentEnergy == 0 then
|
||||||
|
state = {name = changeRate .. " EU/s", color = Colors.errorColor}
|
||||||
|
elseif changeRate > 0 then
|
||||||
|
state = {name = "+" .. changeRate .. " EU/s", color = Colors.idleColor}
|
||||||
|
else
|
||||||
|
state = {name = changeRate .. " EU/s", color = Colors.offColor}
|
||||||
|
end
|
||||||
|
|
||||||
|
local timeToFull = changeRate > 0 and math.floor((energyLimit - currentEnergy) / changeRate) or nil
|
||||||
|
local timeToEmpty = changeRate < 0 and math.floor((energyLimit - currentEnergy) / changeRate) or nil
|
||||||
|
|
||||||
return {
|
return {
|
||||||
consumption = consumption,
|
progress = currentEnergy,
|
||||||
production = production,
|
maxProgress = maximumEnergy,
|
||||||
|
dProgress = changeRate,
|
||||||
timeToFull = timeToFull,
|
timeToFull = timeToFull,
|
||||||
timeToEmpty = timeToEmpty
|
timeToEmpty = timeToEmpty,
|
||||||
|
state = state
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,16 +1,14 @@
|
|||||||
-- Import section
|
-- Import section
|
||||||
-- Event = require("event")
|
|
||||||
-- Colors = require("graphics.colors")
|
|
||||||
-- Widget = require("api.gui.widget")
|
|
||||||
Page = require("api.gui.page")
|
Page = require("api.gui.page")
|
||||||
-- Graphics = require("graphics.graphics")
|
|
||||||
-- MultiBlock = require("data.datasource.multi-block")
|
-- MultiBlock = require("data.datasource.multi-block")
|
||||||
-- SingleBlock = require("data.datasource.single-block")
|
-- SingleBlock = require("data.datasource.single-block")
|
||||||
-- EnergyProvider = require("data.datasource.energy-provider")
|
EnergyProvider = require("data.datasource.energy-provider")
|
||||||
|
|
||||||
-- local cleanroomAddresses = require("config.addresses.cleanroom")
|
-- local cleanroomAddresses = require("config.addresses.cleanroom")
|
||||||
-- local multiBlockAddresses = require("config.addresses.multi-blocks")
|
-- local multiBlockAddresses = require("config.addresses.multi-blocks")
|
||||||
-- local energyBufferAddresses = require("config.addresses.energy-buffers")
|
local energyBufferAddresses = require("config.addresses.energy-buffers")
|
||||||
|
|
||||||
-- local protectCleanroomRecipes = require("domain.cleanroom.protect-recipes-usecase")
|
-- local protectCleanroomRecipes = require("domain.cleanroom.protect-recipes-usecase")
|
||||||
-- local getMultiblockStatuses = require("domain.multiblock.get-multiblock-status-usecase")
|
-- local getMultiblockStatuses = require("domain.multiblock.get-multiblock-status-usecase")
|
||||||
@ -64,12 +62,11 @@ end
|
|||||||
|
|
||||||
require("api.sound.zelda-secret")()
|
require("api.sound.zelda-secret")()
|
||||||
--]]
|
--]]
|
||||||
|
Page.setup(energyBufferAddresses.batteryBuffer1)
|
||||||
Page.fake()
|
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
Page.update()
|
Page.update()
|
||||||
os.sleep(0)
|
os.sleep(0.2)
|
||||||
end
|
end
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
|
@ -9,7 +9,7 @@ shell.execute("wget -fq " .. tarMan)
|
|||||||
shell.setWorkingDirectory("/bin")
|
shell.setWorkingDirectory("/bin")
|
||||||
shell.execute("wget -fq " .. tarBin)
|
shell.execute("wget -fq " .. tarBin)
|
||||||
|
|
||||||
local InfOS = "https://github.com/gordominossi/InfOS/releases/download/v0.1/InfOS.tar"
|
local InfOS = "https://github.com/gordominossi/InfOS/releases/download/v0.2/InfOS.tar"
|
||||||
|
|
||||||
shell.setWorkingDirectory("/home")
|
shell.setWorkingDirectory("/home")
|
||||||
if not shell.resolve("/home/lib") then
|
if not shell.resolve("/home/lib") then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user