summaryrefslogtreecommitdiff
path: root/tiled
diff options
context:
space:
mode:
Diffstat (limited to 'tiled')
-rw-r--r--tiled/atlas.pngbin0 -> 10939 bytes
-rw-r--r--tiled/eventset.pngbin0 -> 548 bytes
-rw-r--r--tiled/map1.tmx69
-rw-r--r--tiled/map2.tmx83
-rw-r--r--tiled/map3.tmx74
-rw-r--r--tiled/map4.tmx105
-rw-r--r--tiled/map5.tmx110
-rw-r--r--tiled/map6.tmx120
-rw-r--r--tiled/signs.pngbin0 -> 348 bytes
-rw-r--r--tiled/signs_OLD.pngbin0 -> 271 bytes
-rw-r--r--tiled/tiled.lua244
-rw-r--r--tiled/tileset.pngbin0 -> 6340 bytes
12 files changed, 805 insertions, 0 deletions
diff --git a/tiled/atlas.png b/tiled/atlas.png
new file mode 100644
index 0000000..e32d664
--- /dev/null
+++ b/tiled/atlas.png
Binary files differ
diff --git a/tiled/eventset.png b/tiled/eventset.png
new file mode 100644
index 0000000..929c3da
--- /dev/null
+++ b/tiled/eventset.png
Binary files differ
diff --git a/tiled/map1.tmx b/tiled/map1.tmx
new file mode 100644
index 0000000..376c292
--- /dev/null
+++ b/tiled/map1.tmx
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<map version="1.0" orientation="orthogonal" renderorder="right-down" width="70" height="40" tilewidth="16" tileheight="16" nextobjectid="1">
+ <tileset firstgid="1" name="eventset" tilewidth="16" tileheight="16" tilecount="16" columns="4">
+ <image source="eventset.png" width="64" height="64"/>
+ <tile id="1">
+ <properties>
+ <property name="portal" value="1"/>
+ <property name="target" value="2-1"/>
+ </properties>
+ </tile>
+ <tile id="2">
+ <properties>
+ <property name="start" value="player2"/>
+ </properties>
+ </tile>
+ <tile id="3">
+ <properties>
+ <property name="floor" value="true"/>
+ </properties>
+ </tile>
+ <tile id="4">
+ <properties>
+ <property name="lowest" value="true"/>
+ </properties>
+ </tile>
+ <tile id="5">
+ <properties>
+ <property name="id" value="3"/>
+ <property name="portal" value="true"/>
+ </properties>
+ </tile>
+ <tile id="7">
+ <properties>
+ <property name="block" value="true"/>
+ </properties>
+ </tile>
+ </tileset>
+ <tileset firstgid="17" name="atlas" tilewidth="16" tileheight="16" tilecount="1024" columns="32">
+ <image source="atlas.png" width="512" height="512"/>
+ </tileset>
+ <tileset firstgid="1041" name="signs" tilewidth="16" tileheight="16" tilecount="4" columns="4">
+ <image source="signs.png" width="64" height="16"/>
+ </tileset>
+ <layer name="bg" width="70" height="40">
+ <data encoding="base64" compression="zlib">
+ eJztzkVylGEYhdE/BPdi3nHreDEnuOsGsAT3DQQI7rABXINvAHdnAzjBbQPImbGFrq/eqnumT91clmUllFJGORVUUkU1NdRSR556GmikiWZaaCWXSG8UbYxmDGMZx3gmMJFJTGYKU5nGdGYwk1nMZk5CvbnMYz4LWEg7HSxiMUtYyjKWs4KVrGI1a1jLuoR6naxnAxvpYhOb2cJWtrGdHexkF7vZw172sZ8DCfUOcojDHOEoxzjOCU5yitOcoZuznOM8F7jIJS4n1LvCVa5xnRvc5Ba3ucNd7nGfBzzkEY95wlOe8Tyh3gte8orXvOEt73hPDx/4yCc+84WvfOM7P/jJr4R6v/nDX7IioxfF9KYPfelHfwYwkEEMZghDGcbwonR6OUoopYxyKqikimpqqKWOPPU00EgTzbTQmlAvH0IIIRtRAB8K0cgC+BBCCCGEEEIIIYQQQgghhBBC+O8fgFh8kg==
+ </data>
+ </layer>
+ <layer name="trees" width="70" height="40">
+ <data encoding="base64" compression="zlib">
+ eJzt0MkNwlAQRMGRHQVkAmmy5gHGzoM1HDoBFokT+lXSu/VlpgoAAH6z6qrWadN93m6z2aX9F9t/d8iNxzSkWV81719vT9mMaWrgL+fceEnXtMhPlm/+csvmnh4N/AUAAAAAAACAdjwBV0ANmg==
+ </data>
+ </layer>
+ <layer name="main" width="70" height="40">
+ <data encoding="base64" compression="zlib">
+ eJzt0DEKwjAYhuE/R6i2k6cQwcGeQkc9hrviGTyKJ9H2IrWDQxc/sdAQdHBJJbwPvCQpHZLfDAAAAADi2Duzq33upipVf9l3Y1w4krPm0mi9q1YddD4G3xobzic3fJ+5kS4dwUVvK1Sm5n15f371sPeae+eJ1qkqE55L5c1j4e3DlsF/q8Tn0upt6x/bqK3aJTwXAAAAAAAAAAAA/Kcn5RgnOg==
+ </data>
+ </layer>
+ <layer name="signs" width="70" height="40">
+ <data encoding="base64" compression="zlib">
+ eJztybEJADAIADAHH7D/H9sPdBOEZE0EAADAvsr+3/AAAAAAAAAAcNUHZv8ALA==
+ </data>
+ </layer>
+ <layer name="events" width="70" height="40">
+ <data encoding="base64" compression="zlib">
+ eJzt0MEJACAQA8FDtP+WbcCXDy/IDOQftgoAAHhpdB8g0rzc73Q50wUA8q3uAwAAAABAtA3ReQCw
+ </data>
+ </layer>
+</map>
diff --git a/tiled/map2.tmx b/tiled/map2.tmx
new file mode 100644
index 0000000..0fba89a
--- /dev/null
+++ b/tiled/map2.tmx
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<map version="1.0" orientation="orthogonal" renderorder="right-down" width="70" height="45" tilewidth="16" tileheight="16" nextobjectid="1">
+ <tileset firstgid="1" name="atlas" tilewidth="16" tileheight="16" tilecount="1024" columns="32">
+ <image source="atlas.png" width="512" height="512"/>
+ </tileset>
+ <tileset firstgid="1025" name="eventset" tilewidth="16" tileheight="16" tilecount="16" columns="4">
+ <image source="eventset.png" width="64" height="64"/>
+ <tile id="1">
+ <properties>
+ <property name="portal" value="1"/>
+ <property name="target" value="1-1"/>
+ </properties>
+ </tile>
+ <tile id="2">
+ <properties>
+ <property name="portal" value="2"/>
+ <property name="target" value="3-1"/>
+ </properties>
+ </tile>
+ <tile id="3">
+ <properties>
+ <property name="floor" value="true"/>
+ </properties>
+ </tile>
+ <tile id="4">
+ <properties>
+ <property name="lowest" value="true"/>
+ </properties>
+ </tile>
+ <tile id="5">
+ <properties>
+ <property name="portal" value="true"/>
+ </properties>
+ </tile>
+ <tile id="7">
+ <properties>
+ <property name="block" value="true"/>
+ </properties>
+ </tile>
+ <tile id="12">
+ <properties>
+ <property name="checkpoint" value="true"/>
+ </properties>
+ </tile>
+ </tileset>
+ <tileset firstgid="1041" name="signs" tilewidth="16" tileheight="16" tilecount="4" columns="4">
+ <image source="signs.png" width="64" height="16"/>
+ </tileset>
+ <layer name="bg" width="70" height="45">
+ <data encoding="base64" compression="zlib">
+ eJzt1XdSU1EUx/GXBSSUAAkQygbsBQuoG7Bhw+4GbNiwoG7A3rsbsKCIvWzAhiA21A3YRaWp3wxk5s0Vk5ec6/Aczp35/PfOL+eeeS8n5DhOFrKRg1yEkYd8FCCCKApRhGLEUIJSlKEcQYQEedJ6sx/JGY4RGIlRGI0xGItxGI8KTMBETMJkVKIKUzAV0zBMmCetN/uRnBmYiVmYjWrMwVzMw3wsQA0WYhEWYwmWYhmWYwWmC/Ok9WY/krMKq7EGa1GLdViPDdiITajDZmzBVmxDPbZjB3ZipTBPWm/2Izm7sQd7sQ/7cQAHcQiHcQRHcQzHcQIncQqncQZnsUuYJ603+5Gc87iAi2jAJVxGI66gCVdxDddxAzdxC7dxB3dxD+eEedJ6sx/JeYCHeITHaMYTtKAVT9GGZ3iOF3iJV2jHa7zBW9wX5knrzX4ke+09PuAjPuEzvuArOvAN3/EDnehCN3rQi5/4FR9wwHHeCfOk9WY/kr0Woj6cpmLEUIJSlKEcwUBfXhaykYPc/po85CfJjHmsL0AEURSiKEk/kr2W7kz+F9K9Ntj9/yvSvTbY/dtkay/G95r7e7TRW4ulWTc7f+a1Jcm2uRfb++eS4LXnVHvD/WyqveHl9/62hwZ61sZe7DXmEnTlJ9sHqfZGOJDe3rC9h2zlJXidc9cQYL4vXuYcr3PP2UYffsvLZC4RS737WSbfkfl/ZYPf8jJ9XxLvqa17+C3PPZdoBmzew0950rnYuovf8kIBpZRSSimllFJKKaWUUkqpoek3zxlDIw==
+ </data>
+ </layer>
+ <layer name="plants" width="70" height="45">
+ <data encoding="base64" compression="zlib">
+ eJzt17kNwkAQheGRnQBtcNMVdMJVCFcAVMEVAE3xEgcIJ6yNvIz/T3rhSjtPWmnHDAAAAACA740Ts0lS9S3iM1UnM3r5sFIn64K9zHV+oSwd9XvSLOeC82x0fqvsHPVShov6uCo3ekHkGqlZU2mlVd8kLgP1MVRG9AIAqBmPe08Z2Hvy1XHv2WvWg3J0PHM/4A98Vx8P5RlRL6F7Tsj8/yTbc7zPiXfs/fmy99BWOkpX6dETAAAAfugFJZkXWQ==
+ </data>
+ </layer>
+ <layer name="treetrunks" width="70" height="45">
+ <data encoding="base64" compression="zlib">
+ eJzt2MkNwjAQBVCTnFi64MAS2gAhUQV0AgfWKuDAWgUgsZYRCuEfyIEoRCEkdoz/k+aI8HxbY4MQRERERERERJQFFVuIqq16FfLl0XMBVUSVDOz/kxqyqKMcVIO50B8ZWkKMUGNL9UqyZYk8Vqi1Qbl48z/MCXmcURcNc2nm4n3Om/8mmmCfp6iZhvudpg3y2KJ2zOXNFXncUHfmYqQod4iJTL5D4nBi3tVxyXgHlyXufxd99BLoRYd38DdnpY8+Bgn0ovM7OMgcfSx8vXiz3OTZtUcmB18uWcqDv9+D6TC3VFAxt1qS7/IwR0Vraav52sjcVy5p5+P/D6aTobMRxg1Y5+PHtct+4+pClzNBRETpewJlgiX+
+ </data>
+ </layer>
+ <layer name="main" width="70" height="45">
+ <data encoding="base64" compression="zlib">
+ eJztWFluE0EUnA6OYwchzgAhzsItICuERVwhiEVivwIICHxAuEJI2MRyBXASNgG5QuI4bBJnoErTT/Pc9NgxHiWTqEsq9awev+pXr99MFAUEBAQEBAQEBAQEBAQEBGSFiy3Om5R7boN3wLvgDHgPvJ/ye3Iu75g2cUwzLa5jjKKL1mceXACfgE/BZ+Bz8EWT32p2Li+4aeJ4foJv2+Q7cAlcBt+DH8CP4Cfwc5NnuvmVR8xBFwOuYnstSsZak/2aOl4HN8Dv4I8o1vdXC+r8WsGzX4GvwTc+o24TqvgvB8AesGQ1Kln2pezvsWOX3S6CA/YaatZrYq5G/pHsBr/ZY+tRvL2SI23mrC6MuaJGOebb7/Ocpy6D4JDVmBxWdPe7LY3aFm3ykDuiy2AH1LpUFIdTxorSwqX4k/qcaVObbrAI9oAlsNyBLjU8e6JDjoHjdnsSPLYJVlN0MTYHr4M3rC5TJqnzVXAR/O2JpR+sgAPgIDjUgS7bBc7HUXAEHPVoOws+Mo19gNR/+m2vJ5dGwTFwHJwAJ7csmq0FNdF9AOt80frxcIrHzoHnwQtR6z41T2DvIp7Q3uD6Ld5gr3nWNGpStJqUbA1P02UngvGKJ1Yd9ipvsNe8ZWLfsDcSTcjd5g/miWjCWKX/kVF7g2vkY9Ooh2iyG0AtxCfURDyh13jRRXujapJaIv3kbtFE1hFqQZ+wp3U1cdei41YXrlXrYB3csOu6nMsT5D1P18m0mklMOzUzrRfcybVzyiTzznfEayYmc2DN7uuaSUjdZB1J65GzyIGXpvV7ucwpe0HOYTt9MGM/YRr7SXnOJRy/bGPkO2IBXLaePwT2e/oJ1of9XfE1vjpSyChXvuA3vprku48vr6XWy3y20wdL7FdN3E+yFvB7Ab2hva49r3tVd+7lHjk/4tSSZrkisUke6LkSv0p/sw/a/zHJ9w3Ja+mLJb/pZfq23T6Y6+KS4oJJvlX53kOyhmhBDRhb2XqTcUmMnCvxq/iUxxkz1yy5TnK4YMeKXcseYHzYpnc5v3yvYO5rfUQbt65mBeqhc71s45XvOgVnW/xKny6q2GXsz0ALF6KN1oXzUDaN3zl1XpObqXmnbf06CZ4y8T5H7X2pXz4dGNus8p/49Ijxv3t2qoVPG3mGq4+sQTUbh3jX5zfxv8R9xd6vPSF1sGh1qHhiHMs4vixQt/9RtJk3ic9kPvm9pM+kr9OSBxwPmsY1TPoXrcNOQt3571Xz7/c2d52W95uCk3dLKify2sP+L+g1V6tx41+nfdcFBAQEBAQI/gKKMkyD
+ </data>
+ </layer>
+ <layer name="signs" width="70" height="45">
+ <data encoding="base64" compression="zlib">
+ eJzt1sEJACAMBME80oBi/7WmASE/hTBTwb2OjQAAAACAuU7+XgDQ274KAGC8F823dCUAAABcFc8tAFo=
+ </data>
+ </layer>
+ <layer name="events" width="70" height="45">
+ <properties>
+ <property name="portal" value="2"/>
+ <property name="target" value="3-1"/>
+ </properties>
+ <data encoding="base64" compression="zlib">
+ eJzt1k0OAiEMhmFUXHosvYm38e/IkqjJ7CwDtNPyPkkTF0bSbzrFlAAAAAAAAHQdsvy7OX8qktZ+fplEzKVX1Z65ZT1z0chUi3UekmxOBrlZZ+FhdjScS11S/2y853stdduldC/1KPUs9fp+XtaS535H8T4HI8y0f/71OuNOlvRLJvJcopnt2UvMsCdqe7TOZK9wxpr/7Vq5SH6v5XyvMz76LtvS+996l/fuwzKb2h6195f2nvR2X/WaU81517S2p2g5SLTkAsDGMcD7F6EHQOINSDISEA==
+ </data>
+ </layer>
+</map>
diff --git a/tiled/map3.tmx b/tiled/map3.tmx
new file mode 100644
index 0000000..991b7b1
--- /dev/null
+++ b/tiled/map3.tmx
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<map version="1.0" orientation="orthogonal" renderorder="right-down" width="100" height="50" tilewidth="16" tileheight="16" nextobjectid="1">
+ <tileset firstgid="1" name="atlas" tilewidth="16" tileheight="16" tilecount="1024" columns="32">
+ <image source="atlas.png" width="512" height="512"/>
+ </tileset>
+ <tileset firstgid="1025" name="eventset" tilewidth="16" tileheight="16" tilecount="16" columns="4">
+ <image source="eventset.png" width="64" height="64"/>
+ <tile id="1">
+ <properties>
+ <property name="portal" value="1"/>
+ <property name="target" value="2-2"/>
+ </properties>
+ </tile>
+ <tile id="2">
+ <properties>
+ <property name="portal" value="2"/>
+ <property name="target" value="4-1"/>
+ </properties>
+ </tile>
+ <tile id="3">
+ <properties>
+ <property name="floor" value="true"/>
+ </properties>
+ </tile>
+ <tile id="4">
+ <properties>
+ <property name="lowest" value="true"/>
+ </properties>
+ </tile>
+ <tile id="5">
+ <properties>
+ <property name="portal" value="true"/>
+ </properties>
+ </tile>
+ <tile id="7">
+ <properties>
+ <property name="block" value="true"/>
+ </properties>
+ </tile>
+ <tile id="12">
+ <properties>
+ <property name="checkpoint" value="true"/>
+ </properties>
+ </tile>
+ </tileset>
+ <tileset firstgid="1041" name="signs" tilewidth="16" tileheight="16" tilecount="4" columns="4">
+ <image source="signs.png" width="64" height="16"/>
+ </tileset>
+ <layer name="bg" width="100" height="50">
+ <data encoding="base64" compression="zlib">
+ eJzt2XVuG0EYxuH1AYJOYoecXKDM3AuUmXuBpsx4gTJzL1Bm7gXKzL1ACimn+IuykarKY83OzG6n0ffHo0gTz/vO5svG8iYdBEEFKlGFDLKoRg1qUYd65NCARhShGCUoRRnKkS6w7rpHJ892v+l5THt7oTf6oC/6oT8GYCAGYTCGYCiGYTi6oCu6oTt6oGeYp1p33aOTZ7vf9DymveMwHhMwEZMwGVMwFdMwHTMwE7MwGyMwEqMwGmMwNsxTrbvu0cmz3W96HtPehViExViCpViG5ViBlViF1ViDtViHOWjCXMzDfCwI81Trrnt08mz3m57HtHcrtmE7dmAndmE39mAv9mE/DuAgDmE9NmAjNmEztoR5qnXXPTp5tvtNz2PaexKncBpncBbncB4XcBGXcBlXcBXXcBhHcBTHcBwnwjzVuusenTyd/W9iOI/pue/iHu7jAR7iER7jCZ7iGZ7jBV7iFa7jBm7iFm7jTpinWnfdo5Nnu9/0PKa97/EBH/EJn/EFX9GKb/iOH/iJXwhSQdDMl9dB++/WW7xDS5inWnfdo5Nnu9/0PKa9aToqUIkqZJBFNWpQizrUI4cGNKIIxShBKcpQnmrPU6277tHJs91veh7T3uZACKHSIoQQQgghRCdm+5k/l+cZQi6Vf911j6tnFXFmR33+YvuZP5fndTnFuuseV88q4syO+vyl0IxbNbi4P0x7bPKSyo6q0Izbvv/njFXXYnt/mPbY5CWV7XIeGcNriToP0x6bvKSyo4rynqR7r0f9e2XaY5OXVLbr+6Pj3oz7/jDpsclLKjuqbEpPoWv5+7Ud89DNNu2xyUsqO655qPpdzyNKj6ufW5zZUbXdo0IIIYQQQnRWrv+f8q+v538n8/CLzMMvMg+/yDz8IvPwi8zDLzIPv8g8/CLz8IvMwy8yD7/IPPwi8/CLzMMvMg+//Ab3FJwp
+ </data>
+ </layer>
+ <layer name="trees" width="100" height="50">
+ <data encoding="base64" compression="zlib">
+ eJztlmtu00AURscJQQQk9hAglRoEiyBNeFRQttBKDfCDQpfAo5TAKoDSJCAoW8ijCQ/x2AJtCaJIsAWOlUSZUDsQJNc2+o50ZOvaM76eO7auMUIIIYQQQgghhBBCCCGEEEIIIYQQIq68cIx5iRv4ygk7m+AoJYy5glcTYWcynvfU4AN+xFo/ViPnZ/j8L3Kf556FiL+jyz1yXMX7HrmWiT3AhyG+xx2efRdXcI1a/MRPWOfaG2Jv8R2W/zDPLe65HYN6rJNjBaseuU6y/4LiiVsHfIo/qMMhXMIbeBOXsWqG34wfjxj/OAb1aJNjB1975GrvvyBI4UHT2+sNvMTazuFlZ3je5Nkt3MSjmHX2msNv1jxNbOFFa546Yxu4S/x7MK8Te7I4hZ9xy4zue/fcjbvnXzieYi1P+9TDNd0f547f5v4dvP7bt1QhdpjjkRD7Afv/GzUKWESH9UlgEg9gCrvGf+399JrHvt4xvW/pZIj1sP+/UWMRS5hhfY7hcTzRX7tBLDNhTcb51YRfD/v/GzXaZnTPnsE8zmABi3gWz+F5vOATt8cMzvM+c7lzzIZYj0nY7x692z/GaY32k6B79GvBTR170kl6jeRoLC49+v/INLXIYdaqyaBHF0IIQY8adgJiBPW1QgghhBBCCCGEEEL8G78A/dZihQ==
+ </data>
+ </layer>
+ <layer name="main" width="100" height="50">
+ <data encoding="base64" compression="zlib">
+ eJztmGlOFEEYhqtQNo3eAZUBNXoIERjcUK/gSqKIXgHccPcKgEuM2xGUAX8YtyPggEaN2w18v3RVpqboRpjunm5m3id50j3f9NR0V1XX8ilFCCGEEEIIIYQQQgghhBBCVksrbIPtsAN21hgnydANC7AH9sKdNcZJfDTshwNwEBbhUI1xEh9bj6fhGXgWjtQQHwkpOyo+CW8kcO+Nit+33XrXq4g/iSg3Kv6/70g83q4xnjZP0VmewefwBQfSzHmHNngPP8DHWd9Mhky2ZH0HAdIe0/A3/AhfIfYazsJr8Hq2t9d0/EQb/IIdcBRegGPwInyk1v87cwjPcRgegcO60teGQ2Li8RTGbLsHtX3d/u9RXX0ubsF7uhV26+Xugt9U9TtTUtXPJ2VcRew7/JH8o8TmHO7vvOljbl8bM/FRL3Yphfawe9AF+FlV93s5l7icL+G4B22xN6I9xE7nWcq4flFVnsOW+RCxTThuzuF64Cbu6Ra8De/Au/CeOQ+L30/hGeweVKPsFrgBboSt8IuKrvsow8pxv3+jgndpdw7bIwlO1fi7y/CKCsaWkoltQx1thztM3XXpINa1xjZZya8q+/bIY55Q5q4HOM6rYGyRfrtPB/bB/bAfDsBBWIRD8EBE3P2NPe+LKEvKOJhhe+QxT2jnLhmTpM826vgRRliesF6MwwkVjE8u7tyVdX+tNzLG+3nCeuG2h8wXsg7N29iZNXbfIfXRrqrrJul6moLTcEYF80Uex86ssWN3WN0kVU8nUP5JXdmXzalg7rbrnCzGzrzijt12XingvAf26mTqaRzlTDj7MtnP+fuJeo+decH2VZunfmnmTplXymY96K4fhbj1NKWD3N+MrGvNvqzNaYtizPLXM7avSp5a8qKf6rCWmcV/lOAcnDdtUDBHu65oVmxflTz1H/hXV3Jufm7NzzFKDu6YXp6n8z+710resWz2YEshe7xmx/ZVF8ndydju59bsXO/nsxec38h84H92r00j79hISF9djMhB+HuxsBzjSvkL9zzNvCMhhBBCCCGEEJIm/wAtkMkQ
+ </data>
+ </layer>
+ <layer name="signs" width="100" height="50">
+ <data encoding="base64" compression="zlib">
+ eJzt100Kg0AMBtBY3PdHz9k7Wo9Su+8RGvEAaqs4lPfgYzbDEBgISQQAAAAAAADfaOpt7wEAAPB/boXshG0hdQAwuerLAIuYY+eNO0eX5yPTH10M8cwMmdfRhQBQpHe139vmpnXOp4hL5r7jnwAAAAD86gMFzQct
+ </data>
+ </layer>
+ <layer name="events" width="100" height="50">
+ <data encoding="base64" compression="zlib">
+ eJzt2EEOgyAQBVBjMXHT+1+32yYqLS3tDPpewsYNMB9x4jQBAAAAAAAjm0v0CiBOKdvxyXMAgJ70Gbns5bHKp7v7mzXd68lr78xNVl95ddZb8xhNbX//2G/L/D0HdfLI5ap5ZOtFMtbo17Kej2zrAXiW9e6MFtGDyCHWKD3nVcjiWEQdZHFMPXJpuTvO8i8CANhafKsBgAE8ADCABsw=
+ </data>
+ </layer>
+</map>
diff --git a/tiled/map4.tmx b/tiled/map4.tmx
new file mode 100644
index 0000000..ae383e9
--- /dev/null
+++ b/tiled/map4.tmx
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<map version="1.0" orientation="orthogonal" renderorder="right-down" width="80" height="50" tilewidth="16" tileheight="16" nextobjectid="1">
+ <tileset firstgid="1" name="atlas" tilewidth="16" tileheight="16" tilecount="1024" columns="32">
+ <image source="atlas.png" width="512" height="512"/>
+ </tileset>
+ <tileset firstgid="1025" name="eventset" tilewidth="16" tileheight="16" tilecount="16" columns="4">
+ <image source="eventset.png" width="64" height="64"/>
+ <tile id="1">
+ <properties>
+ <property name="portal" value="1"/>
+ <property name="target" value="3-2"/>
+ </properties>
+ </tile>
+ <tile id="2">
+ <properties>
+ <property name="portal" value="2"/>
+ <property name="target" value="5-1"/>
+ </properties>
+ </tile>
+ <tile id="3">
+ <properties>
+ <property name="floor" value="true"/>
+ </properties>
+ </tile>
+ <tile id="4">
+ <properties>
+ <property name="lowest" value="true"/>
+ </properties>
+ </tile>
+ <tile id="5">
+ <properties>
+ <property name="portal" value="3"/>
+ <property name="target" value="6-1"/>
+ </properties>
+ </tile>
+ <tile id="7">
+ <properties>
+ <property name="block" value="true"/>
+ </properties>
+ </tile>
+ <tile id="8">
+ <properties>
+ <property name="spikes" value="true"/>
+ </properties>
+ </tile>
+ <tile id="9">
+ <properties>
+ <property name="turnaround" value="true"/>
+ </properties>
+ </tile>
+ <tile id="10">
+ <properties>
+ <property name="movingplatform" value="up"/>
+ </properties>
+ </tile>
+ <tile id="12">
+ <properties>
+ <property name="checkpoint" value="true"/>
+ </properties>
+ </tile>
+ <tile id="15">
+ <properties>
+ <property name="stop" value="true"/>
+ </properties>
+ </tile>
+ </tileset>
+ <tileset firstgid="1041" name="signs" tilewidth="16" tileheight="16" tilecount="4" columns="4">
+ <image source="signs.png" width="64" height="16"/>
+ </tileset>
+ <layer name="bg" width="80" height="50">
+ <data encoding="base64" compression="zlib">
+ eJzt1klSFEEYxfHsA9CMDa0L8QI4yy2cGFyiF3AeluoFUFBxCVwAEQeWygUQ56VyAcB5Wgh/FhnRC1Iyk8qsXrzFLyoq4ov3KjKzKmrEGHMGZ9GCKlrRhnZ0oBNdqKHbc87mjSTOd83l6r2Bm7iFPuzDfhzAQRzCYRzBUfR7ztm81PmuuVy9k5jCNI7hOE7gJE5hAIMYwjBOe87ZvNT5rrlcvc/xAgs4h/O4gIu4hMu4gqu4huueczYvdb5rLlfvR3zCMkZxG3cwhnHcxT3cxwQeeM7ZvNT5rrlcvf+wDlMxZobLQ8ziEebwGE/wFM8wb/zmbF7qfNdcrt493PdiLxa5f4klvMJrvMFbvMN7fDB+czYvdb5rLlfvZo+1wv0q1vAZX/AV3/AdP/DT+M3ZvNT5rrlcvY09LaiiFW1oRwc60YUauj3nbF7qfNdcrt6YffrrYSfnLyS/yPMX0xuzT5s5da67sLvi7ok9fyH5RZ6/mN6Ynh5HdlHrF5Jf5PrF9Mac81/4jT+J3t+Q/CLf35je2H2y5zzV+fPNL/r8hfY29tQj/K+nniHfJVfvTntcXUWt33b5qdbPt7es71NoXmOuz/OWsX45v0+heVutXzM8b1nfp9C8rdavGZ63rO9T7Bo22/NWRUREJLtm+x/w/QdMlR2q7P0TEREREREREREREREREbE2AFiabOs=
+ </data>
+ </layer>
+ <layer name="plants" width="80" height="50">
+ <data encoding="base64" compression="zlib">
+ eJzt11kOgjAUheGGnWrisA3naRXO0yoUZzfledfYpiUQ6P8l502sHCxwjQEAAAAAAACA35qJMS2lnRT9S8ppqN5Gypj+vGzU21bZ0Z+Xm3q7Kw/6A0qjiGduTevVuU9466i7bsX6y/P9b641FgHr9HRsXxlU7Bq4Oum8zwHnvtSxK2UdaX+hUvV2Ua4l7C/mfZMF9k2YLPfNRN8zVWZcDy979XZQjvT3peHwmad6eylv+gNQEOb5MLZ5PvZ508Y2zzNv/meb513mTd6DkaeU/xoAAAAQrQ//nypV
+ </data>
+ </layer>
+ <layer name="treetrunks" width="80" height="50">
+ <data encoding="base64" compression="zlib">
+ eJzt1sEJwkAQBdAhOcU2VIIpTO3DWIlaiaYv5+LJgAEhIex78G9zGD4LsxEAAAAAAKzFpYroM9dq6U3W6Za93TOPgvrb1hG7+vdcO2Hmmb29MkNB/QEwnyZv0WbCPWLcIbvr9DfqmDllzksvMoPP32/vLUBR3ND/uKEAAAAAAPDtDd7dCNw=
+ </data>
+ </layer>
+ <layer name="main" width="80" height="50">
+ <data encoding="base64" compression="zlib">
+ eJztmFtu00AYhccR964CIUKhq+DS0pBy3UJJaKWWAFsA+sR9C9C+AksAWl6hS+DSRqIPLTvomWaMfiYztvENOzmf9HXkS+zJkRsfWylCCCGEEEIIIYQQQggheTDR+N8zqDdTzC8Ri571Mr+5QKmr8Bq8Dm/Am2JZrrf3uRX4zz2PbbdhB+7k+q2KJeIr/UHnt2j2XcKfZXgX9uA9eF8sy/X2Pg8iTvYQ2x7Bx3AiyaRqhLz+nuC7PYXP4HP4Ar4Uy3K9vc+riFxeY9sbuAqnRji/ogjzO5Qiv6rf38rM71yK/Kp+f2N+2Shjfp+Q2Skrv8PwCPwAP6rB/fwoxmPweMnzy0IZ8/uBbK4Y2ya/07AJv8HvanAfP4NxEp5NML+o/F19K65jpSVJ/yvivNNwBgY4dgM24WUsz8KWZ34SO/+eyN/Vt+I6VlraYn6+/uc6byfjefXnu/Ck+d/W2U1iXFB/d31ffnb+fTU4Rt9jXMfKA1//0+ct6to8j89fgLOw5TiWLz9f/q7sqsC/XJt5Evf7HJd/VYi6NjXhM659jfqWXet/qeHn46rff/MifMa1r1Hfsmv9iWD4+Xhc8pMdOYt2vx6X/HRHXmd+qdEd+Sec0fdC8Xt+CU6LMdzuWi/7dci45FcUzC8bdchPvl/vmtFl13SMtxjfwfcl9K065Cffr6+Y0eWK6Rhf4Fe4yfwOkO/X18zocs3cI3fhHvzt6cHj1p/D7rEBP5vRpatvJO3Laftzuwb5hd1jC26b0WX4Dk+/98ja85L2v1FEv/e4o5hfVi4G/n6cV38mhBBC6sA+f57HuQ==
+ </data>
+ </layer>
+ <layer name="signs" width="80" height="50">
+ <data encoding="base64" compression="zlib">
+ eJzt1jENAAAIwDAODIB/sUjgJCStgp2LAAAAAAAAAAAAADad1wUAAPBTeWkAAHhlADEZACw=
+ </data>
+ </layer>
+ <layer name="spikes" width="80" height="50">
+ <data encoding="base64" compression="zlib">
+ eJzt1sEJACAMBMEY7b9mEfFnChBn4B6BFLARAAAAAAAAAAAAQM96AADwm5Z71b06eVxa+fyllgYAgGdNLVUASg==
+ </data>
+ </layer>
+ <layer name="events" width="80" height="50">
+ <data encoding="base64" compression="zlib">
+ eJzt2NEKwiAUBuBRBkUEvf/TduFVQq151JV9H3ixXcj4ncezLQsAAAAAzOOe9n4CYISjvU5nKdWNT+fdyvmW1eZHJr8Y+cXIL+Zdfme5bhY9z8lqc+vRY9W4FvP+2ruwV26Mt7a2N2vd3CW9Hjyr/XZWqzL5xcgPvsvBnmIAdT6m9qwse+G16/L+LL10i96jR/9S/t+Yxaj8ZiY/gLZO6iB/6gFmoAhP
+ </data>
+ </layer>
+</map>
diff --git a/tiled/map5.tmx b/tiled/map5.tmx
new file mode 100644
index 0000000..e3091e3
--- /dev/null
+++ b/tiled/map5.tmx
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<map version="1.0" orientation="orthogonal" renderorder="right-down" width="100" height="45" tilewidth="16" tileheight="16" nextobjectid="1">
+ <tileset firstgid="1" name="eventset" tilewidth="16" tileheight="16" tilecount="16" columns="4">
+ <image source="eventset.png" width="64" height="64"/>
+ <tile id="1">
+ <properties>
+ <property name="portal" value="1"/>
+ <property name="target" value="4-2"/>
+ </properties>
+ </tile>
+ <tile id="2">
+ <properties>
+ <property name="portal" value="2"/>
+ <property name="target" value="6-1"/>
+ </properties>
+ </tile>
+ <tile id="3">
+ <properties>
+ <property name="floor" value="true"/>
+ </properties>
+ </tile>
+ <tile id="4">
+ <properties>
+ <property name="lowest" value="true"/>
+ </properties>
+ </tile>
+ <tile id="5">
+ <properties>
+ <property name="portal" value="3"/>
+ <property name="target" value="6-1"/>
+ </properties>
+ </tile>
+ <tile id="7">
+ <properties>
+ <property name="block" value="true"/>
+ </properties>
+ </tile>
+ <tile id="8">
+ <properties>
+ <property name="spikes" value="true"/>
+ </properties>
+ </tile>
+ <tile id="9">
+ <properties>
+ <property name="movingplatform" value="down"/>
+ </properties>
+ </tile>
+ <tile id="10">
+ <properties>
+ <property name="movingplatform" value="up"/>
+ </properties>
+ </tile>
+ <tile id="12">
+ <properties>
+ <property name="checkpoint" value="true"/>
+ </properties>
+ </tile>
+ <tile id="14">
+ <properties>
+ <property name="movingplatform" value="right"/>
+ </properties>
+ </tile>
+ <tile id="15">
+ <properties>
+ <property name="stop" value="true"/>
+ </properties>
+ </tile>
+ </tileset>
+ <tileset firstgid="17" name="signs" tilewidth="16" tileheight="16" tilecount="4" columns="4">
+ <image source="signs.png" width="64" height="16"/>
+ </tileset>
+ <tileset firstgid="21" name="atlas" tilewidth="16" tileheight="16" tilecount="1024" columns="32">
+ <image source="atlas.png" width="512" height="512"/>
+ </tileset>
+ <layer name="bg" width="100" height="45">
+ <data encoding="base64" compression="zlib">
+ eJzt07dNBFEYxPE9vA+ABji8DYAG8KYLvOkCb8KDBvAmBBrAmxBoAG9CoAD+BEgkLE/Le9ILJvgFK303mtHtJoIgWMAimtCMFrSiDe3oQCe60G14Zysv4aCfi0xbm3ewiz30oBd96McABjGEYYxg1PDOVp6Lfj5vvsQVrjGGcUxgElOYxgxmMYd5wztbeS76+bz5De/4wBKWsYJVrGEdG9jEFrYN72zluejn8+b8WBAUoBD7PB/gEEc4xglOcYZzXARmd7byXPTzeXM9GQ1oxA3Pt7jDPR7wiCc84wWvgdmdrTwX/Xze/NXtWwxJSEYKUpGGdGQgE1mGd7byXPTzefPPbkWIoxglKEUZylGBSlQZ3tnKc9HP581R3pU8A7byXPTzeXOUd+XrdzWoRV1Iro08F/183hylW3XI/xulW1iei34+b47y7WYjB7l/dLOR56Kfz5ujvivf35qtd+W3PBf9fN78s1tNBGHdbOS56Ofz5v92C9tsI89FP583x0VEREREREREREREREREREREREREREREPPAJYQJbxQ==
+ </data>
+ </layer>
+ <layer name="plants" width="100" height="45">
+ <data encoding="base64" compression="zlib">
+ eJzt2MttAjEQxnHDtkEfXCJBE9BJIhFog3dEqoCERxu8KYbvCFy8Ym12dvn/pDmsfLFnLHl2nAMAAAAAAEBI31XnuopeNe+dwKelGrWpkxmfqsXXk/WoJWH3Auf6qsXgyXp8BK5HlrtRFnOdf2EkB1nuRllsdf6dkRxYuhuxFKmnsnQ3AAA2TPQuTBU/nvdhqPWRYsw7EtVK+V0rNp48/2n9X7GkHlGdlN+z4uLJ817rB8WRegQ3U05/jeaVGSti6eS9gQDS9hd4jbT9BbJpJs7VU8yd0/YXsRSlry/zzP22fyhKX/8uM3erfX2jcv/9DjN3y732Yz2YuftZ/q8DAAAAAABA/q7mHjT2
+ </data>
+ </layer>
+ <layer name="treetrunks" width="100" height="45">
+ <data encoding="base64" compression="zlib">
+ eJzt2EsOAUEUheHStQyPdXjbSGNZGGAZGGAZGGAjiCMhElEDkXR3Vf1fciMxcTntdKeMAQAAAAAgPlVrTM3mvQVeOsqiSx7wyCgxZqyZJHlvgoeFclhqVuRRCDvlsCeL4H32YF338YamGeH9vFGA7+zqwWYpn31i9+rBA12ICF113d++XPuu9/GW6vfpZzSD5ysQM9fZIGeG/5mqW2aa+Y8d4zob5MzwP2vlsNFs6fzMfeuSo3I4ac4e53FJ/HyuC7VLfM0jC+scPrNieY4okrYN97+PcHRLxvQ4vy2EVDkMNENHHmXrX8/7tOuvWta/nvdpVwAAAAAAAITnDllOMZ4=
+ </data>
+ </layer>
+ <layer name="main" width="100" height="45">
+ <data encoding="base64" compression="zlib">
+ eJztmXdy00AUxlcGjgA4jQwBrgCkQAYOASSxY0KAK0AoM6GEK+BQQucKJEDC0I4ACe0P2hEgBQb4duw3ft6sZFlry5Z538xvVlrL0krf9qeUSCQSiUQikUgkEolEIlHj9NxT6gU4AU56jS5NNHWnGl2C2ukzPPgCpsCVhPox2EJ+eHiXFOiDF4Mt4EcGx1kLoxbPZuMrYmhpP3rA/gT4cd4n36V9TINr4Dq4AW6y33g/2AbaQQfoBF3RHxkoah/N6sfmENdoP/y8qqQ58Bj0Fpk37kvSv/WBfjAA9kV8np/yqlA39PjB28cM8m7V+Fn1VjXtg+r5ON71OHinCt9av79ZJ/l9h8AwGAEZkHUvdpl030l1o4eNHws4f1bjZ9VbYf2Y9Erf3cYoyDE/cuy+E+AMOAvOqejtUesUnnEaTIC3OF8ES6pQN96DD6p5+yubXhvl5H7kA/532yvVc9OLTB3K6aereF4eTIOfOF8GK2AVrIFfKll+mKqmv+L1fAXvuwrWYn7vR3jeLJgDW8BWkAZtoB10WPrOJClp649FfOclPXaB3WAP2At6vcK40S9+xKplr9Q2h8AwOMKOR3T/aYxlSVLS/Gh15Rrkx4RPPs2fxsAxrzS3HvPJ+4P//I2z4P+ZaP50AVwEl8Dl4rktbxvoTljfRHsXfvtTYbDtYZk6aqnDlIbdA6f5U9BaxyRpY3dcY8SkpQ5TGnYPnOZPre6Hy5o4rPSa8Q64C+6B+yx9AB6G+G40fwr6/nw+Ze4LNLNoP7FS+4jDq2oV5Md85b8HiuKIfM+Z0jeqfB/mpXEd5bvMI5I4p63kx4zDvSmOyPecKf2hyvdhvhrXUb7LPKJRc1pXBfmx4HBfipNsiIjLniW1Td3uXnnr9xO5KI7gF2NqhLgPtRKPW7kQxQ9qm7rdfQPfA+7B4whPwFPl3le7ir//uIG5NgxzrtPtLK7L96gPIT3s2fdf+HHWYR5BMWXdzjaCTanCWsD2TmYc4SP4VMuPG1FmvewEXd76tWGYc50ewDc4mHKv69VIz5n0/Ir82AF2gl2pwlqAysrLbMYRfqvm9KMexLWG8Sxtk0hXKGOz+MGlYy9J9kOL4no8RjBQPO4rHqeL+fq8XnHuWon38ba+Phvwuy0/7jUlxfXMcYnie3ScYbjGuUUikUgkEolEIlHr6x9k/QMl
+ </data>
+ </layer>
+ <layer name="signs" width="100" height="45">
+ <data encoding="base64" compression="zlib">
+ eJztzsEJACAMALGuoLj/rK5QqVAoyfseFwEAAAAAAHnrcwcAAAAAAABQdboHHuzuAQAAAADGu3AnAEk=
+ </data>
+ </layer>
+ <layer name="spikes" width="100" height="45">
+ <data encoding="base64" compression="zlib">
+ eJzt1sEJACAMBMFgD8b+OxXRV8CXPmdguRYuAgAAAAAAAAAAAHg12i7LrgAAgLt+/jMAAAAA8McEmTYA3Q==
+ </data>
+ </layer>
+ <layer name="events" width="100" height="45">
+ <data encoding="base64" compression="zlib">
+ eJzt1k1OAkEQhuFCMBGNwa3eDOJOLoHeROEgmngQF9wDXVkkkzDg0MzIdPXf+yQVFvNDTX/T0y0CAAAAAMBpd6EbAGBmVBXikFMeE8exVNaZnPLo4rb6fdV601pqrWrHrw/Ov7JoSsrNY+td60N2Y/B55LxRQ/lSUh73Wg9aTwORudaX7I/xOmRzlZLyaHrPY3r+2Prxbao1k79ZPDac63P9d70XJeWx0HrWetHa6PfqW+tnYN8HeZzm2iv7sJ1/5AHkx7W23ph1gVS1Wa9zWCvOXXPb7GHHjmqrlDws9DFu5BGfkOM/NPiP1DAf4uI7j67fxD77SHVPm2seKfP1/CHzcF1/8Y9rLNWfv+u+ue19redG1/vENif7eJdj+vak0ucx5BFXHnU55CGJ9AgAAAA/LkM3AMDEL3mQEv0=
+ </data>
+ </layer>
+</map>
diff --git a/tiled/map6.tmx b/tiled/map6.tmx
new file mode 100644
index 0000000..9d8b304
--- /dev/null
+++ b/tiled/map6.tmx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<map version="1.0" orientation="orthogonal" renderorder="right-down" width="80" height="65" tilewidth="16" tileheight="16" nextobjectid="1">
+ <tileset firstgid="1" name="atlas" tilewidth="16" tileheight="16" tilecount="1024" columns="32">
+ <image source="atlas.png" width="512" height="512"/>
+ </tileset>
+ <tileset firstgid="1025" name="eventset" tilewidth="16" tileheight="16" tilecount="16" columns="4">
+ <image source="eventset.png" width="64" height="64"/>
+ <tile id="1">
+ <properties>
+ <property name="portal" value="1"/>
+ <property name="target" value="5-2"/>
+ </properties>
+ </tile>
+ <tile id="2">
+ <properties>
+ <property name="portal" value="2"/>
+ <property name="target" value="7-1"/>
+ </properties>
+ </tile>
+ <tile id="3">
+ <properties>
+ <property name="floor" value="true"/>
+ </properties>
+ </tile>
+ <tile id="4">
+ <properties>
+ <property name="lowest" value="true"/>
+ </properties>
+ </tile>
+ <tile id="5">
+ <properties>
+ <property name="portal" value="3"/>
+ <property name="target" value="6-1"/>
+ </properties>
+ </tile>
+ <tile id="7">
+ <properties>
+ <property name="block" value="true"/>
+ </properties>
+ </tile>
+ <tile id="8">
+ <properties>
+ <property name="spikes" value="true"/>
+ </properties>
+ </tile>
+ <tile id="9">
+ <properties>
+ <property name="movingplatform" value="down"/>
+ </properties>
+ </tile>
+ <tile id="10">
+ <properties>
+ <property name="movingplatform" value="up"/>
+ </properties>
+ </tile>
+ <tile id="11">
+ <properties>
+ <property name="fake" value="true"/>
+ </properties>
+ </tile>
+ <tile id="12">
+ <properties>
+ <property name="checkpoint" value="true"/>
+ </properties>
+ </tile>
+ <tile id="13">
+ <properties>
+ <property name="movingplatform" value="left"/>
+ </properties>
+ </tile>
+ <tile id="14">
+ <properties>
+ <property name="movingplatform" value="right"/>
+ </properties>
+ </tile>
+ <tile id="15">
+ <properties>
+ <property name="stop" value="true"/>
+ </properties>
+ </tile>
+ </tileset>
+ <tileset firstgid="1041" name="signs" tilewidth="16" tileheight="16" tilecount="4" columns="4">
+ <image source="signs.png" width="64" height="16"/>
+ </tileset>
+ <layer name="bg" width="80" height="65">
+ <data encoding="base64" compression="zlib">
+ eJzt0VmWTgcUBeC/BlBVClVUFaomoC1NNMEEEE0kmmACEhE9wQQkekGECRDRRhcmoA8SQkxAE220yTcB/7oP977th2+dt7322qenVquNZBSjGcNHjGUc45nAx0xkEpMZzBCGMozhjKCRJprpRQu96UNfWmmjH/1pp4NOBjCQQXTRXUJe1X1mMotPmc1nfM4c5jKP+XzBAhayiClMZRqfMJ0ZdXbtKflPRfOq7vMNy1jOClayitWsYS3r+Jb1bGAji/mSr1jC1yyts2vZfyqaV3WfbWxnBzvZxQ/sZg97+ZF9/MR+DrCJ7/iezWxha51dy/5T0byq+xzlGMc5wUl+5RSnOcNZzvEb57nAQQ7xM4f5hSN1di37T0Xzqu5znd+5wU1u8Qd/cps7/MVd7vE397nIJS5zhatcq7Nr2X8qmld1n6c84zkveMm/vOI1b3jLO97zH7WGWu2B85BHPOYfntTZtew/Fc2ruk8fW/SllTb60Z92OuhkAAMZRBfdNNJEM71ooXedXcv+U9G8qvs0NZTrQ7uW/aeieVX3KXu/iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCjmf+jpWGQ=
+ </data>
+ </layer>
+ <layer name="plants" width="80" height="65">
+ <data encoding="base64" compression="zlib">
+ eJzt2TkOwkAMBdBRqOAmcE3We7BzDXZOhbsUUUI0gSLiPcnNKEX0C8vjSQkAAAAAIN+xSOlUfP5uOEhpNPj9//TNM7J7tchvHNlN5AcAAPBXFnFfXEatWtwbqdpFbvuog/yy3CK3e9RDfgAV0+iNs6i5HlmraY5Zx9kmaiu/Wk1zzDnOLlFX+dXq+xyjx3Sjx3SjxwAAAPyXnD2EN8xSzh7CG2YpZw/R990fAAAA3/MG3HQmtg==
+ </data>
+ </layer>
+ <layer name="treetrunks" width="80" height="65">
+ <data encoding="base64" compression="zlib">
+ eJzt2DEKAjEQBdCENOoxFFlXvIVH92KmSRMJLFkkGt4rhxTDL2aYhAAAAAAAAAAAAAAwxjWN7gDgdx3zjDyZk93WnN1dfl9xkesm59ENTOYZR3fAP2vtVLv20yPnsVSZtHZqqdfvi1J/RTMRAIA5HZK7Yo9b8ocHAABAnzd7mARG
+ </data>
+ </layer>
+ <layer name="main" width="80" height="65">
+ <data encoding="base64" compression="zlib">
+ eJztmutOE0EYhndNFChXIQpFehUeOBUP6C14NiDoLaCoiaByCxgP/7wFLIn6S29BaYyHH96C75edL5muU1l2utuh+z7Jk5ndbunwtvv18G0UEUIIIYQQQgghhBBCyMEYPdK5vQ534HvYgruO7XdxqUsMmobJ7yoyuQZfYf4afoN7sA2/WtufccwX+Avz331ZcVhofmtxks8Ixg8Yj2McgyfgSTOKf+LkmBocLeh1mD4nQkbz247/zczeTt82BRsF5dc4hPkJp5HHGXgWnos7t9O3NeEC8wtyrSGuqRsL1lrnMJ/3sNmj//sw5RcizM8P5ucH8/OD+fnB/PxgfvmpRcwvK0fhMTgEh+EInIo6P5OS7ozDCViHk/AUbPZ1ReFyHt+VL8DL8Ir53jwNZ+AsnIPz8E7fVhg2S8hsFd6D901+1+ENeBPegrf7t7zgeYrMNuALuFXB369d5x/Jjuv8KwPpxzyCj+GT8h625xR5/mnvRXoqabUf8wa+7e3DDgzSe3kAH8J101upWfPvUdI7+Bmxb+Wqoy2Mu44eyzicgHU4WULfKi96/pRRY1x1dA9j29FjmYYzcDZO+ltjxqL6VnnR86eMGpO3jrYCzk+e25fwI+afrP32e1/ZNSfdAw759af150eU1Gi9VsN+79uv5mhd24n+f+3HRRxzyXHcYqomym8wUlf0+MWA85PndhkOmxot87twJU6uRRjKsOYlcz/7vvZcrgNZsbbtcdlREyW/Neu41YDz0/q9CZ+Z+qTz5xlrlda1jS5/Z78x/TiSn33OqkVe9zBISH76vJZ13cMgwd+g/WB+fjA/P5ifH8zPjyrm5+pH5tkvVDE/7UfKdw3tR9r76xn3C1XsAbv6kVn2t1P7q0q3fuRB9xNCCCGEEOLLXwxPplk=
+ </data>
+ </layer>
+ <layer name="signs" width="80" height="65">
+ <data encoding="base64" compression="zlib">
+ eJzt2DENADAMA0EPJdDwB5u1DKKodwh+tJwAAAAAAAAAAAAAAL+5Z7oAAIBtyoYEAAAG+LMBAAB4Nc6mAEE=
+ </data>
+ </layer>
+ <layer name="spikes" width="80" height="65">
+ <data encoding="base64" compression="zlib">
+ eJztwTEBAAAAwqD1T20ND6AAAAAAAAAAAAAAAAAAAAAAAAAAAL4NUUAAAQ==
+ </data>
+ </layer>
+ <layer name="events" width="80" height="65">
+ <data encoding="base64" compression="zlib">
+ eJzt2csOgjAQBVCidYUa//9rjTsXSIdQKIPnJCxgQ3PpY0qHAQAAAICMXqV3C87tKt90so+JUuYvptVyk+M8+fFP7mX+PoPxq81r171nJY+M+QAATHmoa5oa5RliT82e9LE4e904WcUYfzn5bnVnPC/Yc15z7hIXyWHqX/iR89uyba368Rny61mrZMyv1uYec+QRtZizl56/R95j/VhHfgBATxe1Bxv6Vesuff7hDBgA2rhZUwF29waAIgVv
+ </data>
+ </layer>
+</map>
diff --git a/tiled/signs.png b/tiled/signs.png
new file mode 100644
index 0000000..874ac34
--- /dev/null
+++ b/tiled/signs.png
Binary files differ
diff --git a/tiled/signs_OLD.png b/tiled/signs_OLD.png
new file mode 100644
index 0000000..70840d5
--- /dev/null
+++ b/tiled/signs_OLD.png
Binary files differ
diff --git a/tiled/tiled.lua b/tiled/tiled.lua
new file mode 100644
index 0000000..0e3b590
--- /dev/null
+++ b/tiled/tiled.lua
@@ -0,0 +1,244 @@
+-- see https://love2d.org/wiki/TiledMapLoader for latest version
+-- loader for "tiled" map editor maps (.tmx,xml-based) http://www.mapeditor.org/
+-- supports multiple layers
+-- NOTE : function ReplaceMapTileClass (tx,ty,oldTileType,newTileType,fun_callback) end
+-- NOTE : function TransmuteMap (from_to_table) end -- from_to_table[old]=new
+-- NOTE : function GetMousePosOnMap () return gMouseX+gCamX-gScreenW/2,gMouseY+gCamY-gScreenH/2 end
+
+kTileSize = 32
+kMapTileTypeEmpty = 0
+local floor = math.floor
+local ceil = math.ceil
+local max = math.max
+local min = math.min
+local abs = math.abs
+gTileMap_LayerInvisByName = {}
+
+function TiledMap_Load (filepath,tilesize,spritepath_removeold,spritepath_prefix)
+ spritepath_removeold = spritepath_removeold or "../"
+ spritepath_prefix = spritepath_prefix or ""
+ kTileSize = tilesize or kTileSize or 32
+ gTileGfx = {}
+
+ local tiletype,layers = TiledMap_Parse(filepath)
+ gMapLayers = layers
+ for first_gid,path in pairs(tiletype) do
+ path = spritepath_prefix .. string.gsub(path,"^"..string.gsub(spritepath_removeold,"%.","%%."),"")
+ local raw = love.image.newImageData(path)
+ local w,h = raw:getWidth(),raw:getHeight()
+ local gid = first_gid
+ local e = kTileSize
+ for y=0,floor(h/kTileSize)-1 do
+ for x=0,floor(w/kTileSize)-1 do
+ local sprite = love.image.newImageData(kTileSize,kTileSize)
+ sprite:paste(raw,0,0,x*e,y*e,e,e)
+ gTileGfx[gid] = love.graphics.newImage(sprite)
+ gid = gid + 1
+ end
+ end
+ end
+end
+
+function TiledMap_GetMapW () return gMapLayers.width end
+function TiledMap_GetMapH () return gMapLayers.height end
+
+-- returns the mapwidth actually used by tiles
+function TiledMap_GetMapWUsed ()
+ local maxx = 0
+ local miny = 0
+ local maxy = 0
+ for layerid,layer in pairs(gMapLayers) do
+ if (type(layer) == "table") then for ty,row in pairs(layer) do
+ if (type(row) == "table") then for tx,t in pairs(row) do
+ if (t and t ~= kMapTileTypeEmpty) then
+ miny = min(miny,ty)
+ maxy = max(maxy,ty)
+ maxx = max(maxx,tx)
+ end
+ end end
+ end end
+ end
+ return maxx + 1,miny,maxy+1
+end
+
+-- x,y= position for nearest-distance(square,not round), z= layer, maxrad= optional limit for searching
+-- returns x,y
+-- if x,y can be far outside map, set a sensible maxrad, otherwise it'll get very slow since searching outside map isn't optimized
+function TiledMap_GetNearestTileByTypeOnLayer (x,y,z,iTileType,maxrad)
+ local w = TiledMap_GetMapW()
+ local h = TiledMap_GetMapW()
+ local maxrad2 = max(x,w-x,y,h-y) if (maxrad) then maxrad2 = min(maxrad2,maxrad) end
+ if (TiledMap_GetMapTile(x,y,z) == iTileType) then return x,y end
+ for r = 1,maxrad2 do
+ for i=-r,r do
+ local xa,ya = x+i,y-r if (TiledMap_GetMapTile(xa,ya,z) == iTileType) then return xa,ya end -- top
+ local xa,ya = x+i,y+r if (TiledMap_GetMapTile(xa,ya,z) == iTileType) then return xa,ya end -- bot
+ local xa,ya = x-r,y+i if (TiledMap_GetMapTile(xa,ya,z) == iTileType) then return xa,ya end -- left
+ local xa,ya = x+r,y+i if (TiledMap_GetMapTile(xa,ya,z) == iTileType) then return xa,ya end -- right
+ end
+ end
+end
+
+function TiledMap_GetMapTile (tx,ty,layerid) -- coords in tiles
+ local row = gMapLayers[layerid][ty]
+ return row and row[tx] or kMapTileTypeEmpty
+end
+
+function TiledMap_SetMapTile (tx,ty,layerid,v) -- coords in tiles
+ local row = gMapLayers[layerid][ty]
+ if (not row) then row = {} gMapLayers[layerid][ty] = row end
+ row[tx] = v
+end
+
+-- todo : maybe optimize during parse xml for types registered as to-be-listed before parsing ?
+function TiledMap_ListAllOfTypeOnLayer (layerid,iTileType)
+ local res = {}
+ local w = TiledMap_GetMapW()
+ local h = TiledMap_GetMapH()
+ for x=0,w-1 do
+ for y=0,h-1 do
+ if (TiledMap_GetMapTile(x,y,layerid) == iTileType) then table.insert(res,{x=x,y=y}) end
+ end
+ end
+ return res
+end
+
+function TiledMap_GetLayerZByName (layername) for z,layer in ipairs(gMapLayers) do if (layer.name == layername) then return z end end end
+function TiledMap_SetLayerInvisByName (layername) gTileMap_LayerInvisByName[layername] = true end
+
+function TiledMap_IsLayerVisible (z)
+ local layer = gMapLayers[z]
+ return layer and (not gTileMap_LayerInvisByName[layer.name or "?"])
+end
+
+function TiledMap_GetTilePosUnderMouse (mx,my,camx,camy)
+ return floor((mx+camx-love.graphics.getWidth()/2)/kTileSize),
+ floor((my+camy-love.graphics.getHeight()/2)/kTileSize)
+end
+
+function TiledMap_DrawNearCam (camx,camy,fun_layercallback)
+ camx,camy = floor(camx),floor(camy)
+ local screen_w = love.graphics.getWidth()
+ local screen_h = love.graphics.getHeight()
+ local minx,maxx = floor((camx-screen_w/2)/kTileSize),ceil((camx+screen_w/2)/kTileSize)
+ local miny,maxy = floor((camy-screen_h/2)/kTileSize),ceil((camy+screen_h/2)/kTileSize)
+ for z = 1,#gMapLayers do
+ if (fun_layercallback) then fun_layercallback(z,gMapLayers[z]) end
+ if (TiledMap_IsLayerVisible(z)) then
+ for x = minx,maxx do
+ for y = miny,maxy do
+ local gfx = gTileGfx[TiledMap_GetMapTile(x,y,z)]
+ if (gfx) then
+ local sx = x*kTileSize - camx + screen_w/2
+ local sy = y*kTileSize - camy + screen_h/2
+ love.graphics.draw(gfx,sx,sy) -- x, y, r, sx, sy, ox, oy
+ end
+ end
+ end
+ end
+ end
+end
+
+
+-- ***** ***** ***** ***** ***** xml parser
+
+
+-- LoadXML from http://lua-users.org/wiki/LuaXml
+function LoadXML(s)
+ local function LoadXML_parseargs(s)
+ local arg = {}
+ string.gsub(s, "(%w+)=([\"'])(.-)%2", function (w, _, a)
+ arg[w] = a
+ end)
+ return arg
+ end
+ local stack = {}
+ local top = {}
+ table.insert(stack, top)
+ local ni,c,label,xarg, empty
+ local i, j = 1, 1
+ while true do
+ ni,j,c,label,xarg, empty = string.find(s, "<(%/?)([%w:]+)(.-)(%/?)>", i)
+ if not ni then break end
+ local text = string.sub(s, i, ni-1)
+ if not string.find(text, "^%s*$") then
+ table.insert(top, text)
+ end
+ if empty == "/" then -- empty element tag
+ table.insert(top, {label=label, xarg=LoadXML_parseargs(xarg), empty=1})
+ elseif c == "" then -- start tag
+ top = {label=label, xarg=LoadXML_parseargs(xarg)}
+ table.insert(stack, top) -- new level
+ else -- end tag
+ local toclose = table.remove(stack) -- remove top
+ top = stack[#stack]
+ if #stack < 1 then
+ error("nothing to close with "..label)
+ end
+ if toclose.label ~= label then
+ error("trying to close "..toclose.label.." with "..label)
+ end
+ table.insert(top, toclose)
+ end
+ i = j+1
+ end
+ local text = string.sub(s, i)
+ if not string.find(text, "^%s*$") then
+ table.insert(stack[#stack], text)
+ end
+ if #stack > 1 then
+ error("unclosed "..stack[stack.n].label)
+ end
+ return stack[1]
+end
+
+
+-- ***** ***** ***** ***** ***** parsing the tilemap xml file
+
+local function getTilesets(node)
+ local tiles = {}
+ for k, sub in ipairs(node) do
+ if (sub.label == "tileset") then
+ tiles[tonumber(sub.xarg.firstgid)] = sub[1].xarg.source
+ end
+ end
+ return tiles
+end
+
+local function getLayers(node)
+ local layers = {}
+ layers.width = 0
+ layers.height = 0
+ for k, sub in ipairs(node) do
+ if (sub.label == "layer") then -- and sub.xarg.name == layer_name
+ layers.width = max(layers.width ,tonumber(sub.xarg.width ) or 0)
+ layers.height = max(layers.height,tonumber(sub.xarg.height) or 0)
+ local layer = {}
+ table.insert(layers,layer)
+ layer.name = sub.xarg.name
+ --~ print("layername",layer.name)
+ width = tonumber(sub.xarg.width)
+ i = 0
+ j = 0
+ for l, child in ipairs(sub[1]) do
+ if (j == 0) then
+ layer[i] = {}
+ end
+ layer[i][j] = tonumber(child.xarg.gid)
+ j = j + 1
+ if j >= width then
+ j = 0
+ i = i + 1
+ end
+ end
+ end
+ end
+ return layers
+end
+
+function TiledMap_Parse(filename)
+ local xml = LoadXML(jin.filesystem.read(filename))
+ local tiles = getTilesets(xml[2])
+ local layers = getLayers(xml[2])
+ return tiles, layers
+end \ No newline at end of file
diff --git a/tiled/tileset.png b/tiled/tileset.png
new file mode 100644
index 0000000..b2e4407
--- /dev/null
+++ b/tiled/tileset.png
Binary files differ