Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local terrain = require "maps.terrain"
- -- Will call world:Add(scoutR.New("New"), world.MapModel.Tiles[2][1])
- local function addCharacter(self, character, tile)
- self:insert(character)
- if tile and tile.Character == nil then
- if character.Tile then character.Tile.Character = nil end
- character.x, character.y = tile.xTile * size, tile.yTile * size
- character.Tile = tile
- tile.Character = character
- end
- return tile and tile.Character
- end
- local function cameraView(self, xCoord, yCoord)
- 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)
- print(xCoord, yCoord, self.xReference, self.yReference, self.ViewWidth, self.ViewHeight)
- self.x, self.y = 0, 0 -- display.contentCenterX, display.contentCenterY
- local xCorner, yCorner = self:contentToLocal(self.parent:localToContent(0, 0))
- local cornerTileX, cornerTileY = math.floor(xCorner / size), math.floor(yCorner / size)
- self.MapView.x, self.MapView.y = cornerTileX * size, cornerTileY * size
- self.MapView:View(cornerTileX + 1, cornerTileY + 1)
- end
- local function getCharacter(self, xTile, yTile)
- return self.MapModel[yTile][xTile].Character
- end
- local function removeCharacter(self, character)
- self:remove(character)
- -- If your character
- -- Add to dead table
- return character
- end
- return function(mapModel, spriteSet, xSize, ySize)
- local world = display.newGroup()
- world.Add = addCharacter
- world.Get = getCharacter
- world.MapModel = mapModel
- world.ViewWidth, world.ViewHeight = xSize, ySize -- save height and width in tiles for pinning
- world.MapView = terrain(world, spriteSet, mapModel, xSize, ySize)
- world.Remove = removeCharacter
- world.View = cameraView
- world:addEventListener("touch", function(event)
- local world = event.target
- if event.phase == "began" then
- world.xStart, world.yStart = world:contentToLocal(world.parent:localToContent(0,0))
- else
- world:View(world.xStart + (event.xStart - event.x), world.yStart + (event.yStart - event.y))
- end
- end)
- world:View(0, 0)
- return world
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement