Advertisement
alestane

Linked sprites (single field, retrieval)

Jan 2nd, 2014
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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, boxTile = map[slideX][slideY], map[targetX][targetY]
  8.         local sprite = boxTile.box
  9.         sprite.x, sprite.y = empty.x, empty.y
  10.         empty.box = boxTile.box
  11.         empty.isBox = true
  12.         empty.isWalkable = false
  13.         boxTile.box = nil
  14.         boxTile.isWalkable = true
  15.         boxTile.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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement