This commit is contained in:
kepler155c
2018-10-29 17:15:07 -04:00
parent 46ed01630d
commit f24aeb135d
3 changed files with 42 additions and 16 deletions

View File

@@ -106,6 +106,7 @@ local page = UI.Page {
q = 'quit',
},
displayMode = 0,
items = { },
}
local function filterItems(t, filter, displayMode)
@@ -137,7 +138,6 @@ end
function page:sendRequest(data)
local response
debug(data)
sync(self, function()
self:sync()
local msg
@@ -146,6 +146,7 @@ debug(data)
self:setStatus('connecting ...')
socket, msg = Socket.connect(options.server.value, 4242)
if socket then
self:setStatus('connected ...')
socket:write(options.user.value)
end
end
@@ -163,8 +164,11 @@ debug(data)
end
end
self:setStatus(msg or 'Failed to connect')
Event.onTimeout(2, function()
self:setStatus('')
end)
end)
debug('got response')
return response
end
@@ -196,28 +200,32 @@ function page:eventHandler(event)
if item then
self:setStatus('requesting 1 ...')
local response = self:sendRequest({ request = 'transfer', item = item, count = 1 })
item.count = response.count
self.grid:draw()
if response then
item.count = response.count
self.grid:draw()
end
end
elseif event.type == 'eject_stack' then
local item = self.grid:getSelected()
if item then
self:setStatus('requesting stack ...')
-- TODO: send a stack request - have server figure out stack size
local response = self:sendRequest({ request = 'transfer', item = item, count = 64 })
item.count = response.count
self.grid:draw()
local response = self:sendRequest({ request = 'transfer', item = item, count = 'stack' })
if response then
item.count = response.count
self.grid:draw()
end
end
elseif event.type == 'eject_all' then
local item = self.grid:getSelected()
if item then
self:setStatus('requesting all ...')
-- TODO: let server figure out count
local response = self:sendRequest({ request = 'transfer', item = item, count = item.count })
item.count = response.count
self.grid:draw()
local response = self:sendRequest({ request = 'transfer', item = item, count = 'all' })
if response then
item.count = response.count
self.grid:draw()
end
end
elseif event.type == 'eject_specified' then
@@ -235,10 +243,10 @@ function page:eventHandler(event)
end
elseif event.type == 'refresh' then
self:setFocus(self.statusBar.filter)
self:setStatus('updating ...')
self:refresh()
self.grid:draw()
self:setFocus(self.statusBar.filter)
elseif event.type == 'toggle_display' then
local values = {
@@ -268,9 +276,13 @@ function page:eventHandler(event)
end
function page:enable()
self:refresh()
self:setFocus(self.statusBar.filter)
UI.Page.enable(self)
Event.onTimeout(.1, function()
self:refresh()
self.grid:draw()
self:sync()
end)
end
function page:refresh()

View File

@@ -151,6 +151,10 @@ function Milo:xxx(item, count)
end
function Milo:provideItem(item, count, callback)
if count <= 0 then
return 0
end
local current = Milo:getItem(Milo:listItems(), item) or { count = 0 }
local toCraft = count - math.min(current.count, count)

View File

@@ -1,4 +1,5 @@
local Event = require('event')
local itemDB = require('itemDB')
local Milo = require('milo')
local Socket = require('socket')
@@ -59,7 +60,16 @@ debug('remote: ' .. data.request)
Milo:clearGrid()
elseif data.request == 'transfer' then
local count = Milo:provideItem(data.item, data.count, function(amount, currentCount)
local count = data.count
if count == 'stack' then
count = itemDB:getMaxCount(data.item)
elseif count == 'all' then
local item = Milo:getItem(Milo:listItems(), data.item)
count = item and item.count or 0
end
local provided = Milo:provideItem(data.item, count, function(amount, currentCount)
amount = context.storage:export(
context.localName,
nil,
@@ -75,7 +85,7 @@ debug('remote: ' .. data.request)
return currentCount - amount
end)
socket:write({ count = count })
socket:write({ count = provided })
end
until not socket.connected