{"id":19373502,"url":"https://github.com/dvergar/pyxeledit-map-importer","last_synced_at":"2026-02-28T07:35:45.856Z","repository":{"id":10850562,"uuid":"13132579","full_name":"Dvergar/PyxelEdit-Map-Importer","owner":"Dvergar","description":"Parser for maps generated by the editor PyxelEdit","archived":false,"fork":false,"pushed_at":"2019-11-17T20:54:42.000Z","size":46,"stargazers_count":34,"open_issues_count":1,"forks_count":2,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-01-07T02:01:23.678Z","etag":null,"topics":["haxe","importer","pyxel","tile","tilemap"],"latest_commit_sha":null,"homepage":"","language":"Haxe","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dvergar.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-09-26T19:46:24.000Z","updated_at":"2024-09-24T18:38:46.000Z","dependencies_parsed_at":"2022-09-02T22:10:27.308Z","dependency_job_id":null,"html_url":"https://github.com/Dvergar/PyxelEdit-Map-Importer","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dvergar%2FPyxelEdit-Map-Importer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dvergar%2FPyxelEdit-Map-Importer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dvergar%2FPyxelEdit-Map-Importer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dvergar%2FPyxelEdit-Map-Importer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dvergar","download_url":"https://codeload.github.com/Dvergar/PyxelEdit-Map-Importer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240501240,"owners_count":19811573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["haxe","importer","pyxel","tile","tilemap"],"created_at":"2024-11-10T08:29:04.699Z","updated_at":"2026-02-28T07:35:45.808Z","avatar_url":"https://github.com/Dvergar.png","language":"Haxe","funding_links":[],"categories":[],"sub_categories":[],"readme":"PyxelEdit-Map-Importer\n======================\n\n___Available via [haxelib](http://lib.haxe.org/p/pmi/)___\n\n**Pyxel Edit** map parser for haxe. With **OpenFL, Heaps and Luxe helpers**.\n\n![Pyxel Edit + flash version](http://i.imgur.com/SSux3u6.png)\n\n# Usage\n\n* Export your map *File \u003e Export tilemap as XML...*\n* Export your tileset *File \u003e Export tileset...*\n\nMake use of the PyxelEdit-Map-Importer tools with `import pmi.PyxelMapImporter`\n\n## Loading the map\nAssuming you're not necessarily using any graphical framework (server for example) :\n\n`var pyxelMap = new PyxelMapImporter(sys.io.File.getContent(\"map.xml\"));` will load the xml pyxel map. The argument is the xml content as `String`.\n\n## Extracting layer datas\n![Pyxel Edit layer view](http://i.imgur.com/ZLklAAP.png)\n\n`var background = pyxelMap.getDatasFromLayer(\"background\");`\n\n* `\"background\"` is the name of the layer in PyxelEdit.\n* `background` (the variable) is an object of type `Layer`.\n\n`Layer.tiles` is an `Array\u003cTile\u003e` where you can access fields : `x`, `y`, `index`,`rot` \u0026 `flipX` as it is in the XML, those datas are exposed in an cleaner way than the XML file and let you use some of the parameters i'm not using in the other methods.\n\n## Make those layers a tile array\n`var backgroundArray = pyxelMap.getLayerArray(background)` will return an map array of type `Array\u003cArray\u003cInt\u003e\u003e` allowing you to check the tile ID with `backgroundArray[x][y]`.\n\nYou can also use it to get a collision map. If, for example, you name a PyxelEdit layer \"collision\" and dedicate a red tile for collisions, you can then extract that layer and check if there is a collision with a simple `collisionArray[x][y]`.\n\n## IDs assignation\nIDs are assigned in order of appearance in your Pyxel Edit tileset window :\n\n![Tileset IDs](http://i.imgur.com/XGdo6w7.png)\n\nSo let's say your collision red tile is at the rank 5, to check a collision you'll have to check if `collisionArray[x][y] == 5`: This is not a 0/1 collision map.\n\n`-1` refers to \"no tile\".\n\n## Example\n```Haxe\nimport pmi.PyxelMapImporter;\n\nclass Main\n{\n    public function new()\n    {\n        var pyxelMap = new PyxelMapImporter(sys.io.File.getContent(\"map.xml\"));\n        var background = pyxelMap.getDatasFromLayer(\"background\");\n        var backgroundArray = pyxelMap.getLayerArray(background);\n    }\n}\n```\n\n# OpenFL helper\n\nYou can make use of `pmi.OpenflHelper` to get a tilesheet object and a tile array easily.\n\n* `var tileset = OpenflHelper.getTileset(\"assets/tileset.png\");` will return a `Tileset` object.\n* `var tilemapBackground = OpenflHelper.getTilemap(background, tileset);` will return a `Tilemap` object.\n\nand that's all you need.\n\n_**Note** that to load an openFL asset (the pyxel xml map) you would need `new PyxelMapImporter(Assets.getText(\"assets/map.xml\"));` here._\n\n## Example\n\nIt will load three different layers and will draw them on screen.\n\n```Haxe\nimport openfl.display.Sprite;\nimport openfl.Assets;\nimport openfl.display.Tilesheet;\n\nimport pmi.PyxelMapImporter;\nimport pmi.OpenflHelper;\n\n\nclass Main extends Sprite\n{\n    public function new ()\n    {\n        super();\n        var pyxelMap = new PyxelMapImporter(Assets.getText(\"assets/map.xml\"));\n        var background = pyxelMap.getDatasFromLayer(\"background\");\n        var walls = pyxelMap.getDatasFromLayer(\"walls\");\n        var objects = pyxelMap.getDatasFromLayer(\"objects\");\n\n        var tileset = OpenflHelper.getTileset(\"assets/tileset.png\");\n\n        var tilemapBackground = OpenflHelper.getTilemap(background, tileset);\n        var tilemapWalls = OpenflHelper.getTilemap(walls, tileset);\n        var tilemapObjects = OpenflHelper.getTilemap(objects, tileset);\n\n        addChild(tilemapBackground);\n        addChild(tilemapWalls);\n        addChild(tilemapObjects);\n    }\n}\n```\n\n# Luxe helper\n\nYou can make use of `pmi.LuxeHelper` to get a `Tilemap` object and and fill the tilelayers easily.\n\n* `var tilemap = LuxeHelper.getTilemap('assets/tileset.png');` will return a `Tilemap` object.\n* `LuxeHelper.fillLayer(tilemap, background);` will add the appropriate tilelayer to the tilemap.\n\nand that's all you need.\n\n_**Note** that to load a luxe asset (the pyxel xml map) you would need `new PyxelMapImporter(Luxe.loadText(\"assets/map.xml\", null, false).text);` here._\n\n## Example\n\nIt will load three different layers and draw them on screen.\n\n```Haxe\nimport pmi.PyxelMapImporter;\nimport pmi.LuxeHelper;\n\n\nclass Main extends luxe.Game\n{\n    override function ready()\n    {\n        var pyxelMap = new PyxelMapImporter(Luxe.loadText(\"assets/map.xml\", null, false).text);\n        var tilemap = LuxeHelper.getTilemap('assets/tileset.png');\n        var background = pyxelMap.getDatasFromLayer(\"background\");\n        var walls = pyxelMap.getDatasFromLayer(\"walls\");\n        var objects = pyxelMap.getDatasFromLayer(\"objects\");\n\n        LuxeHelper.fillLayer(tilemap, background);\n        LuxeHelper.fillLayer(tilemap, walls);\n        LuxeHelper.fillLayer(tilemap, objects);\n\n        tilemap.display({});\n    }\n}\n```\n\n# Heaps helper\n\nYou can make use of `pmi.HeapsHelper` to get a `TileSet` and `TileGroup` object.\n\n* `var tileSet = HeapsHelper.getTileSet(\"tileset.png\");` will return a `TileSet` object.\n* `var backgroundTileGroup = HeapsHelper.getTileGroup(background, tileSet);` will return a `TileGroup` object.\n\nand that's all you need.\n\n_**Note** that to load a heaps asset (the pyxel xml map) you would need `new PyxelMapImporter(hxd.Res.loader.load(\"map.xml\").toText());` here._\n\n## Example\n\nIt will load three different layers and draw them on screen.\n\n```Haxe\nimport pmi.PyxelMapImporter;\nimport pmi.HeapsHelper;\n\n\nclass Main extends hxd.App\n{\n    override function init()\n    {\n\n        var pyxelMap = new PyxelMapImporter(hxd.Res.loader.load(\"map.xml\").toText());\n        var tileSet = HeapsHelper.getTileSet(\"tileset.png\");\n\n        var background = pyxelMap.getDatasFromLayer(\"background\");\n        var walls = pyxelMap.getDatasFromLayer(\"walls\");\n        var objects = pyxelMap.getDatasFromLayer(\"objects\");\n\n        var backgroundTileGroup = HeapsHelper.getTileGroup(background, tileSet);\n        var wallsTileGroup = HeapsHelper.getTileGroup(walls, tileSet);\n        var objectsTileGroup = HeapsHelper.getTileGroup(objects, tileSet);\n\n        s2d.addChild(backgroundTileGroup);\n        s2d.addChild(wallsTileGroup);\n        s2d.addChild(objectsTileGroup);\n    }\n\n    public static function main()\n    {\n        hxd.Res.initEmbed();\n        new Main();\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvergar%2Fpyxeledit-map-importer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdvergar%2Fpyxeledit-map-importer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvergar%2Fpyxeledit-map-importer/lists"}