Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local sprite = require "sprite"
- local loadMap = require "maps.load"
- --[[
- Loads a map layer with sprite data from a text file
- name is the file name to load from
- xOrigin and yOrigin describe the square in the map data to place in 1, 1 of the display field
- --]]
- local function loadMapFile(self, name, xOrigin, yOrigin)
- self.data = loadMap(name, self.terrain)
- for v, row in pairs(self.tiles) do
- for h, tile in pairs(row) do
- local sourceRow = self.data[(v - 1) + yOrigin]
- local terrain = sourceRow and sourceRow[(h - 1) + xOrigin]
- tile:prepare(terrain)
- tile:play()
- end
- end
- end
- local function createMap(self, size, columns, rows)
- local map = display.newGroup()
- map.terrain = self
- map.tiles = {}
- for row = 0, rows + 1 do
- map.tiles[row] = {}
- for column=0, columns + 1 do
- local tile = sprite.newSprite(self.textures)
- tile:setReferencePoint(display.BottomLeftReferencePoint)
- map:insert(tile)
- tile.xScale, tile.yScale = size / tile.width, size / tile.height
- tile.x, tile.y = column * size, row * size
- map.tiles[row][column] = tile
- end
- end
- map.load = loadMapFile
- return map
- end
- return function(spritesheet, size, kinds, mapping)
- local terrain = sprite.newSpriteSet(sprite.newSpriteSheet(spritesheet, size, size), 1, 1)
- for i, kind in ipairs(kinds) do
- sprite.add(terrain, kind, i + 1, 1, 1, 1)
- end
- if not mapping then
- mapping = {}
- for _, kind in ipairs(kinds) do
- mapping[kind:sub(1, 1):upper()] = kind
- end
- end
- mapping.textures = terrain
- mapping.create = createMap
- return mapping
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement