From 7006e034618ce3d48830c292f2eb2a8b706d592b Mon Sep 17 00:00:00 2001 From: manuel Date: Sun, 8 Jan 2023 16:36:24 +0000 Subject: [PATCH] Update 'Turtle/Turtle.lua' --- Turtle/Turtle.lua | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/Turtle/Turtle.lua b/Turtle/Turtle.lua index e9f001b..f7f9d23 100644 --- a/Turtle/Turtle.lua +++ b/Turtle/Turtle.lua @@ -1,4 +1,5 @@ Turtle = {} +require("movement") function Turtle:new(t) t = t or {} @@ -25,4 +26,42 @@ function Turtle:assertInvUpdate(update) if update == true then self:updateInv() end +end + +function Turtle:moveTo(target) + target = self:resolveTarget(target) + self:log("moving to target") + + moveTo(target[1], target[2], target[3], target[4], self.dir) + + self.x, self.y, self.z, self.dir = target[1], target[2], target[3], target[4] + + self:log("target reached") + +end + +function Turtle:offset(position, dir, offset) + self:assertPositionFormat(position) + assert(type(dir) == "number", "dir must be a number") + assert(type(offset) == "number", "offset must be a number") + local newPosition = self:copyPositionTable(position) + dir = dir % 4 + if (dir == 0) then newPosition[1] = newPosition[1] - offset + elseif (dir == 1) then newPosition[3] = newPosition[3] - offset + elseif (dir == 2) then newPosition[1] = newPosition[1] + offset + else newPosition[3] = newPosition[3] + offset + end + return newPosition +end + +function Turtle:assertPositionFormat(position) + assert(type(position) == "table", "the target is not a table") + assert(type(position[1]) == "number" and type(position[2]) == "number" and type(position[3]) == "number", "the table doesn't contain the position") + assert(type(position[4]) == "number", "direction is missing") +end + +function Turtle:log(message) + if self.verbose == true then + print(message) + end end \ No newline at end of file