SHOW:
|
|
- or go back to the newest paste.
1 | local sprite = require "sprite" | |
2 | - | local loadMap = require "loadMap" |
2 | + | local loadMap = require "maps.load" |
3 | --[[ | |
4 | Loads a map layer with sprite data from a text file | |
5 | name is the file name to load from | |
6 | xOrigin and yOrigin describe the square in the map data to place in 1, 1 of the display field | |
7 | --]] | |
8 | local function loadMapFile(self, name, xOrigin, yOrigin) | |
9 | - | self.data = loadMap(name, self.terrain.mapping) |
9 | + | self.data = loadMap(name, self.terrain) |
10 | for v, row in pairs(self.tiles) do | |
11 | for h, tile in pairs(row) do | |
12 | local sourceRow = self.data[(v - 1) + yOrigin] | |
13 | local terrain = sourceRow and sourceRow[(h - 1) + xOrigin] | |
14 | tile:prepare(terrain) | |
15 | tile:play() | |
16 | end | |
17 | end | |
18 | end | |
19 | - | local tile = sprite.newSprite(self) |
19 | + | |
20 | local function createMap(self, size, columns, rows) | |
21 | local map = display.newGroup() | |
22 | map.terrain = self | |
23 | map.tiles = {} | |
24 | for row = 0, rows + 1 do | |
25 | map.tiles[row] = {} | |
26 | for column=0, columns + 1 do | |
27 | local tile = sprite.newSprite(self.textures) | |
28 | tile:setReferencePoint(display.BottomLeftReferencePoint) | |
29 | map:insert(tile) | |
30 | tile.xScale, tile.yScale = size / tile.width, size / tile.height | |
31 | tile.x, tile.y = column * size, row * size | |
32 | map.tiles[row][column] = tile | |
33 | end | |
34 | end | |
35 | map.load = loadMapFile | |
36 | return map | |
37 | end | |
38 | ||
39 | return function(spritesheet, size, kinds, mapping) | |
40 | local terrain = sprite.newSpriteSet(sprite.newSpriteSheet(spritesheet, size, size), 1, 1) | |
41 | for i, kind in ipairs(kinds) do | |
42 | - | terrain.create = createMap |
42 | + | |
43 | - | terrain.mapping = mapping |
43 | + | |
44 | - | return terrain |
44 | + | |
45 | mapping = {} | |
46 | for _, kind in ipairs(kinds) do | |
47 | mapping[kind:sub(1, 1):upper()] = kind | |
48 | end | |
49 | end | |
50 | mapping.textures = terrain | |
51 | mapping.create = createMap | |
52 | return mapping | |
53 | end |