Skip to content

ThatOneBro/tmx-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tmx parser

Tiled Map Editor map parser made to work in node.js or browserify.

Usage

var tmx = require('tmx-parser');

// if you have a string (pathToFile is for resolving tilesets if necessary)
tmx.parse(xmlString, pathToFile, function(err, map) {
  if (err) throw err;
  console.log(map);
});

// if you have a file
tmx.parseFile(filename, function(err, map) {
  if (err) throw err;
  console.log(map);
});

The second example in that list uses tmx.readFile(filename, callback) and then calls tmx.parse(...) on the results.

Documentation

A parsed map looks something like this:

{ version: '1.0',
  orientation: 'orthogonal',
  width: 200,
  height: 100,
  tileWidth: 16,
  tileHeight: 16,
  backgroundColor: undefined,
  layers: 
   [ { map: [Object],
       type: 'tile',
       name: 'Tiles',
       opacity: 1,
       visible: true,
       properties: {},
       tiles: [Object],
       horizontalFlips: [Object],
       verticalFlips: [Object],
       diagonalFlips: [Object] },
     { map: [Object],
       type: 'tile',
       name: 'Ladders',
       opacity: 1,
       visible: true,
       properties: {},
       tiles: [Object],
       horizontalFlips: [Object],
       verticalFlips: [Object],
       diagonalFlips: [Object] },
     { type: 'object',
       name: 'Objects',
       color: undefined,
       opacity: 1,
       visible: true,
       properties: {},
       objects: [Object] },
     { type: 'object',
       name: 'PlayerLayer',
       color: undefined,
       opacity: 1,
       visible: true,
       properties: {},
       objects: [] } ],
  properties: 
   { bg_art: 'background.png',
     bg_music: 'music/silly.mp3',
     fg_art: 'hill.png' },
  tileSets: 
   [ { firstGid: 1,
       source: 'tiles.tsx',
       name: 'default',
       tileWidth: 16,
       tileHeight: 16,
       spacing: null,
       margin: null,
       tileOffset: [Object],
       properties: {},
       image: [Object],
       tiles: [Object],
       terrainTypes: [] } ] }

The objects array looks like this:

{ type: 'object',
  name: 'Objects',
  color: undefined,
  opacity: 1,
  visible: true,
  properties: {},
  objects: 
   [ { name: undefined,
       type: 'Decoration',
       x: 0,
       y: 640,
       width: 224,
       height: 240,
       rotation: 0,
       properties: [Object],
       gid: null,
       visible: true,
       ellipse: false,
       polygon: null,
       polyline: null },
     { name: 'movement text',
       type: 'Text',
       x: 240,
       y: 640,
       width: 336,
       height: 80,
       rotation: 0,
       properties: [Object],
       gid: null,
       visible: true,
       ellipse: false,
       polygon: null,
       polyline: null },
     { name: 'victory',
       type: 'Victory',
       x: 2976,
       y: 880,
       width: 224,
       height: 96,
       rotation: 0,
       properties: {},
       gid: null,
       visible: true,
       ellipse: false,
       polygon: null,
       polyline: null } ] }

TileLayer objects have a tileAt(x, y) method. Otherwise you can access layer.tiles in row-major order.

See the bottom of index.js for more information.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors