From 3f45c76783729564e4b212fe8e0eb062492433af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9tro?= <yann.roberge@polymtl.ca> Date: Sun, 1 Nov 2020 15:40:50 -0500 Subject: [PATCH] =?UTF-8?q?Impl=C3=A9mentation=20de=20refuelUntil.=20Le=20?= =?UTF-8?q?fichier=20bloc=5Fids.lua=20devient=20plus=20g=C3=A9n=C3=A9ral,?= =?UTF-8?q?=20macros.lua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bloc_ids.lua | 12 ------------ bucher.lua | 2 +- macros.lua | 25 +++++++++++++++++++++++++ rsiTurtle.lua | 42 +++++++++++++++++++++++++++++++++++++++++- test.lua | 27 ++++++++++++++++++--------- 5 files changed, 85 insertions(+), 23 deletions(-) delete mode 100644 bloc_ids.lua create mode 100644 macros.lua diff --git a/bloc_ids.lua b/bloc_ids.lua deleted file mode 100644 index ee0ee78..0000000 --- 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 10a57ad..2329717 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 0000000..f251bda --- /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 ba8617d..30c5dff 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 4211df3..6daecf9 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") -- GitLab