Advertisement
alestane

Pinning included

May 29th, 2012
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.14 KB | None | 0 0
  1. local terrain = require "maps.terrain"
  2.  
  3. -- Will call world:Add(scoutR.New("New"), world.MapModel.Tiles[2][1])
  4. local function addCharacter(self, character, tile)
  5.     self:insert(character)
  6.     if tile and tile.Character == nil then
  7.         if character.Tile then character.Tile.Character = nil end
  8.         character.x, character.y = tile.xTile * size, tile.yTile * size
  9.         character.Tile = tile
  10.         tile.Character = character
  11.     end
  12.     return tile and tile.Character
  13. end
  14.  
  15. local function cameraView(self, xCoord, yCoord)
  16.     self.xReference, self.yReference = math.min(math.max(0, xCoord), (#self.MapModel[1] - self.ViewWidth) * size), math.min(math.max(0, yCoord), (#self.MapModel - self.ViewHeight) * size)
  17.     print(xCoord, yCoord, self.xReference, self.yReference, self.ViewWidth, self.ViewHeight)
  18.     self.x, self.y = 0, 0 -- display.contentCenterX, display.contentCenterY
  19.     local xCorner, yCorner = self:contentToLocal(self.parent:localToContent(0, 0))
  20.     local cornerTileX, cornerTileY = math.floor(xCorner / size), math.floor(yCorner / size)
  21.     self.MapView.x, self.MapView.y = cornerTileX * size, cornerTileY * size
  22.     self.MapView:View(cornerTileX + 1, cornerTileY + 1)
  23. end
  24.  
  25. local function getCharacter(self, xTile, yTile)
  26.     return self.MapModel[yTile][xTile].Character
  27. end
  28.  
  29. local function removeCharacter(self, character)
  30.     self:remove(character)
  31.     -- If your character
  32.         -- Add to dead table
  33.     return character
  34. end
  35.  
  36. return function(mapModel, spriteSet, xSize, ySize)
  37.     local world = display.newGroup()
  38.         world.Add = addCharacter
  39.         world.Get = getCharacter
  40.         world.MapModel = mapModel
  41.         world.ViewWidth, world.ViewHeight = xSize, ySize -- save height and width in tiles for pinning
  42.         world.MapView = terrain(world, spriteSet, mapModel, xSize, ySize)
  43.         world.Remove = removeCharacter
  44.         world.View = cameraView
  45.         world:addEventListener("touch", function(event)
  46.             local world = event.target
  47.             if event.phase == "began" then
  48.                 world.xStart, world.yStart = world:contentToLocal(world.parent:localToContent(0,0))
  49.             else
  50.                 world:View(world.xStart + (event.xStart - event.x), world.yStart + (event.yStart - event.y))
  51.             end
  52.         end)
  53.         world:View(0, 0)
  54.     return world
  55. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement