spaces->tab, equipper improvements, supertreefarm rewrite, follow improvements, sensor cleanup, milo multiple items allowed in recipes, remote canvas access
This commit is contained in:
@@ -10,70 +10,70 @@ local context = args[1]
|
||||
local ni = peripheral.find('neuralInterface')
|
||||
|
||||
if not context.state.depositAll then
|
||||
context.state.depositAll = { }
|
||||
context.state.depositAll = { }
|
||||
end
|
||||
if not context.state.depositAll.retain then
|
||||
context.state.depositAll.retain = { }
|
||||
context.state.depositAll.retain = { }
|
||||
end
|
||||
|
||||
local page = UI.Page {
|
||||
titleBar = UI.TitleBar {
|
||||
backgroundColor = colors.gray,
|
||||
title = 'Deposit full inventory',
|
||||
previousPage = true,
|
||||
},
|
||||
items = UI.ScrollingGrid {
|
||||
x = 2, ex = -2, y = 2, ey = -4,
|
||||
columns = {
|
||||
{ heading = 'Qty', key = 'count', width = 3 },
|
||||
{ heading = 'Name', key = 'displayName', },
|
||||
},
|
||||
sortColumn = 'count',
|
||||
inverseSort = true
|
||||
},
|
||||
form = UI.Form {
|
||||
x = 2, ex = -2, y = -2, ey = -2,
|
||||
margin = 1,
|
||||
[1] = UI.Checkbox {
|
||||
formLabel = 'Include hotbar', formKey = 'includeHotbar',
|
||||
help = 'Also send the contents of the hotbar to Milo (excluding the neural connector)'
|
||||
}
|
||||
},
|
||||
notification = UI.Notification(),
|
||||
titleBar = UI.TitleBar {
|
||||
backgroundColor = colors.gray,
|
||||
title = 'Deposit full inventory',
|
||||
previousPage = true,
|
||||
},
|
||||
items = UI.ScrollingGrid {
|
||||
x = 2, ex = -2, y = 2, ey = -4,
|
||||
columns = {
|
||||
{ heading = 'Qty', key = 'count', width = 3 },
|
||||
{ heading = 'Name', key = 'displayName', },
|
||||
},
|
||||
sortColumn = 'count',
|
||||
inverseSort = true
|
||||
},
|
||||
form = UI.Form {
|
||||
x = 2, ex = -2, y = -2, ey = -2,
|
||||
margin = 1,
|
||||
[1] = UI.Checkbox {
|
||||
formLabel = 'Include hotbar', formKey = 'includeHotbar',
|
||||
help = 'Also send the contents of the hotbar to Milo (excluding the neural connector)'
|
||||
}
|
||||
},
|
||||
notification = UI.Notification(),
|
||||
}
|
||||
|
||||
local function makeKey(item) -- group items regardless of damage
|
||||
local damage = item.maxDamage == 0 and item.damage
|
||||
return itemDB:makeKey({ name = item.name, damage = damage })
|
||||
local damage = item.maxDamage == 0 and item.damage
|
||||
return itemDB:makeKey({ name = item.name, damage = damage })
|
||||
end
|
||||
|
||||
function page:updateInventoryList()
|
||||
local inv = ni.getInventory().list()
|
||||
local list = { }
|
||||
local inv = ni.getInventory().list()
|
||||
local list = { }
|
||||
|
||||
for slot, item in pairs(inv) do
|
||||
if (context.state.depositAll.includeHotbar or slot > 9) and item.name ~= 'plethora:neuralconnector' then
|
||||
item = itemDB:get(item, function() return ni.getInventory().getItemMeta(slot) end)
|
||||
local key = makeKey(item)
|
||||
if not list[key] then
|
||||
item.displayName = item.displayName:match('(.+) %(damage:.+%)') or item.displayName
|
||||
list[key] = item
|
||||
else
|
||||
list[key].count = list[key].count + item.count
|
||||
end
|
||||
list[key].key = key
|
||||
end
|
||||
end
|
||||
for slot, item in pairs(inv) do
|
||||
if (context.state.depositAll.includeHotbar or slot > 9) and item.name ~= 'plethora:neuralconnector' then
|
||||
item = itemDB:get(item, function() return ni.getInventory().getItemMeta(slot) end)
|
||||
local key = makeKey(item)
|
||||
if not list[key] then
|
||||
item.displayName = item.displayName:match('(.+) %(damage:.+%)') or item.displayName
|
||||
list[key] = item
|
||||
else
|
||||
list[key].count = list[key].count + item.count
|
||||
end
|
||||
list[key].key = key
|
||||
end
|
||||
end
|
||||
|
||||
self.items:setValues(list)
|
||||
self.items:draw()
|
||||
itemDB:flush()
|
||||
self.items:setValues(list)
|
||||
self.items:draw()
|
||||
itemDB:flush()
|
||||
end
|
||||
|
||||
function page:enable()
|
||||
self.form:setValues(context.state.depositAll)
|
||||
self:updateInventoryList()
|
||||
UI.Page.enable(self)
|
||||
self.form:setValues(context.state.depositAll)
|
||||
self:updateInventoryList()
|
||||
UI.Page.enable(self)
|
||||
end
|
||||
|
||||
function page.items:getRowTextColor(row)
|
||||
@@ -84,57 +84,57 @@ function page.items:getRowTextColor(row)
|
||||
end
|
||||
|
||||
function page:depositAll()
|
||||
self.notification:info('Depositing all items...')
|
||||
self.notification:info('Depositing all items...')
|
||||
|
||||
local inv = ni.getInventory().list()
|
||||
local inv = ni.getInventory().list()
|
||||
|
||||
for slot, item in pairs(inv) do
|
||||
item = itemDB:get(item, function() return ni.getInventory().getItemMeta(slot) end)
|
||||
local key = makeKey(item)
|
||||
if not context.state.depositAll.retain[key] then
|
||||
if (context.state.depositAll.includeHotbar or slot > 9) and item.name ~= 'plethora:neuralconnector' then
|
||||
context:sendRequest({
|
||||
request = 'deposit',
|
||||
source = 'inventory',
|
||||
slot = slot,
|
||||
count = item.count,
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
for slot, item in pairs(inv) do
|
||||
item = itemDB:get(item, function() return ni.getInventory().getItemMeta(slot) end)
|
||||
local key = makeKey(item)
|
||||
if not context.state.depositAll.retain[key] then
|
||||
if (context.state.depositAll.includeHotbar or slot > 9) and item.name ~= 'plethora:neuralconnector' then
|
||||
context:sendRequest({
|
||||
request = 'deposit',
|
||||
source = 'inventory',
|
||||
slot = slot,
|
||||
count = item.count,
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function page:eventHandler(event)
|
||||
if event.type == 'checkbox_change' and event.element.formKey == 'includeHotbar' then
|
||||
context.state.depositAll.includeHotbar = event.checked
|
||||
page:updateInventoryList()
|
||||
if event.type == 'checkbox_change' and event.element.formKey == 'includeHotbar' then
|
||||
context.state.depositAll.includeHotbar = event.checked
|
||||
page:updateInventoryList()
|
||||
|
||||
elseif event.type == 'grid_select' then
|
||||
local key = event.selected.key
|
||||
if context.state.depositAll.retain[key] then
|
||||
context.state.depositAll.retain[key] = nil
|
||||
else
|
||||
context.state.depositAll.retain[key] = true
|
||||
end
|
||||
context:setState('depositAll', context.state.depositAll)
|
||||
self.items:draw()
|
||||
elseif event.type == 'grid_select' then
|
||||
local key = event.selected.key
|
||||
if context.state.depositAll.retain[key] then
|
||||
context.state.depositAll.retain[key] = nil
|
||||
else
|
||||
context.state.depositAll.retain[key] = true
|
||||
end
|
||||
context:setState('depositAll', context.state.depositAll)
|
||||
self.items:draw()
|
||||
|
||||
elseif event.type == 'form_complete' then
|
||||
Config.update('miloRemote', context.state)
|
||||
page:depositAll()
|
||||
UI:setPreviousPage()
|
||||
elseif event.type == 'form_complete' then
|
||||
Config.update('miloRemote', context.state)
|
||||
page:depositAll()
|
||||
UI:setPreviousPage()
|
||||
|
||||
elseif event.type == 'form_cancel' then
|
||||
UI:setPreviousPage()
|
||||
elseif event.type == 'form_cancel' then
|
||||
UI:setPreviousPage()
|
||||
|
||||
else
|
||||
return UI.Page.eventHandler(self, event)
|
||||
end
|
||||
else
|
||||
return UI.Page.eventHandler(self, event)
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
menuItem = 'Deposit all',
|
||||
callback = function()
|
||||
UI:setPage(page)
|
||||
end,
|
||||
menuItem = 'Deposit all',
|
||||
callback = function()
|
||||
UI:setPage(page)
|
||||
end,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user