Advertisement
alestane

Incorporated loading texture fields

Jan 1st, 2012
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local sprite = require "sprite"
  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)
  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.  
  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.         sprite.add(terrain, kind, i + 1, 1, 1, 1)
  43.     end
  44.     if not mapping then
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement