From 9ee67c1fad311233b26e54a744e0eb4bb13b78af Mon Sep 17 00:00:00 2001 From: kepler155c Date: Fri, 26 Oct 2018 01:03:31 -0400 Subject: [PATCH] milo wip --- apis/chestAdapter18.lua | 16 +++++++--- milo/Milo.lua | 7 ++-- milo/apis/inventoryAdapter.lua | 55 -------------------------------- milo/apis/milo.lua | 3 +- milo/apis/networkedAdapter18.lua | 2 +- milo/plugins/listing.lua | 2 +- 6 files changed, 18 insertions(+), 67 deletions(-) delete mode 100644 milo/apis/inventoryAdapter.lua diff --git a/apis/chestAdapter18.lua b/apis/chestAdapter18.lua index 7e76a57..f79aadb 100644 --- a/apis/chestAdapter18.lua +++ b/apis/chestAdapter18.lua @@ -72,6 +72,16 @@ end -- provide a consolidated list of items function ChestAdapter:listItems(throttle) + for _ = 1, 5 do + local list = self:listItemsInternal(throttle) + if list then + return list + end + end + error('Error accessing inventory: ' .. self.direction) +end + +function ChestAdapter:listItemsInternal(throttle) local cache = { } local items = { } throttle = throttle or Util.throttle() @@ -100,10 +110,8 @@ function ChestAdapter:listItems(throttle) end itemDB:flush() - if not Util.empty(items) then - self.cache = cache - return items - end + self.cache = cache + return items end function ChestAdapter:getItemInfo(item) diff --git a/milo/Milo.lua b/milo/Milo.lua index 603d5c8..6e06b18 100644 --- a/milo/Milo.lua +++ b/milo/Milo.lua @@ -67,12 +67,11 @@ local Config = require('config') local Event = require('event') local itemDB = require('itemDB') local Milo = require('milo') +local NetworkAdapter = require('networkedAdapter18') local Peripheral = require('peripheral') local UI = require('ui') local Util = require('util') -local InventoryAdapter = require('inventoryAdapter') - local device = _G.device local fs = _G.fs local multishell = _ENV.multishell @@ -147,7 +146,7 @@ debug(storage) --TODO: cannot do this, must be able to add and mark inactive -- due to activity table -- add an networkAdapter:scan() - context.inventoryAdapter = InventoryAdapter.wrap({ remoteDefaults = storage }) + context.inventoryAdapter = NetworkAdapter({ remoteDefaults = storage }) if not context.inventoryAdapter then error('Invalid inventory configuration') @@ -201,7 +200,7 @@ local page = UI:getPage('listing') UI:setPage(page) page:setFocus(page.statusBar.filter) -- todo: move this line into listing code -Event.onInterval(5, function() +Event.onInterval(500, function() if not Milo:isCraftingPaused() then Milo:resetCraftingStatus() context.inventoryAdapter:refresh() diff --git a/milo/apis/inventoryAdapter.lua b/milo/apis/inventoryAdapter.lua deleted file mode 100644 index 3f16327..0000000 --- a/milo/apis/inventoryAdapter.lua +++ /dev/null @@ -1,55 +0,0 @@ -local Adapter = { } - -function Adapter.wrap(args) - local adapters = { - 'networkedAdapter18', - 'refinedAdapter', - 'meAdapter18', - 'chestAdapter18', - - -- adapters for version 1.7 - 'meAdapter', - 'chestAdapter', - } - - for _,adapterType in ipairs(adapters) do - local adapter = require(adapterType)(args) - - if adapter:isValid() then - - -- figure out which direction to push/pull items from an inventory - -- based on the side the inventory is attached and which way the - -- turtle/computer is facing - if args and args.facing and adapter.side and not adapter.direction then - local horz = { top = 'down', bottom = 'up' } - adapter.direction = horz[adapter.side] - - if not adapter.direction then - local sides = { - front = 0, - right = 1, - back = 2, - left = 3, - } - -- pretty sure computer/turtle have sides reversed - local cards = { - east = 0, - south = 1, - west = 2, - north = 3, - } - local icards = { - [ 0 ] = 'west', - [ 1 ] = 'north', - [ 2 ] = 'east', - [ 3 ] = 'south', - } - adapter.direction = icards[(cards[args.facing] + sides[adapter.side]) % 4] - end - end - return adapter - end - end -end - -return Adapter diff --git a/milo/apis/milo.lua b/milo/apis/milo.lua index 9bd90fb..378cd71 100644 --- a/milo/apis/milo.lua +++ b/milo/apis/milo.lua @@ -201,8 +201,7 @@ end -- Return a list of everything in the system function Milo:listItems() - self.items = self.context.inventoryAdapter:listItems() - return self.items + return self.context.inventoryAdapter:listItems() end return Milo diff --git a/milo/apis/networkedAdapter18.lua b/milo/apis/networkedAdapter18.lua index 2f1295f..5c81d90 100644 --- a/milo/apis/networkedAdapter18.lua +++ b/milo/apis/networkedAdapter18.lua @@ -1,6 +1,6 @@ local class = require('class') local Util = require('util') -local InventoryAdapter = require('inventoryAdapter') +local InventoryAdapter = require('inventoryAdapter') local Peripheral = require('peripheral') local NetworkedAdapter = class() diff --git a/milo/plugins/listing.lua b/milo/plugins/listing.lua index c59f7ac..2a941a6 100644 --- a/milo/plugins/listing.lua +++ b/milo/plugins/listing.lua @@ -225,7 +225,7 @@ function listingPage:enable() end function listingPage:refresh() - self.allItems = Milo:listItems() + self.allItems = context.inventoryAdapter:refresh() Milo:mergeResources(self.allItems) self:applyFilter() end