mirror of
https://gitlab.com/deetmit/mesecons_x.git
synced 2024-10-27 10:49:31 +01:00
151 lines
4.1 KiB
Lua
151 lines
4.1 KiB
Lua
|
|
local function get_right_nr(user,rad)
|
|
local dir = radians_to_vectors(rad)
|
|
local left = dir.left
|
|
local right = dir.right
|
|
|
|
local lpos = {}
|
|
lpos[1] = mesecons_autotools.get_pos(user,1)
|
|
lpos[2] = mesecons_autotools.get_pos(user,2)
|
|
local posrigth_number
|
|
|
|
if lpos[1] == nil then return end
|
|
if lpos[2] == nil then return end
|
|
|
|
|
|
|
|
|
|
if right.x == 1 then
|
|
if lpos[1].x > lpos[2].x then
|
|
posrigth_number = 1
|
|
else
|
|
posrigth_number = 2
|
|
end
|
|
elseif right.x == -1 then
|
|
if lpos[1].x > lpos[2].x then
|
|
posrigth_number = 2
|
|
else
|
|
posrigth_number = 1
|
|
end
|
|
elseif right.z == 1 then
|
|
if lpos[1].z > lpos[2].z then
|
|
posrigth_number = 1
|
|
else
|
|
posrigth_number =2
|
|
end
|
|
elseif right.z == -1 then
|
|
if lpos[1].z > lpos[2].z then
|
|
posrigth_number = 2
|
|
else
|
|
posrigth_number = 1
|
|
end
|
|
|
|
end
|
|
|
|
return posrigth_number
|
|
|
|
end
|
|
|
|
|
|
local function move_right(user,rad)
|
|
local dir = radians_to_vectors(rad)
|
|
local left = dir.left
|
|
local right = dir.right
|
|
|
|
local right_nr = get_right_nr(user,rad)
|
|
local lpos = {}
|
|
lpos[1] = mesecons_autotools.get_pos(user,1)
|
|
lpos[2] = mesecons_autotools.get_pos(user,2)
|
|
|
|
|
|
if right == nil then return end
|
|
if right_nr == nil then return end
|
|
if lpos[1] == nil then return end
|
|
if lpos[2] == nil then return end
|
|
|
|
|
|
local new_pos = vector.add(lpos[right_nr], right)
|
|
mesecons_autotools.set_pos(user,right_nr, new_pos)
|
|
|
|
-- Update
|
|
mesecons_autotools.render(user)
|
|
mesecons_autotools.zero_stack_counter(user)
|
|
end
|
|
|
|
local function can_shrink(user,right)
|
|
local lpos = {}
|
|
lpos[1] = mesecons_autotools.get_pos(user,1)
|
|
lpos[2] = mesecons_autotools.get_pos(user,2)
|
|
|
|
if right == nil then return end
|
|
if lpos[1] == nil then return end
|
|
if lpos[2] == nil then return end
|
|
|
|
if right.x ~= 0 then
|
|
if lpos[1].x == lpos[2].x then
|
|
return false
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
|
|
if right.z ~= 0 then
|
|
if lpos[1].z == lpos[2].z then
|
|
return false
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
local function move_left(user,rad)
|
|
local dir = radians_to_vectors(rad)
|
|
local left = dir.left
|
|
local right = dir.right
|
|
|
|
|
|
if can_shrink(user,right) == false then return end
|
|
|
|
|
|
local right_nr = get_right_nr(user,rad)
|
|
local lpos = {}
|
|
lpos[1] = mesecons_autotools.get_pos(user,1)
|
|
lpos[2] = mesecons_autotools.get_pos(user,2)
|
|
|
|
|
|
if left == nil then return end
|
|
if lpos[1] == nil then return end
|
|
if lpos[2] == nil then return end
|
|
|
|
|
|
|
|
local new_pos = vector.add(lpos[right_nr], left)
|
|
mesecons_autotools.set_pos(user,right_nr, new_pos)
|
|
|
|
-- Update
|
|
mesecons_autotools.render(user)
|
|
mesecons_autotools.zero_stack_counter(user)
|
|
|
|
end
|
|
|
|
|
|
mesecons_autotools.register_action("white","left","air", function(user,pos,rad)
|
|
move_left(user,rad)
|
|
|
|
|
|
end)
|
|
mesecons_autotools.register_action("white","left","block", function(user,pos,rad)
|
|
move_left(user,rad)
|
|
end)
|
|
|
|
mesecons_autotools.register_action("white","right","block", function(user,pos,rad)
|
|
move_right(user,rad)
|
|
end)
|
|
|
|
mesecons_autotools.register_action("white","right","air", function(user,pos,rad)
|
|
move_right(user,rad)
|
|
end)
|
|
|
|
|
|
|