From a4a33d1eef4ef19dea4fe7bdf47878469aff910f Mon Sep 17 00:00:00 2001 From: Guillaume ARM Date: Tue, 21 May 2024 23:27:57 +0200 Subject: [PATCH] feat(inferium-harvester): improve printed messages + fuel management at start --- inferium-harvester.lua | 45 ++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/inferium-harvester.lua b/inferium-harvester.lua index bff75f8..535599f 100644 --- a/inferium-harvester.lua +++ b/inferium-harvester.lua @@ -3,7 +3,7 @@ local utils = require('libs/utils') local turtleUtils = require('libs/turtle-utils') local config = require('config/harvesting') -local VERSION = "2.0.0" +local VERSION = "2.2.0" local INFERIUM_SERVER = 'inferium.com' local IDLE_TIME = 2 local WAIT_ITEM_IDLE_TIME = 5 @@ -44,10 +44,8 @@ local function getIndexedCount(t) return res end -local function assertEnoughFuel() - if turtle.getFuelLevel() < MIN_FUEL_NEEDED then - error('Not enough fuel') - end +local function hasEnoughFuel() + return turtle.getFuelLevel() >= MIN_FUEL_NEEDED end local function retrieveChestFuelOrientation() @@ -100,6 +98,7 @@ end -- Implementations local function retrieveHomePositionProcedure() + print("> retrieving the home position") if turtleUtils.getInventory('bottom') then retrieveChestFuelOrientation() return @@ -143,6 +142,7 @@ local function retrieveHomePositionProcedure() end local function dropAllProcedure() + print('> drop all') for i=1, 16, 1 do local count = turtle.getItemCount(i) @@ -157,6 +157,7 @@ local function dropAllProcedure() end local function refuelProcedure() + print('> refuel') local refuelOk, refuelErr = turtleUtils.refuelWithBuffer('bottom', 'front', MIN_FUEL_NEEDED, IDLE_TIME) if not refuelOk then @@ -221,6 +222,8 @@ local function forward() end local function harvestProcedure() + print('> harvest') + for i=1, config.length, 1 do harvestDown(i) @@ -242,6 +245,7 @@ end local function retrieveLocalPlan() goToHarvestPoint() + print('> retrieve the local plan') localPlan = {} for i=1, config.length, 1 do @@ -267,6 +271,7 @@ local function retrieveLocalPlan() end local function fetchRemotePlan() + print('> fetch remote plan') local message = { type = 'getplan', payload = { computerId = os.getComputerID() } } while true do @@ -276,6 +281,7 @@ local function fetchRemotePlan() previouslyFetchedRemotePlan = replyMessage.payload return replyMessage.payload elseif previouslyFetchedRemotePlan then + print('> failed to fetch remote plan, use the previous one instead') return previouslyFetchedRemotePlan end @@ -286,7 +292,8 @@ end local function removeSeeds(seeds) goToHarvestPoint() - local stateSeeds = seeds + print('> remove old seeds') + local stateSeeds = seeds -- warning: do not mutate the data (only the ref) for i=1, config.length, 1 do local ok, block = turtle.inspectDown() @@ -324,6 +331,7 @@ local function removeSeeds(seeds) end local function retrieveSeeds(seeds) + print('> retrieve seeds from inventory') local seedRetrieved = false local seedsCount = getIndexedCount(seeds) @@ -358,6 +366,8 @@ end local function replantSeeds() goToHarvestPoint() + print('> replant seeds') + for i=1, config.length, 1 do local ok, block = turtle.inspectDown() @@ -419,21 +429,34 @@ local function replantProcedure() localPlan = {} end +local function resetTerminal() + term.clear() + term.setCursorPos(1, 1) +end + -- Main procedure local function main() net.openRednet() print("Starting Trap's inferium harvester v" .. VERSION) - turtleUtils.refuelAllFromInventory() - assertEnoughFuel() + if not hasEnoughFuel() then + turtleUtils.refuelAllFromInventory() + end + + if not hasEnoughFuel() then + error('Not enough fuel', 0) + end - print("> retrieving home position") retrieveHomePositionProcedure() - print("> start the harvesting process") + local cycleNumber = 1 while true do + resetTerminal() + print('> Starting cycle ' .. tostring(cycleNumber)) + print() + dropAllProcedure() refuelProcedure() @@ -442,6 +465,8 @@ local function main() goToHarvestPoint() harvestProcedure() goBackToHome() + + cycleNumber = cycleNumber + 1 end net.closeRednet()