From 30e6c88440b051ba995c47069445d67458343e1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9tro?= <yann.roberge@polymtl.ca> Date: Fri, 6 Nov 2020 22:56:12 -0500 Subject: [PATCH] Refactoring de chopArea --- bucher.lua | 74 ++++++++++++++------------------------------------- rsiTurtle.lua | 4 +-- test.lua | 10 +++---- 3 files changed, 27 insertions(+), 61 deletions(-) diff --git a/bucher.lua b/bucher.lua index 2329717..607997e 100644 --- a/bucher.lua +++ b/bucher.lua @@ -72,36 +72,23 @@ end -- \brief Couper les arbres tout en avançant le long d'une ligne -- \param int distance Nombre de blocs à parcourir -- \return bool Succès -function RSI_Bucheron:moveChop(distance) - --TODO: Implémenter - local success = true - local traveled = 0 - - self:chopTree() - self.base_:ground() - self.base_:climb() - - while (traveled < distance) and turtle.forward() - do - self:chopTree() - self.base_:ground() - self.base_:climb() - self:chopTree() - - traveled = traveled + 1 +function RSI_Bucheron:maintainFuelLevels() + if (turtle.getFuelLevel() < FUEL_LOW) + then + return self.base_:refuelUntil(FUEL_FULL, SLOT_ENDERCHEST_FUEL) end + return true +end - if self.facing_ == 0 then - self.base_.pos_["x"] = self.base_.pos_["x"] + traveled - elseif self.base_.facing_ == 3 then - self.base_.pos_["z"] = self.base_.pos_["z"] + traveled - elseif self.base_.facing_ == 6 then - self.base_.pos_["x"] = self.base_.pos_["x"] - traveled - elseif self.base_.facing_ == 9 then - self.base_.pos_["z"] = self.base_.pos_["z"] - traveled +--- +-- \brief Si l'inventaire est plein, le vider dans le enderchest prévu pour +-- \return bool Succès +function RSI_Bucheron:manageInventory() + if ( self.base_:inventoryFull(SLOT_STORAGE_START, SLOT_STORAGE_END) ) + then + return self.base_:dumpInventory(SLOT_STORAGE_START, SLOT_STORAGE_END, + SLOT_ENDERCHEST_DUMP) end - - return (traveled == distance) end @@ -117,36 +104,15 @@ function RSI_Bucheron:chopArea(lines, cols) assert(lines >= 1) assert(cols >= 1) - -- La ligne de la case de départ compte comme 1 - lines = lines - 1 - - self.base_:ground() - self:chopTree() + action = function () + self:maintainFuelLevels() + self:manageInventory() + turtle.select(SLOT_STORAGE_START) - for i=1,cols,1 - do - print("Debut de colonne.") - success = self:moveChop(lines) -- FIXME: Remplacer moveForward par moveChop - self.base_:ground() - self.base_:climb() - - if not success - then - return success - end - - if ( (i%2) == 0 ) - then - success = self.base_:left(true) - self.base_:turnLeft() - else - success = self.base_:right(true) - self.base_:turnRight() - end self:chopTree() - end - return success + return self.base_:goThroughAreaGrounded(lines, cols, action) + end diff --git a/rsiTurtle.lua b/rsiTurtle.lua index 5b1b156..a4f28eb 100644 --- a/rsiTurtle.lua +++ b/rsiTurtle.lua @@ -739,14 +739,14 @@ function RSI_Turtle:dumpInventory(firstSlot, lastSlot, dumpChestSlot) turtle.select(dumpChestSlot) success = turtle.place() if (not success) then return false end - + for i=firstSlot, lastSlot, 1 do turtle.select(i) success = turtle.drop() or (turtle.getItemCount() == 0) if (not success) then return false end end - + -- Ramasser le coffre turtle.select(dumpChestSlot) success = self:dig() diff --git a/test.lua b/test.lua index 9a2714a..5c38fa9 100644 --- a/test.lua +++ b/test.lua @@ -176,8 +176,8 @@ end --print("Test chopTree") --assert(b:chopTree()) ---print("Test chopArea") ---assert(b:chopArea(15, 20)) +print("Test chopArea") +assert(b:chopArea(15, 20)) --print("Test moveToOriginGounded") --b.base_:moveTo(5,5,5) @@ -186,9 +186,9 @@ end --print("Test goThroughVolume") --assert(t:goThroughVolume(4,3,3, turtle.digDown)) -print("Test excavateArea") -assert(e:excavateArea(4,4)) -assert(e.base_:moveToOrigin()) +--print("Test excavateArea") +--assert(e:excavateArea(4,4)) +--assert(e.base_:moveToOrigin()) --print("Test excavateVolumeDown") --assert(e:excavateVolumeDown(10,10,1)) -- GitLab