View difference between Paste ID: rYKjrH21 and WuTkZYYH
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