This commit is contained in:
kepler155c
2018-10-25 00:18:38 -04:00
parent d5b0ad73b9
commit 6ce4039e8a
13 changed files with 129 additions and 11 deletions

View File

@@ -184,6 +184,11 @@ table.sort(Milo.tasks, function(a, b)
return a.priority < b.priority
end)
debug('Tasks\n-----')
for _, task in ipairs(Milo.tasks) do
debug('%d: %s', task.priority, task.name)
end
Milo:clearGrid()
local page = UI:getPage('listing')

62
milo/MiloMonitor.lua Normal file
View File

@@ -0,0 +1,62 @@
_G.requireInjector(_ENV)
local Util = require('util')
local colors = _G.colors
local device = _G.device
local args = { ... }
local mon = device[args[1] or 'monitor'] or error('Syntax: debug <monitor>')
local config = Util.readTable('/usr/config/milo') or error('Milo is not configured')
local row
local monWidth, monHeight = mon.getSize()
local machines = { }
local function write(x, y, s, bg, fg)
mon.setCursorPos(x, y)
mon.setBackgroundColor(bg)
if fg then
mon.setTextColor(fg)
end
mon.write(s)
end
local function progress(y, percent)
local width = math.ceil(percent / 100 * monWidth)
write(2, y, string.rep(' ', monWidth - 2), colors.gray)
write(2, y, string.rep(' ', width), colors.lime)
end
local function draw(machine, percent)
write(2, row, machine.displayName or machine.name, colors.black, colors.yellow)
progress(row + 1, percent)
row = row + 3
end
local function redraw()
row = 1
mon.setBackgroundColor(colors.black)
mon.clear()
for _,machine in ipairs(machines) do
local dev = device[machine.name]
if dev then
local percent = 50
if machine.mtype == 'storage' then
percent = Util.size(dev.list()) / dev.size() * 100
end
draw(machine, percent)
end
end
end
for _, v in pairs(config.remoteDefaults) do
table.insert(machines, v)
end
table.sort(machines, function(a, b)
return (a.displayName or a.name) < (b.displayName or b.name)
end)
mon.setTextScale(.5)
redraw()

View File

@@ -7,6 +7,27 @@ local Util = require('util')
local colors = _G.colors
local socket
local options = {
user = { arg = 'u', type = 'string',
desc = 'User name associated with bound manipulator' },
server = { arg = 's', type = 'number',
desc = 'ID of Milo server' },
help = { arg = 'h', type = 'flag', value = false,
desc = 'Displays the options' },
}
local args = { ... }
if not Util.getOptions(options, args) then
print()
error('Invalid arguments')
end
if not options.user.value or not options.server.value then
Util.showOptions(options)
print()
error('Invalid arguments')
end
local page = UI.Page {
menuBar = UI.MenuBar {
buttons = {
@@ -90,7 +111,10 @@ function page:sendRequest(data)
for _ = 1, 2 do
if not socket or not socket.connected then
socket, msg = Socket.connect(1, 4242)
socket, msg = Socket.connect(options.server.value, 4242)
if socket then
socket:write(options.user.value)
end
end
if socket then
if socket:write(data) then

View File

@@ -2,6 +2,7 @@ local Milo = require('milo')
local Util = require('util')
local Autocraft = {
name = 'autocraft',
priority = 100,
}

View File

@@ -132,7 +132,8 @@ function craftPage:eventHandler(event)
end
local demandCraftingTask = {
priority = 20,
name = 'demand crafting',
priority = 60,
}
function demandCraftingTask:cycle(context)

View File

@@ -4,7 +4,8 @@ local Milo = require('milo')
local device = _G.device
local ExportTask = {
priority = 5,
name = 'exporter',
priority = 40,
}
function ExportTask:cycle(context)

View File

@@ -3,7 +3,8 @@ local Milo = require('milo')
local device = _G.device
local ImportTask = {
priority = 3,
name = 'importer',
priority = 20,
}
function ImportTask:cycle(context)

View File

@@ -3,7 +3,8 @@ local Milo = require('milo')
local device = _G.device
local InputChest = {
priority = 1,
name = 'input',
priority = 10,
}
function InputChest:cycle(context)

View File

@@ -56,6 +56,7 @@ jobList:draw()
jobList:sync()
local JobListTask = {
name = 'job status',
priority = 80,
}

View File

@@ -1,7 +1,8 @@
local Milo = require('milo')
local LimitTask = {
priority = 10,
name = 'limiter',
priority = 50,
}
function LimitTask:cycle(context)

View File

@@ -3,7 +3,8 @@ local Milo = require('milo')
local device = _G.device
local PotionImportTask = {
priority = 3,
name = 'potions',
priority = 30,
}
function PotionImportTask:cycle(context)

View File

@@ -2,15 +2,32 @@ local Event = require('event')
local Milo = require('milo')
local Socket = require('socket')
local device = _G.device
local manipulator = device.manipulator_1
local turtle = _G.turtle
local device = _G.device
local turtle = _G.turtle
local context = Milo:getContext()
local function getManipulatorForUser(user)
for _,v in pairs(device) do
if v.type == 'manipulator' and v.getName and v.getName() == user then
return v
end
end
end
local function client(socket)
debug('connection from ' .. socket.dhost)
local user = socket:read(2)
if not user then
return
end
local manipulator = getManipulatorForUser(user)
if not manipulator then
return
end
repeat
local data = socket:read()
if not data then
@@ -51,6 +68,7 @@ if device.wireless_modem then
local socket = Socket.server(4242)
Event.addRoutine(function()
client(socket)
socket:close()
end)
end
end)

View File

@@ -2,7 +2,8 @@ local itemDB = require('itemDB')
local Milo = require('milo')
local ReplenishTask = {
priority = 30,
name = 'replenish',
priority = 70,
}
function ReplenishTask:cycle(context)