summaryrefslogtreecommitdiff
path: root/client/tmxloader.js
diff options
context:
space:
mode:
authorjak1 <mike.wollmann@gmail.com>2021-07-24 17:15:23 +0200
committerjak1 <mike.wollmann@gmail.com>2021-07-24 17:16:14 +0200
commit5d3bd05c028f9742c93469964e9a99d7c29c0153 (patch)
treee05c56313fedb7c1e83c36aeb027411f1e724883 /client/tmxloader.js
parent0c709f34841bf4a7882c68e899e17c77bbc2e0aa (diff)
downloadthepixelworld-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.js69
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