mirror of
https://github.com/S4mpsa/InfOS.git
synced 2025-08-03 18:06:04 -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 |
|
||||
| l | power |b|f|
|
||||
--]]
|
||||
local page = {}
|
||||
|
||||
local pages = {
|
||||
glasses = require("api.gui.page.glasses"),
|
||||
widgets = require("api.gui.page.widgets"),
|
||||
@ -41,11 +43,8 @@ pages[4] = pages.stock
|
||||
pages[5] = pages.notifications
|
||||
pages[6] = pages.overview
|
||||
|
||||
local page = {}
|
||||
|
||||
local elements = {
|
||||
machineWidgets = {},
|
||||
powerWidgets = {},
|
||||
panelSections = {},
|
||||
navigationButtons = {}
|
||||
}
|
||||
@ -182,8 +181,8 @@ function page.create(element)
|
||||
elements[15] = elements.machineWidgets.active[8]
|
||||
elements[16] = elements.machineWidgets.active[9]
|
||||
|
||||
elements[18] = elements.powerWidgets[1]
|
||||
elements[19] = elements.powerWidgets[1]
|
||||
elements[18] = elements.powerWidget
|
||||
elements[19] = elements.powerWidget
|
||||
|
||||
elements[1] = elements.panelSections[1]
|
||||
elements[5] = elements.panelSections[2]
|
||||
@ -197,7 +196,13 @@ end
|
||||
|
||||
function page.fake()
|
||||
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)
|
||||
end
|
||||
|
||||
@ -208,10 +213,10 @@ function page.update()
|
||||
for index, activeMachineWidget in ipairs(elements.machineWidgets.active) do
|
||||
activeMachineWidget.draw(activeMachineWidget, index)
|
||||
end
|
||||
for index, powerWidget in ipairs(elements.powerWidgets) do
|
||||
powerWidget:update()
|
||||
powerWidget:draw(index)
|
||||
end
|
||||
|
||||
elements.powerWidget:update()
|
||||
elements.powerWidget:draw()
|
||||
|
||||
for index, navigationButton in ipairs(elements.navigationButtons) do
|
||||
navigationButton:update()
|
||||
navigationButton:draw(index)
|
||||
|
@ -3,6 +3,7 @@ Unicode = require("unicode")
|
||||
DoubleBuffer = require("graphics.doubleBuffering")
|
||||
Constants = require("api.gui.constants")
|
||||
Colors = require("graphics.colors")
|
||||
Utility = require("utils.utility")
|
||||
|
||||
local widget = {}
|
||||
|
||||
@ -13,6 +14,11 @@ local states = {
|
||||
{name = "BROKEN", color = Colors.errorColor}
|
||||
}
|
||||
|
||||
local types = {
|
||||
power = "power",
|
||||
machine = "machine"
|
||||
}
|
||||
|
||||
local function drawProgress(x, y, width, height, progress, maxProgress, color)
|
||||
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
|
||||
|
||||
local function draw(self, index)
|
||||
if self.type == "power" then
|
||||
if self.type == types.power then
|
||||
index = 10
|
||||
end
|
||||
local scale = self.scale or 1
|
||||
@ -83,13 +89,23 @@ local function draw(self, index)
|
||||
else
|
||||
local middleInfo = self:getMiddleString()
|
||||
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
|
||||
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,
|
||||
Colors.accentA,
|
||||
self.progress .. "/" .. self.maxProgress .. " s"
|
||||
Utility.splitNumber(self.progress) .. " / " .. Utility.splitNumber(self.maxProgress) .. " s"
|
||||
)
|
||||
end
|
||||
end
|
||||
@ -198,7 +214,8 @@ end
|
||||
function fake.powerWidget:getMiddleString()
|
||||
local remaining = self.dProgress > 0 and self.maxProgress - self.progress or -self.progress
|
||||
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
|
||||
|
||||
function fake.powerWidget.create()
|
||||
@ -207,9 +224,9 @@ function fake.powerWidget.create()
|
||||
state = states[1],
|
||||
progress = math.random(16000000),
|
||||
maxProgress = 16000000,
|
||||
scale = 2,
|
||||
type = "power",
|
||||
dProgress = 1,
|
||||
scale = 2,
|
||||
type = types.power,
|
||||
update = fake.powerWidget.update,
|
||||
onClick = fake.powerWidget.onClick,
|
||||
getMiddleString = fake.powerWidget.getMiddleString,
|
||||
@ -228,12 +245,35 @@ function widget.fakeWidgets()
|
||||
end
|
||||
|
||||
function widget.fakePowerWidget()
|
||||
local fakePowerWidgets = {}
|
||||
return fake.powerWidget.create()
|
||||
end
|
||||
|
||||
table.insert(fakePowerWidgets, fake.powerWidget.create())
|
||||
fakePowerWidgets[11] = fakePowerWidgets[10]
|
||||
function widget.createPowerWidget(address)
|
||||
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
|
||||
|
||||
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
|
||||
Inherits = require("utils.inherits")
|
||||
MockSingleBlock = require("data.mock.mock-single-block")
|
||||
Utility = require("utils.utility")
|
||||
--
|
||||
|
||||
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()
|
||||
input = input + math.random(-100, 100)
|
||||
output = input + math.random(-100, 100)
|
||||
progress = progress + input - output > 0 and progress + input - output or 0
|
||||
return {
|
||||
"§9Insane Voltage Battery Buffer§r",
|
||||
"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:",
|
||||
"11,396 EU/t",
|
||||
Utility.splitNumber(input) .. " EU/t",
|
||||
"Average output:",
|
||||
"11,158 EU/t",
|
||||
Utility.splitNumber(output) .. " EU/t",
|
||||
n = 7
|
||||
}
|
||||
end
|
||||
|
@ -1,14 +1,12 @@
|
||||
-- Import section
|
||||
local getConsumption = require("domain.energy.get-consumption-usecase")
|
||||
local getProduction = require("domain.energy.get-production-usecase")
|
||||
Machine = require("data.datasource.machine")
|
||||
--
|
||||
|
||||
local function exec(energyBuffer)
|
||||
-- local comsumption = getConsumption(energyBuffer)
|
||||
-- local production = getProduction(energyBuffer)
|
||||
local function exec(address, name)
|
||||
local energyBuffer = Machine.getMachine(address, name, Machine.types.energy)
|
||||
|
||||
local consumption = energyBuffer:getAverageInput()
|
||||
local production = energyBuffer:getAverageOutput()
|
||||
|
||||
local changeRate = production - consumption
|
||||
|
||||
local totalEnergy = energyBuffer:getTotalEnergy()
|
||||
@ -17,14 +15,27 @@ local function exec(energyBuffer)
|
||||
|
||||
local energyLimit = changeRate > 0 and maximumEnergy or 0
|
||||
|
||||
local timeToFull = changeRate > 0 and (energyLimit - currentEnergy) / changeRate or nil
|
||||
local timeToEmpty = changeRate < 0 and (energyLimit - currentEnergy) / changeRate or nil
|
||||
local state = {}
|
||||
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 {
|
||||
consumption = consumption,
|
||||
production = production,
|
||||
progress = currentEnergy,
|
||||
maxProgress = maximumEnergy,
|
||||
dProgress = changeRate,
|
||||
timeToFull = timeToFull,
|
||||
timeToEmpty = timeToEmpty
|
||||
timeToEmpty = timeToEmpty,
|
||||
state = state
|
||||
}
|
||||
end
|
||||
|
||||
|
@ -1,16 +1,14 @@
|
||||
-- Import section
|
||||
-- Event = require("event")
|
||||
-- Colors = require("graphics.colors")
|
||||
-- Widget = require("api.gui.widget")
|
||||
|
||||
Page = require("api.gui.page")
|
||||
-- Graphics = require("graphics.graphics")
|
||||
|
||||
-- MultiBlock = require("data.datasource.multi-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 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 getMultiblockStatuses = require("domain.multiblock.get-multiblock-status-usecase")
|
||||
@ -64,12 +62,11 @@ end
|
||||
|
||||
require("api.sound.zelda-secret")()
|
||||
--]]
|
||||
|
||||
Page.fake()
|
||||
Page.setup(energyBufferAddresses.batteryBuffer1)
|
||||
|
||||
while true do
|
||||
Page.update()
|
||||
os.sleep(0)
|
||||
os.sleep(0.2)
|
||||
end
|
||||
|
||||
--[[
|
||||
|
@ -9,7 +9,7 @@ shell.execute("wget -fq " .. tarMan)
|
||||
shell.setWorkingDirectory("/bin")
|
||||
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")
|
||||
if not shell.resolve("/home/lib") then
|
||||
|
Loading…
x
Reference in New Issue
Block a user