various tweaks
This commit is contained in:
@@ -15,6 +15,10 @@ if not turtle.select('minecraft:bucket') then
|
|||||||
error('bucket required')
|
error('bucket required')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if turtle.getFuelLevel() == 0 then
|
||||||
|
error('Need some fuel to begin')
|
||||||
|
end
|
||||||
|
|
||||||
local s, m = turtle.run(function()
|
local s, m = turtle.run(function()
|
||||||
turtle.setMovementStrategy('goto')
|
turtle.setMovementStrategy('goto')
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
|
|
||||||
_G.requireInjector(_ENV)
|
_G.requireInjector(_ENV)
|
||||||
|
|
||||||
local Config = require('config')
|
|
||||||
local Event = require('event')
|
local Event = require('event')
|
||||||
local Milo = require('milo')
|
local Milo = require('milo')
|
||||||
local Sound = require('sound')
|
local Sound = require('sound')
|
||||||
@@ -27,49 +26,10 @@ if multishell then
|
|||||||
multishell.setTitle(multishell.getCurrent(), 'Milo')
|
multishell.setTitle(multishell.getCurrent(), 'Milo')
|
||||||
end
|
end
|
||||||
|
|
||||||
local nodes = Config.load('milo', { })
|
|
||||||
|
|
||||||
-- TODO: remove - temporary
|
|
||||||
if nodes.remoteDefaults then
|
|
||||||
nodes.nodes = nodes.remoteDefaults
|
|
||||||
nodes.remoteDefaults = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
-- TODO: remove - temporary
|
|
||||||
if nodes.nodes then
|
|
||||||
local categories = {
|
|
||||||
input = 'custom',
|
|
||||||
trashcan = 'custom',
|
|
||||||
machine = 'machine',
|
|
||||||
brewingStand = 'machine',
|
|
||||||
activity = 'display',
|
|
||||||
jobs = 'display',
|
|
||||||
ignore = 'ignore',
|
|
||||||
hidden = 'ignore',
|
|
||||||
manipulator = 'custom',
|
|
||||||
storage = 'storage',
|
|
||||||
}
|
|
||||||
for _, node in pairs(nodes.nodes) do
|
|
||||||
if node.lock and type(node.lock) == 'string' then
|
|
||||||
node.lock = {
|
|
||||||
[ node.lock ] = true,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
if not node.category then
|
|
||||||
node.category = categories[node.mtype]
|
|
||||||
if not node.category then
|
|
||||||
Util.print(node)
|
|
||||||
error('invalid node')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
nodes = nodes.nodes
|
|
||||||
end
|
|
||||||
|
|
||||||
local function Syntax(msg)
|
local function Syntax(msg)
|
||||||
print([[
|
print([[
|
||||||
Turtle must be equipped with:
|
Turtle must be equipped with:
|
||||||
* Introspection module
|
* Introspection module (unbound)
|
||||||
* Workbench
|
* Workbench
|
||||||
|
|
||||||
Turtle must be connected to:
|
Turtle must be connected to:
|
||||||
@@ -118,7 +78,7 @@ local context = {
|
|||||||
tasks = { },
|
tasks = { },
|
||||||
queue = { },
|
queue = { },
|
||||||
|
|
||||||
storage = Storage(nodes),
|
storage = Storage(),
|
||||||
turtleInventory = {
|
turtleInventory = {
|
||||||
name = localName,
|
name = localName,
|
||||||
mtype = 'hidden',
|
mtype = 'hidden',
|
||||||
@@ -126,8 +86,8 @@ local context = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nodes[localName] = context.turtleInventory
|
context.storage.nodes[localName] = context.turtleInventory
|
||||||
nodes[localName].adapter.name = localName
|
context.storage.nodes[localName].adapter.name = localName
|
||||||
|
|
||||||
_G._p = context --debug
|
_G._p = context --debug
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
local Adapter = require('miniAdapter')
|
local Adapter = require('miniAdapter')
|
||||||
local class = require('class')
|
local class = require('class')
|
||||||
local Config = require('config')
|
local Config = require('config')
|
||||||
local Event = require('event')
|
local Event = require('event')
|
||||||
local itemDB = require('itemDB')
|
local itemDB = require('itemDB')
|
||||||
local sync = require('sync').sync
|
local sync = require('sync').sync
|
||||||
@@ -12,14 +12,59 @@ local parallel = _G.parallel
|
|||||||
|
|
||||||
local Storage = class()
|
local Storage = class()
|
||||||
|
|
||||||
function Storage:init(nodes)
|
local function loadOld(storage)
|
||||||
|
storage.nodes = Config.load('milo', { })
|
||||||
|
|
||||||
|
-- TODO: remove - temporary
|
||||||
|
if storage.nodes.remoteDefaults then
|
||||||
|
storage.nodes.nodes = storage.nodes.remoteDefaults
|
||||||
|
storage.nodes.remoteDefaults = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- TODO: remove - temporary
|
||||||
|
if storage.nodes.nodes then
|
||||||
|
local categories = {
|
||||||
|
input = 'custom',
|
||||||
|
trashcan = 'custom',
|
||||||
|
machine = 'machine',
|
||||||
|
brewingStand = 'machine',
|
||||||
|
activity = 'display',
|
||||||
|
jobs = 'display',
|
||||||
|
ignore = 'ignore',
|
||||||
|
hidden = 'ignore',
|
||||||
|
manipulator = 'custom',
|
||||||
|
storage = 'storage',
|
||||||
|
}
|
||||||
|
for _, node in pairs(storage.nodes.nodes) do
|
||||||
|
if node.lock and type(node.lock) == 'string' then
|
||||||
|
node.lock = {
|
||||||
|
[ node.lock ] = true,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
if not node.category then
|
||||||
|
node.category = categories[node.mtype]
|
||||||
|
if not node.category then
|
||||||
|
Util.print(node)
|
||||||
|
error('invalid node')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
storage.nodes = storage.nodes.nodes
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Storage:init()
|
||||||
local defaults = {
|
local defaults = {
|
||||||
nodes = nodes or { },
|
|
||||||
dirty = true,
|
dirty = true,
|
||||||
activity = { },
|
activity = { },
|
||||||
storageOnline = true,
|
storageOnline = true,
|
||||||
}
|
}
|
||||||
Util.merge(self, defaults)
|
Util.merge(self, defaults)
|
||||||
|
self.nodes = Config.load('storage', { })
|
||||||
|
|
||||||
|
if not self.nodes then -- TODO: temporary
|
||||||
|
loadOld(self)
|
||||||
|
end
|
||||||
|
|
||||||
Event.on({ 'device_attach', 'device_detach' }, function(e, dev)
|
Event.on({ 'device_attach', 'device_detach' }, function(e, dev)
|
||||||
_G._debug('%s: %s', e, tostring(dev))
|
_G._debug('%s: %s', e, tostring(dev))
|
||||||
@@ -93,7 +138,7 @@ function Storage:saveConfiguration()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- TODO: Should be named 'storage'
|
-- TODO: Should be named 'storage'
|
||||||
Config.update('milo', self.nodes)
|
Config.update('storage', self.nodes)
|
||||||
|
|
||||||
for k,v in pairs(t) do
|
for k,v in pairs(t) do
|
||||||
self.nodes[k].adapter = v
|
self.nodes[k].adapter = v
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ end)
|
|||||||
|
|
||||||
Event.on('monitor_touch', function(_, side)
|
Event.on('monitor_touch', function(_, side)
|
||||||
local function filter(node)
|
local function filter(node)
|
||||||
return node.adapter.name == side and pages[node.name]
|
return node.adapter.side == side and pages[node.name]
|
||||||
end
|
end
|
||||||
for node in context.storage:filterActive('activity', filter) do
|
for node in context.storage:filterActive('activity', filter) do
|
||||||
pages[node.name]:reset()
|
pages[node.name]:reset()
|
||||||
|
|||||||
Reference in New Issue
Block a user