SHOW:
|
|
- or go back to the newest paste.
| 1 | - | local function tileWithBox(i,j) |
| 1 | + | local function move(map, startX, startY, dX, dY) |
| 2 | - | |
| 2 | + | local targetX, targetY = startX + dX, startY + dY |
| 3 | - | local tile = gameTile(i,j) |
| 3 | + | if not map[targetX][targetY] then return startX, startY; end |
| 4 | - | tile.isBox = true |
| 4 | + | if map[targetX][targetY].isBox then |
| 5 | - | tile.isWalkable = false |
| 5 | + | local slideX, slideY = targetX + dX, targetY + dY |
| 6 | - | |
| 6 | + | if not (map[slideX] and map[slideX][slideY] and map[slideX][slideY].isWalkable) then return startX, startY; end |
| 7 | - | local tileWithBox |
| 7 | + | local empty, boxTile = map[slideX][slideY], map[targetX][targetY] |
| 8 | - | |
| 8 | + | local sprite = boxTile.box |
| 9 | - | trackID = trackID + 1 |
| 9 | + | sprite.x, sprite.y = empty.x, empty.y |
| 10 | - | tile.box = display.newImage("crate.png")
|
| 10 | + | empty.box = boxTile.box |
| 11 | - | tile.box.i = i |
| 11 | + | empty.isBox = true |
| 12 | - | tile.box.j = j |
| 12 | + | empty.isWalkable = false |
| 13 | - | tile.box.x = 240-((8 * 17) +17) +(i*34) |
| 13 | + | boxTile.box = nil |
| 14 | - | tile.box.y = (j * 34) |
| 14 | + | boxTile.isWalkable = true |
| 15 | - | tile.box.myID = trackID |
| 15 | + | boxTile.isBox = false |
| 16 | - | |
| 16 | + | end |
| 17 | - | return tile |
| 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 |