View difference between Paste ID: EzxkimAA and LALy7xXJ
SHOW: | | - or go back to the newest paste.
1
local function move(map, startX, startY, dX, dY)
2
	local targetX, targetY = startX + dX, startY + dY
3
	if not map[targetX][targetY] then return startX, startY; end
4
	if map[targetX][targetY].isBox then
5
		local slideX, slideY = targetX + dX, targetY + dY
6
		if not (map[slideX] and map[slideX][slideY] and map[slideX][slideY].isWalkable) then return startX, startY; end
7
		local empty, box = map[slideX][slideY], map[targetX][targetY]
8
		local sprite = tileBlox[box.id]
9
		sprite.x, sprite.y = empty.x, empty.y
10
		empty.id =  box.id
11
		empty.isBox = true
12
		empty.isWalkable = false
13
		box.id = 0
14
		box.isWalkable = true
15
		box.isBox = false
16
	end
17
	if map[targetX][targetY].isWalkable then
18
		local target, origin = map[targetX][targetY], map[startX][startY]
19
		hero.x, hero.y = target.x, target.y
20
		target.isHero = true
21
		target.isWalkable = false
22
		origin.isHero = false
23
		origin.isWalkable = true
24
		return targetX, targetY
25
	end
26
	return startX, startY
27
end