diff options
author | jak1 <mike.wollmann@gmail.com> | 2021-07-24 17:15:23 +0200 |
---|---|---|
committer | jak1 <mike.wollmann@gmail.com> | 2021-07-24 17:16:14 +0200 |
commit | 5d3bd05c028f9742c93469964e9a99d7c29c0153 (patch) | |
tree | e05c56313fedb7c1e83c36aeb027411f1e724883 /client/tmxloader.js | |
parent | 0c709f34841bf4a7882c68e899e17c77bbc2e0aa (diff) | |
download | thepixelworld-5d3bd05c028f9742c93469964e9a99d7c29c0153.tar.gz thepixelworld-5d3bd05c028f9742c93469964e9a99d7c29c0153.tar.bz2 thepixelworld-5d3bd05c028f9742c93469964e9a99d7c29c0153.tar.xz thepixelworld-5d3bd05c028f9742c93469964e9a99d7c29c0153.zip |
added basic map drawing
added tmxloader [wip]
added disconnect listener
Diffstat (limited to 'client/tmxloader.js')
-rw-r--r-- | client/tmxloader.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/client/tmxloader.js b/client/tmxloader.js new file mode 100644 index 0000000..7753d20 --- /dev/null +++ b/client/tmxloader.js @@ -0,0 +1,69 @@ +var TMXLoader = function(mapName){ + var self = {}; + + self.mapName = mapName; + self.width = 0; + self.height = 0; + self.tileset = { + firstGID: 0, + isTsx: false, + source: "", + tileWidth: 0, + tileHeight: 0, + tileCount: 0, + width: 0, + height: 0, + }; + self.tilesets = []; + + self.layer = { + id: 0, + name: 0, + tiles: "", + }; + + self.layers = []; + + self.xml = new XMLHttpRequest(); + self.parser = new DOMParser(); + + self.xml.open('GET', "/client/assets/maps/" + mapName + ".tmx"); + self.xml.onload = function(){ + dom = self.parser.parseFromString(self.xml.response, "text/xml"); + + self.width = dom.documentElement.getAttribute('width'); + self.height = dom.documentElement.getAttribute('height'); + + // tilesets + for (var i=0; i < dom.documentElement.getElementsByTagName('tileset').length; i++){ + var tileset = {}; + tileset.firstGID = dom.documentElement.getElementsByTagName('tileset').item(i).getAttribute('firstgid'); + tileset.tileWidth = dom.documentElement.getElementsByTagName('tileset').item(i).getAttribute('tilewidth'); + tileset.tileHeight = dom.documentElement.getElementsByTagName('tileset').item(i).getAttribute('tileheight'); + tileset.tileCount = dom.documentElement.getElementsByTagName('tileset').item(i).getAttribute('tilecount'); + if(dom.documentElement.getElementsByTagName('tileset').item(i).hasAttribute('source')){ + tileset.source = dom.documentElement.getElementsByTagName('tileset').item(i).getAttribute('source'); + tileset.isTsx=true; + } + else{ + tileset.source = dom.documentElement.getElementsByTagName('tileset').item(i).getElementsByTagName('image')[0].getAttribute('source'); + tileset.width = dom.documentElement.getElementsByTagName('tileset').item(i).getElementsByTagName('image')[0].getAttribute('width'); + tileset.height = dom.documentElement.getElementsByTagName('tileset').item(i).getElementsByTagName('image')[0].getAttribute('height'); + } + self.tilesets[i] = tileset; + } + + // layers + for (var i=0; i < dom.documentElement.getElementsByTagName('layer').length; i++){ + var layer = {}; + layer.name = dom.documentElement.getElementsByTagName('layer').item(i).getAttribute('name'); + layer.tiles = dom.documentElement.getElementsByTagName('layer').item(i).getElementsByTagName('data')[0].innerHTML; + layer.id = dom.documentElement.getElementsByTagName('layer').item(i).getAttribute('id'); + self.layers[i] = layer; + console.log(layer.name); + } + } + + self.xml.send(); + return self; +}
\ No newline at end of file |