basic_robot/scripts/simulators/room_walker.lua
rnd 8db6acb801 code preprocessor fix
various demo scripts added
2019-03-05 14:15:59 +01:00

40 lines
1023 B
Lua

--TODO: unfinished
if not init then
state = 0
init = true
walkdb = {};
spos = self.spawnpos();
step = 0
startstep = 0; -- mark the step when next walk around begins
local get_dir = function()
local dir = self.viewdir()
end
rot_left = function(dir) local tmp = dir.x;dir.x = -dir.z; dir.z = tmp end
rot_right = function(dir) local tmp = dir.x;dir.x = dir.z; dir.z = -tmp end
end
if state == 0 then
if not move.forward() then state = 1; turn.right(); startstep = 1 end
elseif state == 1 then
step = step + 1
local pos = self.pos();
local x = pos.x-spos.x; local z = pos.z-spos.z;
if not walkdb[x] then walkdb[x] = {} end walkdb[x][z] = step; -- add position
local dir = self.viewdir();
local node = read_node.left();
rot_left(dir) -- rotate left
local xr = x + dir.x; local zr = z + dir.z
if node == "air" and (not dir[xr] or not dir[xr][zr]) then turn.left() end
if not move.forward() and (not dir[xn] or not dir[xn][zn]) then turn.right() move.forward() end
end
self.label(state)