diff --git a/bloc_ids.lua b/bloc_ids.lua deleted file mode 100644 index ee0ee78c526b73473e0191c50be8427d9312707c..0000000000000000000000000000000000000000 --- a/bloc_ids.lua +++ /dev/null @@ -1,12 +0,0 @@ --- bloc_ids.lua --- Created on: 2020-10-16 --- Author: Rétro --- --- Fichier de macros pour les ID des blocs --- --- Utilisation: __include 'bloc_ids' --- - -ID_LOG = "log" -ID_STONE = "stone" -ID_COBBLE = "cobblestone" diff --git a/bucher.lua b/bucher.lua index 10a57ad99fd53eb92d19dc6db5171ffea78e6849..23297178a47f1f595e85cabab32275c66b0c6271 100644 --- a/bucher.lua +++ b/bucher.lua @@ -10,7 +10,7 @@ local RSI_Bucheron = {} RSI_Bucheron.__index = RSI_Bucheron rsiT = require("rsiTurtle") -require("bloc_ids") +require("macros") --- -- \brief Constructeur de RSI_Bucheron diff --git a/macros.lua b/macros.lua new file mode 100644 index 0000000000000000000000000000000000000000..f251bdafdcfe4a3ead28c1a4e1f115b1a3e9ff61 --- /dev/null +++ b/macros.lua @@ -0,0 +1,25 @@ +-- bloc_ids.lua +-- Created on: 2020-10-16 +-- Author: Rétro +-- +-- Fichier de macros pour les ID des blocs +-- +-- Utilisation: __include 'bloc_ids' +-- + +-- Macros générales +FUEL_LOW = 100 +FUEL_FULL = 400 + +-- Cases de l'inventaire dédiées +SLOT_ENDERCHEST_FUEL = 1 +SLOT_ENDERCHEST_DUMP = 2 + +-- ID Blocs +ID_LOG = "log" +ID_STONE = "stone" +ID_COBBLE = "cobblestone" + +-- WARNING: Les ender chest et les ender tanks ont des "blocs names" +-- indentiques. Il est donc impossible de les différencier. +ID_ENDERCHEST = "ender_storage" diff --git a/rsiTurtle.lua b/rsiTurtle.lua index ba8617da7cdd971dceadf48e9fc01caea627e491..30c5dff0ec079d82c54073295d708a31794d63ea 100644 --- a/rsiTurtle.lua +++ b/rsiTurtle.lua @@ -12,7 +12,7 @@ local RSI_Turtle = {} RSI_Turtle.__index = RSI_Turtle require("printf") -require("bloc_ids") +require("macros") --- -- \brief Affiche un hello world @@ -682,4 +682,44 @@ function RSI_Turtle:goThroughVolume(lines, cols, depth, action) end +--- +-- \brief Vérifier si l'ID du bloc en face contient la regex +-- \param int fuelLevel Brûler du carburant jusqu'à ce que le tortue +-- atteigne le niveau spécifié +-- \param int fuelChestSlot Case de l'inventaire contenant un ender chest +-- contenant du carburant +-- \return bool Succès +function RSI_Turtle:refuelUntil(fuelLevel, fuelChestSlot) + local success + local itemInFuelSlot + + self:dig() -- Faire de la place pour le coffre + turtle.select(fuelChestSlot) + success = turtle.place() + if (not success) then return false end + + while (turtle.getFuelLevel() < fuelLevel) + do + -- Prendre un object dans le coffre + success = turtle.suck(1) + if (not success) then return false end + + -- Le brûler + success = turtle.refuel(1) + if (not success) then return false end + end + + -- Ramasser le coffre + success = self:dig() + if (not success) then return false end + + -- Vérifier qu'on a bien ramassé le coffre au bon emplacement de l'inventaire + itemInFuelSlot = turtle.getItemDetail(fuelChestSlot) + if (itemInFuelSlot ~= nil) + then + return string.match(itemInFuelSlot.name, ID_ENDERCHEST) + end + return false +end + return RSI_Turtle diff --git a/test.lua b/test.lua index 4211df35ebf3524d7113b828dbbe177e6793579c..6daecf9d376922f1073871acddfb4b019766d96c 100644 --- a/test.lua +++ b/test.lua @@ -8,7 +8,7 @@ rsiT = require("rsiTurtle") rsiB = require("bucher") rsiE = require("excaver") -require("bloc_ids") +require("macros") -- rsiT.helloWorld() @@ -20,9 +20,9 @@ print("Test de RSI_Bucheron") b = rsiB:init() b:print() --- print("Test de RSI_Excavatrice") --- e = rsiE:init() --- e:print() +print("Test de RSI_Excavatrice") +e = rsiE:init() +e:print() -- print("Test de l'API turtle") -- print(turtle.inspect()) @@ -183,12 +183,21 @@ end --b.base_:moveTo(5,5,5) --assert(b.base_:moveToOriginGrounded()) -print("Test goThroughVolume") -assert(t:goThroughVolume(4,3,3, turtle.digDown)) +--print("Test goThroughVolume") +--assert(t:goThroughVolume(4,3,3, turtle.digDown)) -assert(t:moveToOrigin()) -print(t:getPos()) -assert(checkPos(0,0,0)) +--print("Test excavateVolumeDown") +--assert(e:excavateVolumeDown(2,2,3)) +--assert(e:excavateVolumeDown(10,10,68)) Attention: prend des heures + +print("Test refuelUntil") +assert(e.base_:refuelUntil(FUEL_FULL, SLOT_ENDERCHEST_FUEL)) +print("Fuel level after refueling:") +print(turtle.getFuelLevel()) +assert(turtle.getFuelLevel() >= FUEL_FULL) + +assert(e.base_:moveToOrigin()) +print(e.base_:getPos()) print("Fin des tests")