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 |