Phaser.TilemapParser = { tileset: function (game, key, tileWidth, tileHeight, tileMax, tileMargin, tileSpacing){ var img = game.cache.getTilesetImage(key); if (img == null ) { return null ; } var width = img.width; var height = img.height; if (tileWidth <= 0) { tileWidth = Math.floor(- width / Math.min(-1, tileWidth)); } if (tileHeight <= 0) { tileHeight = Math.floor(- height / Math.min(-1, tileHeight)); } var row = Math.round(width / tileWidth); var column = Math.round(height / tileHeight); var total = row * column; if (tileMax !== -1) { total = tileMax; } if (width == 0 || height == 0 || width < tileWidth || height < tileHeight || total === 0) { console.warn("Phaser.TilemapParser.tileSet: width/height zero or width/height < given tileWidth/tileHeight"); return null ; } var x = tileMargin; var y = tileMargin; var tileset = new Phaser.Tileset(img, key, tileWidth, tileHeight, tileMargin, tileSpacing); for (var i = 0; i < total; i++ ){ tileset.addTile(new Phaser.Tile(tileset, i, x, y, tileWidth, tileHeight)); x += tileWidth + tileSpacing; if (x === width) { x = tileMargin; y += tileHeight + tileSpacing; } } return tileset; } , parse: function (game, data, format){ if (format === Phaser.Tilemap.CSV) { return this.parseCSV(data); } else if (format === Phaser.Tilemap.TILED_JSON) { return this.parseTiledJSON(data); } } , parseCSV: function (data){ data = data.trim(); var output = [] ; var rows = data.split("\n"); var height = _AN_Read_length("length", rows); var width = 0; for (var i = 0; i < _AN_Read_length("length", rows); i++ ){ output[i] = [] ; var column = rows[i].split(","); for (var c = 0; c < _AN_Read_length("length", column); c++ ){ output[i][c] = parseInt(column[c]); } if (width == 0) { width = _AN_Read_length("length", column); } } return [{ name: 'csv', width: width, height: height, alpha: 1, visible: true , indexes: [] , tileMargin: 0, tileSpacing: 0, data: output} ] ; } , parseTiledJSON: function (json){ var layers = [] ; for (var i = 0; i < _AN_Read_length('length', json.layers); i++ ){ if (!json.layers[i].data) { continue ; } var layer = { name: json.layers[i].name, width: json.layers[i].width, height: json.layers[i].height, alpha: json.layers[i].opacity, visible: json.layers[i].visible, indexes: [] , tileMargin: json.tilesets[0].margin, tileSpacing: json.tilesets[0].spacing} ; var output = [] ; var c = 0; var row; for (var t = 0; t < _AN_Read_length('length', json.layers[i].data); t++ ){ if (c == 0) { row = [] ; } row.push(json.layers[i].data[t]); c++ ; if (c == json.layers[i].width) { output.push(row); c = 0; } } layer.data = output; layers.push(layer); } return layers; } } ;