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 | end | |
25 | return startX, startY | |
26 | end |