upload old version of imperium-porcorum as a base
|
@ -0,0 +1,25 @@
|
||||||
|
# Imperium Porcorum
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
### Programmer
|
||||||
|
- Kazhnuz
|
||||||
|
|
||||||
|
### Music
|
||||||
|
- Ozzed (found in Jamendo)
|
||||||
|
|
||||||
|
### Tileset
|
||||||
|
- Made by surt (found in OpenGameArt)
|
||||||
|
- Some modified by Kazhnuz
|
||||||
|
|
||||||
|
### Sprites
|
||||||
|
- Kazhnuz
|
||||||
|
|
||||||
|
## Other thanks
|
||||||
|
- Everyone who helped me
|
||||||
|
- The Löve framework
|
||||||
|
- The sti module for love
|
||||||
|
- The Tiled developpers
|
||||||
|
- The Atom Developpers
|
||||||
|
|
||||||
|
Thank's for playing !
|
|
@ -1,3 +1,3 @@
|
||||||
# imperium-porcorum
|
# Imperium Porcorum
|
||||||
|
|
||||||
Un jeu de plateforme avec une armée de cochon
|
A platformer about warrior pigs.
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Imperium Porcorum
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
### Code
|
||||||
|
|
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 4.5 KiB |
|
@ -0,0 +1,7 @@
|
||||||
|
# Imperium Porcorum :: assets/sprites/
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
- **back.png** :: simple diagonals stripes. Under public domain.
|
||||||
|
|
||||||
|
- **worldmap.png** :: based on [Blowhard 2: Blow Harder](https://opengameart.org/content/blowhard-2-blow-harder) set by surt (under CC0) and ["Micropolis SNES"](https://opengameart.org/content/micropolis-snes-tiles) set by usr_share (under GPL 3.0). Resulting work is under GPL 3.0
|
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,7 @@
|
||||||
|
# Imperium Porcorum
|
||||||
|
|
||||||
|
## Fonts credits
|
||||||
|
|
||||||
|
- **Good Neighbors** by Clint Bellanger (Licence CC0), found on [OpenGameArt](http://opengameart.org/content/good-neighbors-pixel-font)
|
||||||
|
|
||||||
|
- **Boxy Bold Font+** by usr_share and Clint Bellanger (Licence CC0), found on [OpenGameArt](http://opengameart.org/content/boxy-bold-font-0)
|
After Width: | Height: | Size: 4.2 KiB |
|
@ -0,0 +1,5 @@
|
||||||
|
return {
|
||||||
|
filename = "large.png",
|
||||||
|
layout = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ",
|
||||||
|
extraspacing = 1,
|
||||||
|
}
|
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,5 @@
|
||||||
|
return {
|
||||||
|
filename = "small.png",
|
||||||
|
glyphs = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ",
|
||||||
|
extraspacing = 1,
|
||||||
|
}
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.8 KiB |
|
@ -0,0 +1,774 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="210" height="17" tilewidth="16" tileheight="16" nextobjectid="29">
|
||||||
|
<tileset firstgid="1" name="base_tiles" tilewidth="16" tileheight="16" tilecount="16384" columns="128">
|
||||||
|
<image source="tilesets/base_tiles.png" width="2048" height="2048"/>
|
||||||
|
<terraintypes>
|
||||||
|
<terrain name="solid" tile="-1">
|
||||||
|
<properties>
|
||||||
|
<property name="collidable" type="bool" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</terrain>
|
||||||
|
<terrain name="hurt" tile="-1"/>
|
||||||
|
</terraintypes>
|
||||||
|
<tile id="0" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3" terrain="0,0,0,0"/>
|
||||||
|
<tile id="4" terrain="0,0,0,0"/>
|
||||||
|
<tile id="5" terrain="0,0,0,0"/>
|
||||||
|
<tile id="6" terrain="0,0,0,0"/>
|
||||||
|
<tile id="7" terrain="0,0,0,0"/>
|
||||||
|
<tile id="8" terrain="0,0,0,0"/>
|
||||||
|
<tile id="9" terrain="0,0,0,0"/>
|
||||||
|
<tile id="10" terrain="0,0,0,0"/>
|
||||||
|
<tile id="11" terrain="0,0,0,0"/>
|
||||||
|
<tile id="12" terrain="0,0,0,0"/>
|
||||||
|
<tile id="13" terrain="0,0,0,0"/>
|
||||||
|
<tile id="14" terrain="0,0,0,0"/>
|
||||||
|
<tile id="15" terrain="0,0,0,0"/>
|
||||||
|
<tile id="16" terrain="0,0,0,0"/>
|
||||||
|
<tile id="17" terrain="0,0,0,0"/>
|
||||||
|
<tile id="18" terrain="0,0,0,0"/>
|
||||||
|
<tile id="19" terrain="0,0,0,0"/>
|
||||||
|
<tile id="20" terrain="0,0,0,0"/>
|
||||||
|
<tile id="21" terrain="0,0,0,0"/>
|
||||||
|
<tile id="22" terrain="0,0,0,0"/>
|
||||||
|
<tile id="23" terrain="0,0,0,0"/>
|
||||||
|
<tile id="24" terrain="0,0,0,0"/>
|
||||||
|
<tile id="25" terrain="0,0,0,0"/>
|
||||||
|
<tile id="26" terrain="0,0,0,0"/>
|
||||||
|
<tile id="27" terrain="0,0,0,0"/>
|
||||||
|
<tile id="28" terrain="0,0,0,0"/>
|
||||||
|
<tile id="29" terrain="0,0,0,0"/>
|
||||||
|
<tile id="30" terrain="0,0,0,0"/>
|
||||||
|
<tile id="31" terrain="0,0,0,0"/>
|
||||||
|
<tile id="128" terrain="0,0,0,0"/>
|
||||||
|
<tile id="129" terrain="0,0,0,0"/>
|
||||||
|
<tile id="130" terrain="0,0,0,0"/>
|
||||||
|
<tile id="131" terrain="0,0,0,0"/>
|
||||||
|
<tile id="132" terrain="0,0,0,0"/>
|
||||||
|
<tile id="133" terrain="0,0,0,0"/>
|
||||||
|
<tile id="134" terrain="0,0,0,0"/>
|
||||||
|
<tile id="135" terrain="0,0,0,0"/>
|
||||||
|
<tile id="136" terrain="0,0,0,0"/>
|
||||||
|
<tile id="137" terrain="0,0,0,0"/>
|
||||||
|
<tile id="138" terrain="0,0,0,0"/>
|
||||||
|
<tile id="139" terrain="0,0,0,0"/>
|
||||||
|
<tile id="140" terrain="0,0,0,0"/>
|
||||||
|
<tile id="141" terrain="0,0,0,0"/>
|
||||||
|
<tile id="142" terrain="0,0,0,0"/>
|
||||||
|
<tile id="143" terrain="0,0,0,0"/>
|
||||||
|
<tile id="144" terrain="0,0,0,0"/>
|
||||||
|
<tile id="145" terrain="0,0,0,0"/>
|
||||||
|
<tile id="146" terrain="0,0,0,0"/>
|
||||||
|
<tile id="147" terrain="0,0,0,0"/>
|
||||||
|
<tile id="148" terrain="0,0,0,0"/>
|
||||||
|
<tile id="149" terrain="0,0,0,0"/>
|
||||||
|
<tile id="150" terrain="0,0,0,0"/>
|
||||||
|
<tile id="151" terrain="0,0,0,0"/>
|
||||||
|
<tile id="152" terrain="0,0,0,0"/>
|
||||||
|
<tile id="153" terrain="0,0,0,0"/>
|
||||||
|
<tile id="154" terrain="0,0,0,0"/>
|
||||||
|
<tile id="155" terrain="0,0,0,0"/>
|
||||||
|
<tile id="156" terrain="0,0,0,0"/>
|
||||||
|
<tile id="157" terrain="0,0,0,0"/>
|
||||||
|
<tile id="158" terrain="0,0,0,0"/>
|
||||||
|
<tile id="159" terrain="0,0,0,0"/>
|
||||||
|
<tile id="172" terrain=",1,,1"/>
|
||||||
|
<tile id="173" terrain="1,,1,"/>
|
||||||
|
<tile id="256" terrain="0,0,0,0"/>
|
||||||
|
<tile id="257" terrain="0,0,0,0"/>
|
||||||
|
<tile id="258" terrain="0,0,0,0"/>
|
||||||
|
<tile id="259" terrain="0,0,0,0"/>
|
||||||
|
<tile id="260" terrain="0,0,0,0"/>
|
||||||
|
<tile id="261" terrain="0,0,0,0"/>
|
||||||
|
<tile id="262" terrain="0,0,0,0"/>
|
||||||
|
<tile id="263" terrain="0,0,0,0"/>
|
||||||
|
<tile id="264" terrain="0,0,0,0"/>
|
||||||
|
<tile id="265" terrain="0,0,0,0"/>
|
||||||
|
<tile id="266" terrain="0,0,0,0"/>
|
||||||
|
<tile id="267" terrain="0,0,0,0"/>
|
||||||
|
<tile id="268" terrain="0,0,0,0"/>
|
||||||
|
<tile id="269" terrain="0,0,0,0"/>
|
||||||
|
<tile id="270" terrain="0,0,0,0"/>
|
||||||
|
<tile id="271" terrain="0,0,0,0"/>
|
||||||
|
<tile id="272" terrain="0,0,0,0"/>
|
||||||
|
<tile id="273" terrain="0,0,0,0"/>
|
||||||
|
<tile id="274" terrain="0,0,0,0"/>
|
||||||
|
<tile id="275" terrain="0,0,0,0"/>
|
||||||
|
<tile id="276" terrain="0,0,0,0"/>
|
||||||
|
<tile id="277" terrain="0,0,0,0"/>
|
||||||
|
<tile id="278" terrain="0,0,0,0"/>
|
||||||
|
<tile id="279" terrain="0,0,0,0"/>
|
||||||
|
<tile id="280" terrain="0,0,0,0"/>
|
||||||
|
<tile id="281" terrain="0,0,0,0"/>
|
||||||
|
<tile id="282" terrain="0,0,0,0"/>
|
||||||
|
<tile id="283" terrain="0,0,0,0"/>
|
||||||
|
<tile id="284" terrain="0,0,0,0"/>
|
||||||
|
<tile id="285" terrain="0,0,0,0"/>
|
||||||
|
<tile id="286" terrain="0,0,0,0"/>
|
||||||
|
<tile id="287" terrain="0,0,0,0"/>
|
||||||
|
<tile id="297" terrain=",,1,1"/>
|
||||||
|
<tile id="298" terrain="1,1,1,1"/>
|
||||||
|
<tile id="299" terrain=",,1,1"/>
|
||||||
|
<tile id="300" terrain="1,1,1,1"/>
|
||||||
|
<tile id="301" terrain="1,1,1,1"/>
|
||||||
|
<tile id="340" terrain="0,0,0,0"/>
|
||||||
|
<tile id="384" terrain="0,0,0,0"/>
|
||||||
|
<tile id="385" terrain="0,0,0,0"/>
|
||||||
|
<tile id="386" terrain="0,0,0,0"/>
|
||||||
|
<tile id="387" terrain="0,0,0,0"/>
|
||||||
|
<tile id="388" terrain="0,0,0,0"/>
|
||||||
|
<tile id="389" terrain="0,0,0,0"/>
|
||||||
|
<tile id="390" terrain="0,0,0,0"/>
|
||||||
|
<tile id="391" terrain="0,0,0,0"/>
|
||||||
|
<tile id="392" terrain="0,0,0,0"/>
|
||||||
|
<tile id="393" terrain="0,0,0,0"/>
|
||||||
|
<tile id="394" terrain="0,0,0,0"/>
|
||||||
|
<tile id="395" terrain="0,0,0,0"/>
|
||||||
|
<tile id="396" terrain="0,0,0,0"/>
|
||||||
|
<tile id="397" terrain="0,0,0,0"/>
|
||||||
|
<tile id="398" terrain="0,0,0,0"/>
|
||||||
|
<tile id="399" terrain="0,0,0,0"/>
|
||||||
|
<tile id="400" terrain="0,0,0,0"/>
|
||||||
|
<tile id="401" terrain="0,0,0,0"/>
|
||||||
|
<tile id="402" terrain="0,0,0,0"/>
|
||||||
|
<tile id="403" terrain="0,0,0,0"/>
|
||||||
|
<tile id="404" terrain="0,0,0,0"/>
|
||||||
|
<tile id="405" terrain="0,0,0,0"/>
|
||||||
|
<tile id="406" terrain="0,0,0,0"/>
|
||||||
|
<tile id="407" terrain="0,0,0,0"/>
|
||||||
|
<tile id="408" terrain="0,0,0,0"/>
|
||||||
|
<tile id="409" terrain="0,0,0,0"/>
|
||||||
|
<tile id="410" terrain="0,0,0,0"/>
|
||||||
|
<tile id="411" terrain="0,0,0,0"/>
|
||||||
|
<tile id="412" terrain="0,0,0,0"/>
|
||||||
|
<tile id="413" terrain="0,0,0,0"/>
|
||||||
|
<tile id="414" terrain="0,0,0,0"/>
|
||||||
|
<tile id="415" terrain="0,0,0,0"/>
|
||||||
|
<tile id="425" terrain="1,1,,"/>
|
||||||
|
<tile id="426" terrain="1,1,1,1"/>
|
||||||
|
<tile id="427" terrain="1,1,,"/>
|
||||||
|
<tile id="428" terrain=",1,,1"/>
|
||||||
|
<tile id="429" terrain="1,,1,"/>
|
||||||
|
<tile id="468" terrain="0,0,0,0"/>
|
||||||
|
<tile id="471" terrain="0,0,0,0"/>
|
||||||
|
<tile id="512" terrain="0,0,0,0"/>
|
||||||
|
<tile id="513" terrain="0,0,0,0"/>
|
||||||
|
<tile id="514" terrain="0,0,0,0"/>
|
||||||
|
<tile id="515" terrain="0,0,0,0"/>
|
||||||
|
<tile id="516" terrain="0,0,0,0"/>
|
||||||
|
<tile id="517" terrain="0,0,0,0"/>
|
||||||
|
<tile id="518" terrain="0,0,0,0"/>
|
||||||
|
<tile id="519" terrain="0,0,0,0"/>
|
||||||
|
<tile id="520" terrain="0,0,0,0"/>
|
||||||
|
<tile id="521" terrain="0,0,0,0"/>
|
||||||
|
<tile id="522" terrain="0,0,0,0"/>
|
||||||
|
<tile id="523" terrain="0,0,0,0"/>
|
||||||
|
<tile id="524" terrain="0,0,0,0"/>
|
||||||
|
<tile id="525" terrain="0,0,0,0"/>
|
||||||
|
<tile id="526" terrain="0,0,0,0"/>
|
||||||
|
<tile id="527" terrain="0,0,0,0"/>
|
||||||
|
<tile id="528" terrain="0,0,0,0"/>
|
||||||
|
<tile id="529" terrain="0,0,0,0"/>
|
||||||
|
<tile id="530" terrain="0,0,0,0"/>
|
||||||
|
<tile id="531" terrain="0,0,0,0"/>
|
||||||
|
<tile id="532" terrain="0,0,0,0"/>
|
||||||
|
<tile id="533" terrain="0,0,0,0"/>
|
||||||
|
<tile id="534" terrain="0,0,0,0"/>
|
||||||
|
<tile id="535" terrain="0,0,0,0"/>
|
||||||
|
<tile id="536" terrain="0,0,0,0"/>
|
||||||
|
<tile id="537" terrain="0,0,0,0"/>
|
||||||
|
<tile id="538" terrain="0,0,0,0"/>
|
||||||
|
<tile id="539" terrain="0,0,0,0"/>
|
||||||
|
<tile id="540" terrain="0,0,0,0"/>
|
||||||
|
<tile id="541" terrain="0,0,0,0"/>
|
||||||
|
<tile id="542" terrain="0,0,0,0"/>
|
||||||
|
<tile id="543" terrain="0,0,0,0"/>
|
||||||
|
<tile id="560" terrain="0,0,0,0"/>
|
||||||
|
<tile id="561" terrain="0,0,0,0"/>
|
||||||
|
<tile id="562" terrain="0,0,0,0"/>
|
||||||
|
<tile id="563" terrain="0,0,0,0"/>
|
||||||
|
<tile id="564" terrain="0,0,0,0"/>
|
||||||
|
<tile id="596" terrain="0,0,0,0"/>
|
||||||
|
<tile id="599" terrain="0,0,0,0"/>
|
||||||
|
<tile id="640" terrain="0,0,0,0"/>
|
||||||
|
<tile id="641" terrain="0,0,0,0"/>
|
||||||
|
<tile id="642" terrain="0,0,0,0"/>
|
||||||
|
<tile id="643" terrain="0,0,0,0"/>
|
||||||
|
<tile id="644" terrain="0,0,0,0"/>
|
||||||
|
<tile id="645" terrain="0,0,0,0"/>
|
||||||
|
<tile id="646" terrain="0,0,0,0"/>
|
||||||
|
<tile id="647" terrain="0,0,0,0"/>
|
||||||
|
<tile id="648" terrain="0,0,0,0"/>
|
||||||
|
<tile id="649" terrain="0,0,0,0"/>
|
||||||
|
<tile id="650" terrain="0,0,0,0"/>
|
||||||
|
<tile id="651" terrain="0,0,0,0"/>
|
||||||
|
<tile id="652" terrain="0,0,0,0"/>
|
||||||
|
<tile id="653" terrain="0,0,0,0"/>
|
||||||
|
<tile id="654" terrain="0,0,0,0"/>
|
||||||
|
<tile id="655" terrain="0,0,0,0"/>
|
||||||
|
<tile id="656" terrain="0,0,0,0"/>
|
||||||
|
<tile id="657" terrain="0,0,0,0"/>
|
||||||
|
<tile id="658" terrain="0,0,0,0"/>
|
||||||
|
<tile id="659" terrain="0,0,0,0"/>
|
||||||
|
<tile id="660" terrain="0,0,0,0"/>
|
||||||
|
<tile id="661" terrain="0,0,0,0"/>
|
||||||
|
<tile id="662" terrain="0,0,0,0"/>
|
||||||
|
<tile id="663" terrain="0,0,0,0"/>
|
||||||
|
<tile id="664" terrain="0,0,0,0"/>
|
||||||
|
<tile id="665" terrain="0,0,0,0"/>
|
||||||
|
<tile id="666" terrain="0,0,0,0"/>
|
||||||
|
<tile id="667" terrain="0,0,0,0"/>
|
||||||
|
<tile id="668" terrain="0,0,0,0"/>
|
||||||
|
<tile id="669" terrain="0,0,0,0"/>
|
||||||
|
<tile id="670" terrain="0,0,0,0"/>
|
||||||
|
<tile id="671" terrain="0,0,0,0"/>
|
||||||
|
<tile id="688" terrain="0,0,0,0"/>
|
||||||
|
<tile id="689" terrain="0,0,0,0"/>
|
||||||
|
<tile id="690" terrain="0,0,0,0"/>
|
||||||
|
<tile id="691" terrain="0,0,0,0"/>
|
||||||
|
<tile id="692" terrain="0,0,0,0"/>
|
||||||
|
<tile id="707" terrain="0,0,0,0"/>
|
||||||
|
<tile id="708" terrain="0,0,0,0"/>
|
||||||
|
<tile id="709" terrain="0,0,0,0"/>
|
||||||
|
<tile id="710" terrain="0,0,0,0"/>
|
||||||
|
<tile id="711" terrain="0,0,0,0"/>
|
||||||
|
<tile id="712" terrain="0,0,0,0"/>
|
||||||
|
<tile id="724" terrain="0,0,0,0"/>
|
||||||
|
<tile id="727" terrain="0,0,0,0"/>
|
||||||
|
<tile id="768" terrain="0,0,0,0"/>
|
||||||
|
<tile id="769" terrain="0,0,0,0"/>
|
||||||
|
<tile id="770" terrain="0,0,0,0"/>
|
||||||
|
<tile id="771" terrain="0,0,0,0"/>
|
||||||
|
<tile id="772" terrain="0,0,0,0"/>
|
||||||
|
<tile id="773" terrain="0,0,0,0"/>
|
||||||
|
<tile id="774" terrain="0,0,0,0"/>
|
||||||
|
<tile id="775" terrain="0,0,0,0"/>
|
||||||
|
<tile id="776" terrain="0,0,0,0"/>
|
||||||
|
<tile id="777" terrain="0,0,0,0"/>
|
||||||
|
<tile id="778" terrain="0,0,0,0"/>
|
||||||
|
<tile id="779" terrain="0,0,0,0"/>
|
||||||
|
<tile id="780" terrain="0,0,0,0"/>
|
||||||
|
<tile id="781" terrain="0,0,0,0"/>
|
||||||
|
<tile id="782" terrain="0,0,0,0"/>
|
||||||
|
<tile id="783" terrain="0,0,0,0"/>
|
||||||
|
<tile id="784" terrain="0,0,0,0"/>
|
||||||
|
<tile id="785" terrain="0,0,0,0"/>
|
||||||
|
<tile id="786" terrain="0,0,0,0"/>
|
||||||
|
<tile id="787" terrain="0,0,0,0"/>
|
||||||
|
<tile id="788" terrain="0,0,0,0"/>
|
||||||
|
<tile id="789" terrain="0,0,0,0"/>
|
||||||
|
<tile id="790" terrain="0,0,0,0"/>
|
||||||
|
<tile id="791" terrain="0,0,0,0"/>
|
||||||
|
<tile id="792" terrain="0,0,0,0"/>
|
||||||
|
<tile id="793" terrain="0,0,0,0"/>
|
||||||
|
<tile id="794" terrain="0,0,0,0"/>
|
||||||
|
<tile id="795" terrain="0,0,0,0"/>
|
||||||
|
<tile id="796" terrain="0,0,0,0"/>
|
||||||
|
<tile id="797" terrain="0,0,0,0"/>
|
||||||
|
<tile id="798" terrain="0,0,0,0"/>
|
||||||
|
<tile id="799" terrain="0,0,0,0"/>
|
||||||
|
<tile id="816" terrain="0,0,0,0"/>
|
||||||
|
<tile id="817" terrain="0,0,0,0"/>
|
||||||
|
<tile id="818" terrain="0,0,0,0"/>
|
||||||
|
<tile id="819" terrain="0,0,0,0"/>
|
||||||
|
<tile id="820" terrain="0,0,0,0"/>
|
||||||
|
<tile id="835" terrain="0,0,0,0"/>
|
||||||
|
<tile id="836" terrain="0,0,0,0"/>
|
||||||
|
<tile id="837" terrain="0,0,0,0"/>
|
||||||
|
<tile id="838" terrain="0,0,0,0"/>
|
||||||
|
<tile id="839" terrain="0,0,0,0"/>
|
||||||
|
<tile id="840" terrain="0,0,0,0"/>
|
||||||
|
<tile id="841" terrain="0,0,0,0"/>
|
||||||
|
<tile id="842" terrain="0,0,0,0"/>
|
||||||
|
<tile id="843" terrain="0,0,0,0"/>
|
||||||
|
<tile id="844" terrain="0,0,0,0"/>
|
||||||
|
<tile id="845" terrain="0,0,0,0"/>
|
||||||
|
<tile id="846" terrain="0,0,0,0"/>
|
||||||
|
<tile id="896" terrain="0,0,0,0"/>
|
||||||
|
<tile id="897" terrain="0,0,0,0"/>
|
||||||
|
<tile id="898" terrain="0,0,0,0"/>
|
||||||
|
<tile id="899" terrain="0,0,0,0"/>
|
||||||
|
<tile id="900" terrain="0,0,0,0"/>
|
||||||
|
<tile id="901" terrain="0,0,0,0"/>
|
||||||
|
<tile id="902" terrain="0,0,0,0"/>
|
||||||
|
<tile id="903" terrain="0,0,0,0"/>
|
||||||
|
<tile id="904" terrain="0,0,0,0"/>
|
||||||
|
<tile id="905" terrain="0,0,0,0"/>
|
||||||
|
<tile id="906" terrain="0,0,0,0"/>
|
||||||
|
<tile id="907" terrain="0,0,0,0"/>
|
||||||
|
<tile id="908" terrain="0,0,0,0"/>
|
||||||
|
<tile id="909" terrain="0,0,0,0"/>
|
||||||
|
<tile id="910" terrain="0,0,0,0"/>
|
||||||
|
<tile id="911" terrain="0,0,0,0"/>
|
||||||
|
<tile id="912" terrain="0,0,0,0"/>
|
||||||
|
<tile id="913" terrain="0,0,0,0"/>
|
||||||
|
<tile id="914" terrain="0,0,0,0"/>
|
||||||
|
<tile id="915" terrain="0,0,0,0"/>
|
||||||
|
<tile id="916" terrain="0,0,0,0"/>
|
||||||
|
<tile id="917" terrain="0,0,0,0"/>
|
||||||
|
<tile id="918" terrain="0,0,0,0"/>
|
||||||
|
<tile id="919" terrain="0,0,0,0"/>
|
||||||
|
<tile id="920" terrain="0,0,0,0"/>
|
||||||
|
<tile id="921" terrain="0,0,0,0"/>
|
||||||
|
<tile id="922" terrain="0,0,0,0"/>
|
||||||
|
<tile id="923" terrain="0,0,0,0"/>
|
||||||
|
<tile id="924" terrain="0,0,0,0"/>
|
||||||
|
<tile id="925" terrain="0,0,0,0"/>
|
||||||
|
<tile id="926" terrain="0,0,0,0"/>
|
||||||
|
<tile id="927" terrain="0,0,0,0"/>
|
||||||
|
<tile id="944" terrain="0,0,0,0"/>
|
||||||
|
<tile id="945" terrain="0,0,0,0"/>
|
||||||
|
<tile id="946" terrain="0,0,0,0"/>
|
||||||
|
<tile id="947" terrain="0,0,0,0"/>
|
||||||
|
<tile id="963" terrain="0,0,0,0"/>
|
||||||
|
<tile id="964" terrain="0,0,0,0"/>
|
||||||
|
<tile id="965" terrain="0,0,0,0"/>
|
||||||
|
<tile id="966" terrain="0,0,0,0"/>
|
||||||
|
<tile id="967" terrain="0,0,0,0"/>
|
||||||
|
<tile id="968" terrain="0,0,0,0"/>
|
||||||
|
<tile id="969" terrain="0,0,0,0"/>
|
||||||
|
<tile id="970" terrain="0,0,0,0"/>
|
||||||
|
<tile id="971" terrain="0,0,0,0"/>
|
||||||
|
<tile id="972" terrain="0,0,0,0"/>
|
||||||
|
<tile id="973" terrain="0,0,0,0"/>
|
||||||
|
<tile id="974" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1024" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1025" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1026" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1027" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1028" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1029" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1030" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1031" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1032" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1033" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1034" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1035" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1036" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1037" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1038" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1039" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1040" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1041" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1042" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1043" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1044" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1045" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1046" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1047" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1048" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1049" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1050" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1051" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1073" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1074" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1092" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1093" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1094" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1095" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1096" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1097" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1098" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1099" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1100" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1101" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1102" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1152" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1153" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1154" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1155" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1156" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1157" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1158" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1159" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1160" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1161" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1162" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1163" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1164" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1165" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1166" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1167" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1168" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1169" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1170" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1171" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1172" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1173" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1174" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1175" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1176" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1177" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1178" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1179" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1190" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1191" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1192" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1206" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1207" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1208" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1209" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1210" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1211" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1222" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1223" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1224" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1225" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1280" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1281" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1282" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1283" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1284" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1285" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1286" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1287" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1288" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1289" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1290" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1291" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1292" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1293" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1294" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1295" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1296" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1297" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1298" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1299" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1300" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1301" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1302" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1303" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1304" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1305" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1306" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1307" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1318" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1319" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1320" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1334" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1335" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1336" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1337" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1338" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1339" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1350" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1351" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1352" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1353" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1408" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1409" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1410" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1411" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1412" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1413" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1414" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1415" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1416" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1417" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1418" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1419" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1420" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1421" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1422" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1423" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1424" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1425" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1426" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1427" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1428" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1429" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1430" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1431" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1432" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1433" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1434" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1435" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1446" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1447" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1448" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1463" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1464" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1465" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1574" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1575" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1576" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1851" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1852" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1853" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1854" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1979" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1980" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1981" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1982" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2001" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2002" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2003" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2004" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2005" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2006" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2007" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2123" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2129" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2130" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2131" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2132" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2133" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2134" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2135" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2229" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2230" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2231" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2251" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2254" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2257" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2258" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2259" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2260" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2261" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2262" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2263" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2357" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2358" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2359" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2377" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2378" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2379" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2380" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2381" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2382" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2385" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2386" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2387" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2388" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2389" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2390" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2391" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2490" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2491" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2492" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2493" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2505" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2506" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2507" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2508" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2509" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2510" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2513" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2514" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2515" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2516" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2517" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2518" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2519" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2618" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2619" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2620" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2621" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2623" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2627" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2628" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2631" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2632" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2633" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2634" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2635" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2636" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2637" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2638" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2641" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2642" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2643" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2644" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2645" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2646" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2647" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2736" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2737" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2738" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2739" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2740" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2741" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2742" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2743" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2744" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2745" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2746" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2747" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2748" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2749" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2750" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2751" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2752" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2753" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2754" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2755" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2756" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2757" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2758" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2759" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2760" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2761" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2762" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2763" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2764" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2765" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2766" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2767" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2768" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2769" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2770" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2771" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2772" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2773" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2774" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2775" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2864" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2865" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2866" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2867" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2868" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2869" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2870" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2871" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2872" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2873" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2874" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2875" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2876" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2877" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2878" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2879" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2880" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2881" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2882" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2883" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2884" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2885" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2886" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2887" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2888" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2889" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2890" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2891" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2892" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2893" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2894" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2895" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2896" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2897" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2898" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2899" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2900" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2901" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2902" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2903" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2992" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2993" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2994" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2995" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2996" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2997" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2998" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2999" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3000" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3001" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3002" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3003" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3004" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3005" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3006" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3007" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3008" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3009" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3010" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3011" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3012" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3013" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3014" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3015" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3016" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3017" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3018" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3019" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3020" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3021" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3022" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3023" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3024" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3025" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3026" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3027" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3028" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3029" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3030" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3031" terrain="0,0,0,0"/>
|
||||||
|
<tile id="7698" terrain="0,0,0,0"/>
|
||||||
|
<tile id="7826" terrain=",0,,"/>
|
||||||
|
<tile id="7827" terrain="0,0,,0"/>
|
||||||
|
</tileset>
|
||||||
|
<layer name="Calque de Tile 1" width="210" height="17">
|
||||||
|
<data encoding="csv">
|
||||||
|
571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,836,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,975,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,836,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,975,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,836,968,968,968,968,968,968,968,968,968,1099,1099,1099,1099,1099,1099,1352,1352,1352,1352,1103,571,571,830,831,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,571,830,831,571,571,571,571,571,571,571,571,571,571,571,571,836,968,968,968,968,968,968,968,968,975,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,1464,1465,1352,1352,1352,1352,1352,1352,1465,1466,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,1866,1867,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,1994,1995,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,2122,2123,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,2365,2366,571,2250,2251,571,2103,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,1866,1867,571,571,571,708,710,709,710,710,709,847,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,1866,1867,571,571,571,571,571,571,571,571,571,571,830,831,571,571,571,571,571,571,1994,1995,571,571,571,836,972,972,972,972,972,975,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,1994,1995,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,2122,2123,571,571,571,836,972,972,972,972,972,975,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,571,571,571,2122,2123,571,571,2632,2633,571,571,571,571,571,571,571,571,571,571,571,2365,2366,571,2250,2251,571,2103,571,836,972,972,972,972,972,975,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
571,2365,2366,571,2250,2251,571,571,2760,2761,571,571,571,571,571,571,571,571,571,1207,710,710,710,710,710,710,710,710,710,836,972,972,972,972,972,975,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
562,562,562,562,562,562,562,562,562,562,562,565,571,571,571,571,571,571,571,836,965,965,965,965,965,965,965,965,965,968,972,972,972,972,972,975,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7078,7080,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
692,692,692,692,692,692,692,692,692,692,692,693,571,571,571,571,571,571,571,836,965,965,965,965,965,965,965,965,965,968,972,972,972,972,972,975,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7208,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,
|
||||||
|
692,692,692,692,692,692,692,692,692,692,692,693,571,571,571,571,571,571,571,836,965,965,965,965,965,965,965,965,965,968,972,972,972,972,972,975,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7207,7208,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer name="death" width="210" height="17">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<objectgroup name="collision">
|
||||||
|
<properties>
|
||||||
|
<property name="collidable" type="bool" value="true"/>
|
||||||
|
</properties>
|
||||||
|
<object id="21" x="304" y="0" width="160" height="80"/>
|
||||||
|
<object id="22" x="304" y="208" width="272" height="64"/>
|
||||||
|
<object id="23" x="0" y="224" width="192" height="48"/>
|
||||||
|
<object id="24" x="464" y="0" width="176" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="collidable" type="bool" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="25" x="576" y="208" height="16"/>
|
||||||
|
<object id="26" x="464" y="144" width="112" height="64">
|
||||||
|
<properties>
|
||||||
|
<property name="collidable" type="bool" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="27" x="128" y="192" width="32" height="32"/>
|
||||||
|
<object id="28" x="576" y="224" width="432" height="48"/>
|
||||||
|
</objectgroup>
|
||||||
|
</map>
|
|
@ -0,0 +1,481 @@
|
||||||
|
return {
|
||||||
|
version = "1.1",
|
||||||
|
luaversion = "5.1",
|
||||||
|
tiledversion = "0.18.1",
|
||||||
|
orientation = "orthogonal",
|
||||||
|
renderorder = "right-down",
|
||||||
|
width = 100,
|
||||||
|
height = 100,
|
||||||
|
tilewidth = 16,
|
||||||
|
tileheight = 16,
|
||||||
|
nextobjectid = 27,
|
||||||
|
backgroundcolor = { 85, 170, 255 },
|
||||||
|
properties = {},
|
||||||
|
tilesets = {
|
||||||
|
{
|
||||||
|
name = "beastlands",
|
||||||
|
firstgid = 1,
|
||||||
|
tilewidth = 16,
|
||||||
|
tileheight = 16,
|
||||||
|
spacing = 0,
|
||||||
|
margin = 0,
|
||||||
|
image = "tilesets/beastlands.png",
|
||||||
|
imagewidth = 944,
|
||||||
|
imageheight = 544,
|
||||||
|
transparentcolor = "#55aaff",
|
||||||
|
tileoffset = {
|
||||||
|
x = 0,
|
||||||
|
y = 0
|
||||||
|
},
|
||||||
|
grid = {
|
||||||
|
orientation = "orthogonal",
|
||||||
|
width = 16,
|
||||||
|
height = 16
|
||||||
|
},
|
||||||
|
properties = {},
|
||||||
|
terrains = {},
|
||||||
|
tilecount = 2006,
|
||||||
|
tiles = {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
layers = {
|
||||||
|
{
|
||||||
|
type = "tilelayer",
|
||||||
|
name = "Calque de Tile 1",
|
||||||
|
x = 0,
|
||||||
|
y = 0,
|
||||||
|
width = 100,
|
||||||
|
height = 100,
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
encoding = "lua",
|
||||||
|
data = {
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 951, 952, 953, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 951, 952, 953, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 951, 952, 953, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 798, 799, 799, 799, 799, 799, 799, 799, 801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 951, 952, 953, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 951, 952, 953, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 951, 952, 953, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 951, 952, 953, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 951, 952, 953, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 863, 865, 865, 865, 865, 865, 865, 865, 866, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 951, 952, 953, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 863, 865, 865, 865, 865, 865, 865, 865, 866, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 863, 865, 865, 865, 865, 865, 865, 865, 866, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 500, 500, 500, 500, 500, 500, 500, 497, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 499, 798, 799, 799, 799, 799, 799, 799, 799, 801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 182, 183, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 241, 242, 243, 0, 0, 0, 0, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 300, 301, 1243, 1245, 1245, 1246, 0, 182, 183, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 241, 242, 243, 0, 500, 500, 500, 500, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1243, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 544, 544, 545, 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 603, 603, 604, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 858, 858, 858, 858, 858, 858, 858, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
443, 443, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 603, 603, 604, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
|
||||||
|
502, 502, 502, 602, 603, 604, 502, 502, 602, 603, 603, 603, 604, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
name = "block",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
draworder = "topdown",
|
||||||
|
properties = {
|
||||||
|
["item"] = "coin"
|
||||||
|
},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 26,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 736,
|
||||||
|
y = 1392,
|
||||||
|
width = 144,
|
||||||
|
height = 48,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
name = "coin",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
draworder = "topdown",
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 12,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 240,
|
||||||
|
y = 1472,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 13,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 272,
|
||||||
|
y = 1472,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 14,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 304,
|
||||||
|
y = 1472,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 15,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 352,
|
||||||
|
y = 1408,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 16,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 384,
|
||||||
|
y = 1408,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 17,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 416,
|
||||||
|
y = 1408,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 18,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 448,
|
||||||
|
y = 1408,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 19,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 144,
|
||||||
|
y = 1456,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 20,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 144,
|
||||||
|
y = 1424,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 21,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 144,
|
||||||
|
y = 1392,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 22,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 144,
|
||||||
|
y = 1360,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
name = "playerstart",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
draworder = "topdown",
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 23,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 64,
|
||||||
|
y = 1472,
|
||||||
|
width = 32,
|
||||||
|
height = 32,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
name = "wall",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
draworder = "topdown",
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 6,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 128,
|
||||||
|
y = 1536,
|
||||||
|
width = 80,
|
||||||
|
height = 64,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 7,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 48,
|
||||||
|
y = 1536,
|
||||||
|
width = 48,
|
||||||
|
height = 64,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 8,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 240,
|
||||||
|
y = 1504,
|
||||||
|
width = 80,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 10,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 352,
|
||||||
|
y = 1440,
|
||||||
|
width = 528,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 11,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 736,
|
||||||
|
y = 1456,
|
||||||
|
width = 144,
|
||||||
|
height = 112,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 25,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 736,
|
||||||
|
y = 1264,
|
||||||
|
width = 144,
|
||||||
|
height = 128,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
name = "platform",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
draworder = "topdown",
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 5,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 64,
|
||||||
|
y = 1504,
|
||||||
|
width = 96,
|
||||||
|
height = 32,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,143 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="100" height="100" tilewidth="16" tileheight="16" backgroundcolor="#55aaff" nextobjectid="27">
|
||||||
|
<tileset firstgid="1" name="beastlands" tilewidth="16" tileheight="16" tilecount="2006" columns="59">
|
||||||
|
<image source="tilesets/beastlands.png" trans="55aaff" width="944" height="544"/>
|
||||||
|
</tileset>
|
||||||
|
<layer name="Calque de Tile 1" width="100" height="100">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,951,952,953,954,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,951,952,953,954,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,951,952,953,954,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,798,799,799,799,799,799,799,799,801,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,951,952,953,954,0,0,0,0,0,0,0,0,0,0,951,952,953,954,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,951,952,953,954,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,951,952,953,954,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,951,952,953,954,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,863,865,865,865,865,865,865,865,866,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,951,952,953,954,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,863,865,865,865,865,865,865,865,866,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,863,865,865,865,865,865,865,865,866,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,123,124,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,497,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,499,798,799,799,799,799,799,799,799,801,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,182,183,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,241,242,243,0,0,0,0,123,124,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,300,301,1243,1245,1245,1246,0,182,183,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,1299,1300,1301,1302,1303,1304,1305,1306,1307,241,242,243,0,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,1358,1359,1360,1361,1362,1363,1364,1365,1366,1243,301,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,1417,1418,1419,1420,1421,1422,1423,1424,544,544,545,546,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,1476,1477,1478,1479,1480,1481,1482,1483,603,603,604,605,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,857,858,858,858,858,858,858,858,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
443,443,1535,1536,1537,1538,1539,1540,1541,1542,603,603,604,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,
|
||||||
|
502,502,502,602,603,604,502,502,602,603,603,603,604,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<objectgroup name="block">
|
||||||
|
<properties>
|
||||||
|
<property name="item" value="coin"/>
|
||||||
|
</properties>
|
||||||
|
<object id="26" x="736" y="1392" width="144" height="48"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup name="coin">
|
||||||
|
<object id="12" x="240" y="1472" width="16" height="16"/>
|
||||||
|
<object id="13" x="272" y="1472" width="16" height="16"/>
|
||||||
|
<object id="14" x="304" y="1472" width="16" height="16"/>
|
||||||
|
<object id="15" x="352" y="1408" width="16" height="16"/>
|
||||||
|
<object id="16" x="384" y="1408" width="16" height="16"/>
|
||||||
|
<object id="17" x="416" y="1408" width="16" height="16"/>
|
||||||
|
<object id="18" x="448" y="1408" width="16" height="16"/>
|
||||||
|
<object id="19" x="144" y="1456" width="16" height="16"/>
|
||||||
|
<object id="20" x="144" y="1424" width="16" height="16"/>
|
||||||
|
<object id="21" x="144" y="1392" width="16" height="16"/>
|
||||||
|
<object id="22" x="144" y="1360" width="16" height="16"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup name="playerstart">
|
||||||
|
<object id="23" x="64" y="1472" width="32" height="32"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup name="wall">
|
||||||
|
<object id="6" x="128" y="1536" width="80" height="64"/>
|
||||||
|
<object id="7" x="48" y="1536" width="48" height="64"/>
|
||||||
|
<object id="8" x="240" y="1504" width="80" height="16"/>
|
||||||
|
<object id="10" x="352" y="1440" width="528" height="16"/>
|
||||||
|
<object id="11" x="736" y="1456" width="144" height="112"/>
|
||||||
|
<object id="25" x="736" y="1264" width="144" height="128"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup name="platform">
|
||||||
|
<object id="5" x="64" y="1504" width="96" height="32"/>
|
||||||
|
</objectgroup>
|
||||||
|
</map>
|
After Width: | Height: | Size: 133 KiB |
|
@ -0,0 +1,705 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<tileset name="base_tiles" tilewidth="16" tileheight="16" tilecount="16384" columns="128">
|
||||||
|
<image source="base_tiles.png" width="2048" height="2048"/>
|
||||||
|
<terraintypes>
|
||||||
|
<terrain name="solid" tile="-1"/>
|
||||||
|
<terrain name="hurt" tile="-1"/>
|
||||||
|
</terraintypes>
|
||||||
|
<tile id="0" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3" terrain="0,0,0,0"/>
|
||||||
|
<tile id="4" terrain="0,0,0,0"/>
|
||||||
|
<tile id="5" terrain="0,0,0,0"/>
|
||||||
|
<tile id="6" terrain="0,0,0,0"/>
|
||||||
|
<tile id="7" terrain="0,0,0,0"/>
|
||||||
|
<tile id="8" terrain="0,0,0,0"/>
|
||||||
|
<tile id="9" terrain="0,0,0,0"/>
|
||||||
|
<tile id="10" terrain="0,0,0,0"/>
|
||||||
|
<tile id="11" terrain="0,0,0,0"/>
|
||||||
|
<tile id="12" terrain="0,0,0,0"/>
|
||||||
|
<tile id="13" terrain="0,0,0,0"/>
|
||||||
|
<tile id="14" terrain="0,0,0,0"/>
|
||||||
|
<tile id="15" terrain="0,0,0,0"/>
|
||||||
|
<tile id="16" terrain="0,0,0,0"/>
|
||||||
|
<tile id="17" terrain="0,0,0,0"/>
|
||||||
|
<tile id="18" terrain="0,0,0,0"/>
|
||||||
|
<tile id="19" terrain="0,0,0,0"/>
|
||||||
|
<tile id="20" terrain="0,0,0,0"/>
|
||||||
|
<tile id="21" terrain="0,0,0,0"/>
|
||||||
|
<tile id="22" terrain="0,0,0,0"/>
|
||||||
|
<tile id="23" terrain="0,0,0,0"/>
|
||||||
|
<tile id="24" terrain="0,0,0,0"/>
|
||||||
|
<tile id="25" terrain="0,0,0,0"/>
|
||||||
|
<tile id="26" terrain="0,0,0,0"/>
|
||||||
|
<tile id="27" terrain="0,0,0,0"/>
|
||||||
|
<tile id="28" terrain="0,0,0,0"/>
|
||||||
|
<tile id="29" terrain="0,0,0,0"/>
|
||||||
|
<tile id="30" terrain="0,0,0,0"/>
|
||||||
|
<tile id="31" terrain="0,0,0,0"/>
|
||||||
|
<tile id="128" terrain="0,0,0,0"/>
|
||||||
|
<tile id="129" terrain="0,0,0,0"/>
|
||||||
|
<tile id="130" terrain="0,0,0,0"/>
|
||||||
|
<tile id="131" terrain="0,0,0,0"/>
|
||||||
|
<tile id="132" terrain="0,0,0,0"/>
|
||||||
|
<tile id="133" terrain="0,0,0,0"/>
|
||||||
|
<tile id="134" terrain="0,0,0,0"/>
|
||||||
|
<tile id="135" terrain="0,0,0,0"/>
|
||||||
|
<tile id="136" terrain="0,0,0,0"/>
|
||||||
|
<tile id="137" terrain="0,0,0,0"/>
|
||||||
|
<tile id="138" terrain="0,0,0,0"/>
|
||||||
|
<tile id="139" terrain="0,0,0,0"/>
|
||||||
|
<tile id="140" terrain="0,0,0,0"/>
|
||||||
|
<tile id="141" terrain="0,0,0,0"/>
|
||||||
|
<tile id="142" terrain="0,0,0,0"/>
|
||||||
|
<tile id="143" terrain="0,0,0,0"/>
|
||||||
|
<tile id="144" terrain="0,0,0,0"/>
|
||||||
|
<tile id="145" terrain="0,0,0,0"/>
|
||||||
|
<tile id="146" terrain="0,0,0,0"/>
|
||||||
|
<tile id="147" terrain="0,0,0,0"/>
|
||||||
|
<tile id="148" terrain="0,0,0,0"/>
|
||||||
|
<tile id="149" terrain="0,0,0,0"/>
|
||||||
|
<tile id="150" terrain="0,0,0,0"/>
|
||||||
|
<tile id="151" terrain="0,0,0,0"/>
|
||||||
|
<tile id="152" terrain="0,0,0,0"/>
|
||||||
|
<tile id="153" terrain="0,0,0,0"/>
|
||||||
|
<tile id="154" terrain="0,0,0,0"/>
|
||||||
|
<tile id="155" terrain="0,0,0,0"/>
|
||||||
|
<tile id="156" terrain="0,0,0,0"/>
|
||||||
|
<tile id="157" terrain="0,0,0,0"/>
|
||||||
|
<tile id="158" terrain="0,0,0,0"/>
|
||||||
|
<tile id="159" terrain="0,0,0,0"/>
|
||||||
|
<tile id="172" terrain=",1,,1"/>
|
||||||
|
<tile id="173" terrain="1,,1,"/>
|
||||||
|
<tile id="256" terrain="0,0,0,0"/>
|
||||||
|
<tile id="257" terrain="0,0,0,0"/>
|
||||||
|
<tile id="258" terrain="0,0,0,0"/>
|
||||||
|
<tile id="259" terrain="0,0,0,0"/>
|
||||||
|
<tile id="260" terrain="0,0,0,0"/>
|
||||||
|
<tile id="261" terrain="0,0,0,0"/>
|
||||||
|
<tile id="262" terrain="0,0,0,0"/>
|
||||||
|
<tile id="263" terrain="0,0,0,0"/>
|
||||||
|
<tile id="264" terrain="0,0,0,0"/>
|
||||||
|
<tile id="265" terrain="0,0,0,0"/>
|
||||||
|
<tile id="266" terrain="0,0,0,0"/>
|
||||||
|
<tile id="267" terrain="0,0,0,0"/>
|
||||||
|
<tile id="268" terrain="0,0,0,0"/>
|
||||||
|
<tile id="269" terrain="0,0,0,0"/>
|
||||||
|
<tile id="270" terrain="0,0,0,0"/>
|
||||||
|
<tile id="271" terrain="0,0,0,0"/>
|
||||||
|
<tile id="272" terrain="0,0,0,0"/>
|
||||||
|
<tile id="273" terrain="0,0,0,0"/>
|
||||||
|
<tile id="274" terrain="0,0,0,0"/>
|
||||||
|
<tile id="275" terrain="0,0,0,0"/>
|
||||||
|
<tile id="276" terrain="0,0,0,0"/>
|
||||||
|
<tile id="277" terrain="0,0,0,0"/>
|
||||||
|
<tile id="278" terrain="0,0,0,0"/>
|
||||||
|
<tile id="279" terrain="0,0,0,0"/>
|
||||||
|
<tile id="280" terrain="0,0,0,0"/>
|
||||||
|
<tile id="281" terrain="0,0,0,0"/>
|
||||||
|
<tile id="282" terrain="0,0,0,0"/>
|
||||||
|
<tile id="283" terrain="0,0,0,0"/>
|
||||||
|
<tile id="284" terrain="0,0,0,0"/>
|
||||||
|
<tile id="285" terrain="0,0,0,0"/>
|
||||||
|
<tile id="286" terrain="0,0,0,0"/>
|
||||||
|
<tile id="287" terrain="0,0,0,0"/>
|
||||||
|
<tile id="297" terrain=",,1,1"/>
|
||||||
|
<tile id="298" terrain="1,1,1,1"/>
|
||||||
|
<tile id="299" terrain=",,1,1"/>
|
||||||
|
<tile id="300" terrain="1,1,1,1"/>
|
||||||
|
<tile id="301" terrain="1,1,1,1"/>
|
||||||
|
<tile id="340" terrain="0,0,0,0"/>
|
||||||
|
<tile id="384" terrain="0,0,0,0"/>
|
||||||
|
<tile id="385" terrain="0,0,0,0"/>
|
||||||
|
<tile id="386" terrain="0,0,0,0"/>
|
||||||
|
<tile id="387" terrain="0,0,0,0"/>
|
||||||
|
<tile id="388" terrain="0,0,0,0"/>
|
||||||
|
<tile id="389" terrain="0,0,0,0"/>
|
||||||
|
<tile id="390" terrain="0,0,0,0"/>
|
||||||
|
<tile id="391" terrain="0,0,0,0"/>
|
||||||
|
<tile id="392" terrain="0,0,0,0"/>
|
||||||
|
<tile id="393" terrain="0,0,0,0"/>
|
||||||
|
<tile id="394" terrain="0,0,0,0"/>
|
||||||
|
<tile id="395" terrain="0,0,0,0"/>
|
||||||
|
<tile id="396" terrain="0,0,0,0"/>
|
||||||
|
<tile id="397" terrain="0,0,0,0"/>
|
||||||
|
<tile id="398" terrain="0,0,0,0"/>
|
||||||
|
<tile id="399" terrain="0,0,0,0"/>
|
||||||
|
<tile id="400" terrain="0,0,0,0"/>
|
||||||
|
<tile id="401" terrain="0,0,0,0"/>
|
||||||
|
<tile id="402" terrain="0,0,0,0"/>
|
||||||
|
<tile id="403" terrain="0,0,0,0"/>
|
||||||
|
<tile id="404" terrain="0,0,0,0"/>
|
||||||
|
<tile id="405" terrain="0,0,0,0"/>
|
||||||
|
<tile id="406" terrain="0,0,0,0"/>
|
||||||
|
<tile id="407" terrain="0,0,0,0"/>
|
||||||
|
<tile id="408" terrain="0,0,0,0"/>
|
||||||
|
<tile id="409" terrain="0,0,0,0"/>
|
||||||
|
<tile id="410" terrain="0,0,0,0"/>
|
||||||
|
<tile id="411" terrain="0,0,0,0"/>
|
||||||
|
<tile id="412" terrain="0,0,0,0"/>
|
||||||
|
<tile id="413" terrain="0,0,0,0"/>
|
||||||
|
<tile id="414" terrain="0,0,0,0"/>
|
||||||
|
<tile id="415" terrain="0,0,0,0"/>
|
||||||
|
<tile id="425" terrain="1,1,,"/>
|
||||||
|
<tile id="426" terrain="1,1,1,1"/>
|
||||||
|
<tile id="427" terrain="1,1,,"/>
|
||||||
|
<tile id="428" terrain=",1,,1"/>
|
||||||
|
<tile id="429" terrain="1,,1,"/>
|
||||||
|
<tile id="468" terrain="0,0,0,0"/>
|
||||||
|
<tile id="471" terrain="0,0,0,0"/>
|
||||||
|
<tile id="512" terrain="0,0,0,0"/>
|
||||||
|
<tile id="513" terrain="0,0,0,0"/>
|
||||||
|
<tile id="514" terrain="0,0,0,0"/>
|
||||||
|
<tile id="515" terrain="0,0,0,0"/>
|
||||||
|
<tile id="516" terrain="0,0,0,0"/>
|
||||||
|
<tile id="517" terrain="0,0,0,0"/>
|
||||||
|
<tile id="518" terrain="0,0,0,0"/>
|
||||||
|
<tile id="519" terrain="0,0,0,0"/>
|
||||||
|
<tile id="520" terrain="0,0,0,0"/>
|
||||||
|
<tile id="521" terrain="0,0,0,0"/>
|
||||||
|
<tile id="522" terrain="0,0,0,0"/>
|
||||||
|
<tile id="523" terrain="0,0,0,0"/>
|
||||||
|
<tile id="524" terrain="0,0,0,0"/>
|
||||||
|
<tile id="525" terrain="0,0,0,0"/>
|
||||||
|
<tile id="526" terrain="0,0,0,0"/>
|
||||||
|
<tile id="527" terrain="0,0,0,0"/>
|
||||||
|
<tile id="528" terrain="0,0,0,0"/>
|
||||||
|
<tile id="529" terrain="0,0,0,0"/>
|
||||||
|
<tile id="530" terrain="0,0,0,0"/>
|
||||||
|
<tile id="531" terrain="0,0,0,0"/>
|
||||||
|
<tile id="532" terrain="0,0,0,0"/>
|
||||||
|
<tile id="533" terrain="0,0,0,0"/>
|
||||||
|
<tile id="534" terrain="0,0,0,0"/>
|
||||||
|
<tile id="535" terrain="0,0,0,0"/>
|
||||||
|
<tile id="536" terrain="0,0,0,0"/>
|
||||||
|
<tile id="537" terrain="0,0,0,0"/>
|
||||||
|
<tile id="538" terrain="0,0,0,0"/>
|
||||||
|
<tile id="539" terrain="0,0,0,0"/>
|
||||||
|
<tile id="540" terrain="0,0,0,0"/>
|
||||||
|
<tile id="541" terrain="0,0,0,0"/>
|
||||||
|
<tile id="542" terrain="0,0,0,0"/>
|
||||||
|
<tile id="543" terrain="0,0,0,0"/>
|
||||||
|
<tile id="560" terrain="0,0,0,0"/>
|
||||||
|
<tile id="561" terrain="0,0,0,0"/>
|
||||||
|
<tile id="562" terrain="0,0,0,0"/>
|
||||||
|
<tile id="563" terrain="0,0,0,0"/>
|
||||||
|
<tile id="564" terrain="0,0,0,0"/>
|
||||||
|
<tile id="596" terrain="0,0,0,0"/>
|
||||||
|
<tile id="599" terrain="0,0,0,0"/>
|
||||||
|
<tile id="640" terrain="0,0,0,0"/>
|
||||||
|
<tile id="641" terrain="0,0,0,0"/>
|
||||||
|
<tile id="642" terrain="0,0,0,0"/>
|
||||||
|
<tile id="643" terrain="0,0,0,0"/>
|
||||||
|
<tile id="644" terrain="0,0,0,0"/>
|
||||||
|
<tile id="645" terrain="0,0,0,0"/>
|
||||||
|
<tile id="646" terrain="0,0,0,0"/>
|
||||||
|
<tile id="647" terrain="0,0,0,0"/>
|
||||||
|
<tile id="648" terrain="0,0,0,0"/>
|
||||||
|
<tile id="649" terrain="0,0,0,0"/>
|
||||||
|
<tile id="650" terrain="0,0,0,0"/>
|
||||||
|
<tile id="651" terrain="0,0,0,0"/>
|
||||||
|
<tile id="652" terrain="0,0,0,0"/>
|
||||||
|
<tile id="653" terrain="0,0,0,0"/>
|
||||||
|
<tile id="654" terrain="0,0,0,0"/>
|
||||||
|
<tile id="655" terrain="0,0,0,0"/>
|
||||||
|
<tile id="656" terrain="0,0,0,0"/>
|
||||||
|
<tile id="657" terrain="0,0,0,0"/>
|
||||||
|
<tile id="658" terrain="0,0,0,0"/>
|
||||||
|
<tile id="659" terrain="0,0,0,0"/>
|
||||||
|
<tile id="660" terrain="0,0,0,0"/>
|
||||||
|
<tile id="661" terrain="0,0,0,0"/>
|
||||||
|
<tile id="662" terrain="0,0,0,0"/>
|
||||||
|
<tile id="663" terrain="0,0,0,0"/>
|
||||||
|
<tile id="664" terrain="0,0,0,0"/>
|
||||||
|
<tile id="665" terrain="0,0,0,0"/>
|
||||||
|
<tile id="666" terrain="0,0,0,0"/>
|
||||||
|
<tile id="667" terrain="0,0,0,0"/>
|
||||||
|
<tile id="668" terrain="0,0,0,0"/>
|
||||||
|
<tile id="669" terrain="0,0,0,0"/>
|
||||||
|
<tile id="670" terrain="0,0,0,0"/>
|
||||||
|
<tile id="671" terrain="0,0,0,0"/>
|
||||||
|
<tile id="688" terrain="0,0,0,0"/>
|
||||||
|
<tile id="689" terrain="0,0,0,0"/>
|
||||||
|
<tile id="690" terrain="0,0,0,0"/>
|
||||||
|
<tile id="691" terrain="0,0,0,0"/>
|
||||||
|
<tile id="692" terrain="0,0,0,0"/>
|
||||||
|
<tile id="707" terrain="0,0,0,0"/>
|
||||||
|
<tile id="708" terrain="0,0,0,0"/>
|
||||||
|
<tile id="709" terrain="0,0,0,0"/>
|
||||||
|
<tile id="710" terrain="0,0,0,0"/>
|
||||||
|
<tile id="711" terrain="0,0,0,0"/>
|
||||||
|
<tile id="712" terrain="0,0,0,0"/>
|
||||||
|
<tile id="724" terrain="0,0,0,0"/>
|
||||||
|
<tile id="727" terrain="0,0,0,0"/>
|
||||||
|
<tile id="768" terrain="0,0,0,0"/>
|
||||||
|
<tile id="769" terrain="0,0,0,0"/>
|
||||||
|
<tile id="770" terrain="0,0,0,0"/>
|
||||||
|
<tile id="771" terrain="0,0,0,0"/>
|
||||||
|
<tile id="772" terrain="0,0,0,0"/>
|
||||||
|
<tile id="773" terrain="0,0,0,0"/>
|
||||||
|
<tile id="774" terrain="0,0,0,0"/>
|
||||||
|
<tile id="775" terrain="0,0,0,0"/>
|
||||||
|
<tile id="776" terrain="0,0,0,0"/>
|
||||||
|
<tile id="777" terrain="0,0,0,0"/>
|
||||||
|
<tile id="778" terrain="0,0,0,0"/>
|
||||||
|
<tile id="779" terrain="0,0,0,0"/>
|
||||||
|
<tile id="780" terrain="0,0,0,0"/>
|
||||||
|
<tile id="781" terrain="0,0,0,0"/>
|
||||||
|
<tile id="782" terrain="0,0,0,0"/>
|
||||||
|
<tile id="783" terrain="0,0,0,0"/>
|
||||||
|
<tile id="784" terrain="0,0,0,0"/>
|
||||||
|
<tile id="785" terrain="0,0,0,0"/>
|
||||||
|
<tile id="786" terrain="0,0,0,0"/>
|
||||||
|
<tile id="787" terrain="0,0,0,0"/>
|
||||||
|
<tile id="788" terrain="0,0,0,0"/>
|
||||||
|
<tile id="789" terrain="0,0,0,0"/>
|
||||||
|
<tile id="790" terrain="0,0,0,0"/>
|
||||||
|
<tile id="791" terrain="0,0,0,0"/>
|
||||||
|
<tile id="792" terrain="0,0,0,0"/>
|
||||||
|
<tile id="793" terrain="0,0,0,0"/>
|
||||||
|
<tile id="794" terrain="0,0,0,0"/>
|
||||||
|
<tile id="795" terrain="0,0,0,0"/>
|
||||||
|
<tile id="796" terrain="0,0,0,0"/>
|
||||||
|
<tile id="797" terrain="0,0,0,0"/>
|
||||||
|
<tile id="798" terrain="0,0,0,0"/>
|
||||||
|
<tile id="799" terrain="0,0,0,0"/>
|
||||||
|
<tile id="816" terrain="0,0,0,0"/>
|
||||||
|
<tile id="817" terrain="0,0,0,0"/>
|
||||||
|
<tile id="818" terrain="0,0,0,0"/>
|
||||||
|
<tile id="819" terrain="0,0,0,0"/>
|
||||||
|
<tile id="820" terrain="0,0,0,0"/>
|
||||||
|
<tile id="835" terrain="0,0,0,0"/>
|
||||||
|
<tile id="836" terrain="0,0,0,0"/>
|
||||||
|
<tile id="837" terrain="0,0,0,0"/>
|
||||||
|
<tile id="838" terrain="0,0,0,0"/>
|
||||||
|
<tile id="839" terrain="0,0,0,0"/>
|
||||||
|
<tile id="840" terrain="0,0,0,0"/>
|
||||||
|
<tile id="841" terrain="0,0,0,0"/>
|
||||||
|
<tile id="842" terrain="0,0,0,0"/>
|
||||||
|
<tile id="843" terrain="0,0,0,0"/>
|
||||||
|
<tile id="844" terrain="0,0,0,0"/>
|
||||||
|
<tile id="845" terrain="0,0,0,0"/>
|
||||||
|
<tile id="846" terrain="0,0,0,0"/>
|
||||||
|
<tile id="896" terrain="0,0,0,0"/>
|
||||||
|
<tile id="897" terrain="0,0,0,0"/>
|
||||||
|
<tile id="898" terrain="0,0,0,0"/>
|
||||||
|
<tile id="899" terrain="0,0,0,0"/>
|
||||||
|
<tile id="900" terrain="0,0,0,0"/>
|
||||||
|
<tile id="901" terrain="0,0,0,0"/>
|
||||||
|
<tile id="902" terrain="0,0,0,0"/>
|
||||||
|
<tile id="903" terrain="0,0,0,0"/>
|
||||||
|
<tile id="904" terrain="0,0,0,0"/>
|
||||||
|
<tile id="905" terrain="0,0,0,0"/>
|
||||||
|
<tile id="906" terrain="0,0,0,0"/>
|
||||||
|
<tile id="907" terrain="0,0,0,0"/>
|
||||||
|
<tile id="908" terrain="0,0,0,0"/>
|
||||||
|
<tile id="909" terrain="0,0,0,0"/>
|
||||||
|
<tile id="910" terrain="0,0,0,0"/>
|
||||||
|
<tile id="911" terrain="0,0,0,0"/>
|
||||||
|
<tile id="912" terrain="0,0,0,0"/>
|
||||||
|
<tile id="913" terrain="0,0,0,0"/>
|
||||||
|
<tile id="914" terrain="0,0,0,0"/>
|
||||||
|
<tile id="915" terrain="0,0,0,0"/>
|
||||||
|
<tile id="916" terrain="0,0,0,0"/>
|
||||||
|
<tile id="917" terrain="0,0,0,0"/>
|
||||||
|
<tile id="918" terrain="0,0,0,0"/>
|
||||||
|
<tile id="919" terrain="0,0,0,0"/>
|
||||||
|
<tile id="920" terrain="0,0,0,0"/>
|
||||||
|
<tile id="921" terrain="0,0,0,0"/>
|
||||||
|
<tile id="922" terrain="0,0,0,0"/>
|
||||||
|
<tile id="923" terrain="0,0,0,0"/>
|
||||||
|
<tile id="924" terrain="0,0,0,0"/>
|
||||||
|
<tile id="925" terrain="0,0,0,0"/>
|
||||||
|
<tile id="926" terrain="0,0,0,0"/>
|
||||||
|
<tile id="927" terrain="0,0,0,0"/>
|
||||||
|
<tile id="944" terrain="0,0,0,0"/>
|
||||||
|
<tile id="945" terrain="0,0,0,0"/>
|
||||||
|
<tile id="946" terrain="0,0,0,0"/>
|
||||||
|
<tile id="947" terrain="0,0,0,0"/>
|
||||||
|
<tile id="963" terrain="0,0,0,0"/>
|
||||||
|
<tile id="964" terrain="0,0,0,0"/>
|
||||||
|
<tile id="965" terrain="0,0,0,0"/>
|
||||||
|
<tile id="966" terrain="0,0,0,0"/>
|
||||||
|
<tile id="967" terrain="0,0,0,0"/>
|
||||||
|
<tile id="968" terrain="0,0,0,0"/>
|
||||||
|
<tile id="969" terrain="0,0,0,0"/>
|
||||||
|
<tile id="970" terrain="0,0,0,0"/>
|
||||||
|
<tile id="971" terrain="0,0,0,0"/>
|
||||||
|
<tile id="972" terrain="0,0,0,0"/>
|
||||||
|
<tile id="973" terrain="0,0,0,0"/>
|
||||||
|
<tile id="974" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1024" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1025" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1026" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1027" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1028" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1029" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1030" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1031" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1032" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1033" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1034" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1035" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1036" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1037" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1038" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1039" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1040" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1041" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1042" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1043" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1044" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1045" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1046" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1047" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1048" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1049" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1050" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1051" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1073" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1074" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1092" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1093" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1094" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1095" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1096" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1097" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1098" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1099" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1100" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1101" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1102" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1152" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1153" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1154" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1155" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1156" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1157" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1158" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1159" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1160" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1161" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1162" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1163" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1164" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1165" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1166" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1167" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1168" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1169" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1170" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1171" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1172" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1173" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1174" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1175" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1176" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1177" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1178" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1179" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1190" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1191" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1192" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1206" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1207" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1208" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1209" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1210" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1211" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1222" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1223" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1224" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1225" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1280" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1281" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1282" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1283" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1284" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1285" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1286" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1287" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1288" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1289" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1290" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1291" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1292" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1293" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1294" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1295" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1296" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1297" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1298" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1299" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1300" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1301" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1302" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1303" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1304" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1305" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1306" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1307" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1318" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1319" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1320" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1334" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1335" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1336" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1337" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1338" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1339" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1350" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1351" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1352" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1353" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1408" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1409" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1410" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1411" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1412" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1413" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1414" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1415" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1416" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1417" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1418" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1419" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1420" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1421" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1422" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1423" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1424" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1425" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1426" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1427" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1428" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1429" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1430" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1431" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1432" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1433" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1434" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1435" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1446" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1447" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1448" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1463" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1464" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1465" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1574" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1575" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1576" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1851" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1852" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1853" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1854" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1979" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1980" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1981" terrain="0,0,0,0"/>
|
||||||
|
<tile id="1982" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2001" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2002" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2003" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2004" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2005" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2006" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2007" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2123" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2129" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2130" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2131" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2132" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2133" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2134" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2135" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2229" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2230" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2231" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2251" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2254" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2257" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2258" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2259" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2260" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2261" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2262" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2263" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2357" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2358" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2359" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2377" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2378" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2379" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2380" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2381" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2382" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2385" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2386" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2387" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2388" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2389" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2390" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2391" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2490" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2491" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2492" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2493" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2505" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2506" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2507" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2508" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2509" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2510" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2513" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2514" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2515" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2516" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2517" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2518" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2519" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2618" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2619" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2620" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2621" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2623" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2627" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2628" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2631" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2632" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2633" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2634" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2635" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2636" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2637" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2638" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2641" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2642" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2643" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2644" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2645" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2646" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2647" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2736" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2737" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2738" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2739" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2740" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2741" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2742" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2743" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2744" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2745" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2746" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2747" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2748" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2749" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2750" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2751" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2752" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2753" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2754" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2755" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2756" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2757" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2758" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2759" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2760" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2761" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2762" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2763" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2764" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2765" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2766" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2767" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2768" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2769" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2770" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2771" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2772" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2773" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2774" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2775" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2864" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2865" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2866" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2867" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2868" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2869" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2870" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2871" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2872" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2873" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2874" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2875" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2876" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2877" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2878" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2879" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2880" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2881" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2882" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2883" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2884" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2885" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2886" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2887" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2888" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2889" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2890" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2891" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2892" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2893" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2894" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2895" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2896" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2897" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2898" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2899" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2900" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2901" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2902" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2903" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2992" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2993" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2994" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2995" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2996" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2997" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2998" terrain="0,0,0,0"/>
|
||||||
|
<tile id="2999" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3000" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3001" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3002" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3003" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3004" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3005" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3006" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3007" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3008" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3009" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3010" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3011" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3012" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3013" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3014" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3015" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3016" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3017" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3018" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3019" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3020" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3021" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3022" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3023" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3024" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3025" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3026" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3027" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3028" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3029" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3030" terrain="0,0,0,0"/>
|
||||||
|
<tile id="3031" terrain="0,0,0,0"/>
|
||||||
|
<tile id="7698" terrain="0,0,0,0"/>
|
||||||
|
<tile id="7826" terrain=",0,,"/>
|
||||||
|
<tile id="7827" terrain="0,0,,0"/>
|
||||||
|
</tileset>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<tileset name="beastlands" tilewidth="16" tileheight="16" tilecount="2006" columns="59">
|
||||||
|
<image source="beastlands.png" trans="55aaff" width="944" height="544"/>
|
||||||
|
</tileset>
|
After Width: | Height: | Size: 26 KiB |
|
@ -0,0 +1,13 @@
|
||||||
|
# Imperium Porcorum :: assets.tileset
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
- **beastlands.png** :: from [Beastlands](https://opengameart.org/content/beastlands) set by Surt, under CC-BY 3.0
|
||||||
|
|
||||||
|
- **plastic_shamtastic.png** and **plastic_shastastic_alt_palette.png** :: from [Plastic Shamtastic](https://opengameart.org/content/plastic-shamtastic) set by Surt, under CC-BY 3.0
|
||||||
|
|
||||||
|
- **monkeylad_further.png** :: from [Monkey Lad in Magical Planet](https://opengameart.org/content/monkey-lad-in-magical-planet) set by Surt, under CC-BY 3.0
|
||||||
|
|
||||||
|
- **psygen.png** :: from [Psygen](https://opengameart.org/content/psygen) set by Surt, under CC-BY 3.0
|
||||||
|
|
||||||
|
- **space_merc.png** :: from [Space Merc](https://opengameart.org/content/space-merc) set by Surt, under CC-BY 3.0
|
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 434 B |
|
@ -0,0 +1,32 @@
|
||||||
|
# Gosth Island - Credits
|
||||||
|
|
||||||
|
## Musics
|
||||||
|
|
||||||
|
### Di Rodrigues (taken from opensonic)
|
||||||
|
|
||||||
|
- title.ogg (CC-BY-SA 3.0)
|
||||||
|
- options.ogg (CC-BY-SA 3.0)
|
||||||
|
- speed.ogg (CC-BY-SA 3.0)
|
||||||
|
- invincible.ogg (CC-BY-SA 3.0)
|
||||||
|
- 1up.ogg (CC-BY-SA 3.0)
|
||||||
|
- goal.ogg (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
SilverstepP and Joepotato28 (taken from opensonic)
|
||||||
|
|
||||||
|
- boss.ogg (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
### [jobromedia](http://opengameart.org/users/jobromedia)
|
||||||
|
|
||||||
|
- options2.ogg (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- sharp.ogg (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- Bumblebee under pressure.ogg (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- Bumblebee loop.ogg (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- Sunny Paradise act 1.mp3 (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- Sunny Paradise act 2.mp3 (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- Metropolis Rush.ogg (CC-BY-SA 3.0)
|
|
@ -0,0 +1,35 @@
|
||||||
|
# Credits
|
||||||
|
|
||||||
|
## Mateus Reis
|
||||||
|
|
||||||
|
- break.wav (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- checkpoint.wav (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- jump.wav (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- spring.wav (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
## SilverstepP
|
||||||
|
|
||||||
|
- shield.wav (GPL)
|
||||||
|
|
||||||
|
- acidshield.wav (GPL)
|
||||||
|
|
||||||
|
- fireshield.wav (GPL)
|
||||||
|
|
||||||
|
- thundershield.wav (GPL)
|
||||||
|
|
||||||
|
- watershield.wav (GPL)
|
||||||
|
|
||||||
|
- windshield.wav (GPL)
|
||||||
|
|
||||||
|
## Alexandre
|
||||||
|
|
||||||
|
- spikes_appearing.wav (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
- spikes_disappearing.wav (CC-BY-SA 3.0)
|
||||||
|
|
||||||
|
## Supertux
|
||||||
|
|
||||||
|
- collectcoin.wav (GPL v2)
|
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,17 @@
|
||||||
|
# Imperium Porcorum :: assets/sprites/
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
- **emblem.png** :: based on assets from the [Heraldry project](https://fr.wikipedia.org/wiki/Projet:Blasons) from Wikipedia, under CC BY-SA
|
||||||
|
|
||||||
|
- **coin.png** :: based on the [Tux Bros](https://opengameart.org/content/tux-bros) art from surt, under GPL
|
||||||
|
|
||||||
|
- **weapon.png** :: based on the [16×16 Fantasy Tileset](https://opengameart.org/content/16x16-fantasy-tileset) from Jerom (under CC BY-SA), the [Recolor All The Items](https://opengameart.org/content/recolor-all-the-items) set from Priorblue (based on work from Jerom, 7souls, Dungeon Crawl Soup and using the Dawnbringer palette) (under CC BY-SA) and the [DawnLike](https://opengameart.org/content/dawnlike-16x16-universal-rogue-like-tileset-v181) set from DragonDePlatino using the Dawnbringer palette)
|
||||||
|
|
||||||
|
- **cochon.png** :: original work, by Kazhnuz (under CC BY-SA 3.0)
|
||||||
|
|
||||||
|
- **debris.png** :: origina work, by Kazhnuz (under CC0)
|
||||||
|
|
||||||
|
- **block.png** :: from [Monkey Lad in Magical Planet](https://opengameart.org/content/monkey-lad-in-magical-planet) set by Surt, under CC-BY 3.0
|
||||||
|
|
||||||
|
- **poof.png** :: from [Items and Content](https://opengameart.org/content/items-and-elements) set by GrafxKid, under CC0
|
After Width: | Height: | Size: 280 B |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 316 B |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 363 B |
After Width: | Height: | Size: 223 B |
After Width: | Height: | Size: 230 B |
After Width: | Height: | Size: 225 B |
After Width: | Height: | Size: 288 B |
After Width: | Height: | Size: 286 B |
After Width: | Height: | Size: 290 B |
After Width: | Height: | Size: 284 B |
After Width: | Height: | Size: 914 B |
After Width: | Height: | Size: 790 B |
After Width: | Height: | Size: 345 B |
After Width: | Height: | Size: 790 B |
After Width: | Height: | Size: 580 B |
After Width: | Height: | Size: 520 B |
After Width: | Height: | Size: 6.3 KiB |
|
@ -0,0 +1,41 @@
|
||||||
|
function love.conf(t)
|
||||||
|
t.identity = nil -- The name of the save directory (string)
|
||||||
|
t.version = "0.10.1" -- The LÖVE version this game was made for (string)
|
||||||
|
t.console = false -- Attach a console (boolean, Windows only)
|
||||||
|
t.accelerometerjoystick = false -- Enable the accelerometer on iOS and Android by exposing it as a Joystick (boolean)
|
||||||
|
t.gammacorrect = false -- Enable gamma-correct rendering, when supported by the system (boolean)
|
||||||
|
|
||||||
|
t.window.title = "Imperium Porcorum" -- The window title (string)
|
||||||
|
t.window.icon = nil -- Filepath to an image to use as the window's icon (string)
|
||||||
|
t.window.width = 480*2 -- The window width (number)
|
||||||
|
t.window.height = 272*2 -- The window height (number)
|
||||||
|
t.window.borderless = false -- Remove all border visuals from the window (boolean)
|
||||||
|
t.window.resizable = false -- Let the window be user-resizable (boolean)
|
||||||
|
t.window.minwidth = 1 -- Minimum window width if the window is resizable (number)
|
||||||
|
t.window.minheight = 1 -- Minimum window height if the window is resizable (number)
|
||||||
|
t.window.fullscreen = false -- Enable fullscreen (boolean)
|
||||||
|
t.window.fullscreentype = "desktop" -- Choose between "desktop" fullscreen or "exclusive" fullscreen mode (string)
|
||||||
|
t.window.vsync = true -- Enable vertical sync (boolean)
|
||||||
|
t.window.msaa = 0 -- The number of samples to use with multi-sampled antialiasing (number)
|
||||||
|
t.window.display = 1 -- Index of the monitor to show the window in (number)
|
||||||
|
t.window.highdpi = false -- Enable high-dpi mode for the window on a Retina display (boolean)
|
||||||
|
t.window.x = nil -- The x-coordinate of the window's position in the specified display (number)
|
||||||
|
t.window.y = nil -- The y-coordinate of the window's position in the specified display (number)
|
||||||
|
|
||||||
|
t.modules.audio = true -- Enable the audio module (boolean)
|
||||||
|
t.modules.event = true -- Enable the event module (boolean)
|
||||||
|
t.modules.graphics = true -- Enable the graphics module (boolean)
|
||||||
|
t.modules.image = true -- Enable the image module (boolean)
|
||||||
|
t.modules.joystick = true -- Enable the joystick module (boolean)
|
||||||
|
t.modules.keyboard = true -- Enable the keyboard module (boolean)
|
||||||
|
t.modules.math = true -- Enable the math module (boolean)
|
||||||
|
t.modules.mouse = true -- Enable the mouse module (boolean)
|
||||||
|
t.modules.physics = true -- Enable the physics module (boolean)
|
||||||
|
t.modules.sound = true -- Enable the sound module (boolean)
|
||||||
|
t.modules.system = true -- Enable the system module (boolean)
|
||||||
|
t.modules.timer = true -- Enable the timer module (boolean), Disabling it will result 0 delta time in love.update
|
||||||
|
t.modules.touch = true -- Enable the touch module (boolean)
|
||||||
|
t.modules.video = true -- Enable the video module (boolean)
|
||||||
|
t.modules.window = true -- Enable the window module (boolean)
|
||||||
|
t.modules.thread = true -- Enable the thread module (boolean)
|
||||||
|
end
|
|
@ -0,0 +1,4 @@
|
||||||
|
return {
|
||||||
|
["cochon"] = {},
|
||||||
|
["bling-bling"] = {},
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
return {
|
||||||
|
["coin"] = {w = 16, h = 16},
|
||||||
|
["block"] = {w = 16, h = 16},
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
Datas = {}
|
||||||
|
|
||||||
|
Datas.levels = require "datas.levels"
|
||||||
|
Datas.layers = require "datas.layers"
|
||||||
|
Datas.entities = require "datas.entities"
|
||||||
|
Datas.vpad = require "datas.vpad"
|
||||||
|
|
||||||
|
return Datas
|
|
@ -0,0 +1,3 @@
|
||||||
|
return {
|
||||||
|
"wall", "platform", "water"
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
return {
|
||||||
|
[1] = {
|
||||||
|
realm = "Mystery Zone",
|
||||||
|
name = "Test Level",
|
||||||
|
missions = {
|
||||||
|
[1] = {
|
||||||
|
missionName = "GameTest",
|
||||||
|
description = "Test and debug the game !",
|
||||||
|
mapfile = "test-map2",
|
||||||
|
music = "",
|
||||||
|
gravity = 0,
|
||||||
|
autorun = 0,
|
||||||
|
objectiveID = 0,
|
||||||
|
startx = 48,
|
||||||
|
starty = 272/2,
|
||||||
|
music = "sunnyparadise1.mp3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
["left"] = "left",
|
||||||
|
["right"] = "right",
|
||||||
|
["up"] = "up",
|
||||||
|
["down"] = "down",
|
||||||
|
["A"] = "a",
|
||||||
|
["B"] = "z",
|
||||||
|
["C"] = "e",
|
||||||
|
["start"] = "return",
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,302 @@
|
||||||
|
local anim8 = {
|
||||||
|
_VERSION = 'anim8 v2.3.0',
|
||||||
|
_DESCRIPTION = 'An animation library for LÖVE',
|
||||||
|
_URL = 'https://github.com/kikito/anim8',
|
||||||
|
_LICENSE = [[
|
||||||
|
MIT LICENSE
|
||||||
|
|
||||||
|
Copyright (c) 2011 Enrique García Cota
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
]]
|
||||||
|
}
|
||||||
|
|
||||||
|
local Grid = {}
|
||||||
|
|
||||||
|
local _frames = {}
|
||||||
|
|
||||||
|
local function assertPositiveInteger(value, name)
|
||||||
|
if type(value) ~= 'number' then error(("%s should be a number, was %q"):format(name, tostring(value))) end
|
||||||
|
if value < 1 then error(("%s should be a positive number, was %d"):format(name, value)) end
|
||||||
|
if value ~= math.floor(value) then error(("%s should be an integer, was %d"):format(name, value)) end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function createFrame(self, x, y)
|
||||||
|
local fw, fh = self.frameWidth, self.frameHeight
|
||||||
|
return love.graphics.newQuad(
|
||||||
|
self.left + (x-1) * fw + x * self.border,
|
||||||
|
self.top + (y-1) * fh + y * self.border,
|
||||||
|
fw,
|
||||||
|
fh,
|
||||||
|
self.imageWidth,
|
||||||
|
self.imageHeight
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function getGridKey(...)
|
||||||
|
return table.concat( {...} ,'-' )
|
||||||
|
end
|
||||||
|
|
||||||
|
local function getOrCreateFrame(self, x, y)
|
||||||
|
if x < 1 or x > self.width or y < 1 or y > self.height then
|
||||||
|
error(("There is no frame for x=%d, y=%d"):format(x, y))
|
||||||
|
end
|
||||||
|
local key = self._key
|
||||||
|
_frames[key] = _frames[key] or {}
|
||||||
|
_frames[key][x] = _frames[key][x] or {}
|
||||||
|
_frames[key][x][y] = _frames[key][x][y] or createFrame(self, x, y)
|
||||||
|
return _frames[key][x][y]
|
||||||
|
end
|
||||||
|
|
||||||
|
local function parseInterval(str)
|
||||||
|
if type(str) == "number" then return str,str,1 end
|
||||||
|
str = str:gsub('%s', '') -- remove spaces
|
||||||
|
local min, max = str:match("^(%d+)-(%d+)$")
|
||||||
|
assert(min and max, ("Could not parse interval from %q"):format(str))
|
||||||
|
min, max = tonumber(min), tonumber(max)
|
||||||
|
local step = min <= max and 1 or -1
|
||||||
|
return min, max, step
|
||||||
|
end
|
||||||
|
|
||||||
|
function Grid:getFrames(...)
|
||||||
|
local result, args = {}, {...}
|
||||||
|
local minx, maxx, stepx, miny, maxy, stepy
|
||||||
|
|
||||||
|
for i=1, #args, 2 do
|
||||||
|
minx, maxx, stepx = parseInterval(args[i])
|
||||||
|
miny, maxy, stepy = parseInterval(args[i+1])
|
||||||
|
for y = miny, maxy, stepy do
|
||||||
|
for x = minx, maxx, stepx do
|
||||||
|
result[#result+1] = getOrCreateFrame(self,x,y)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
local Gridmt = {
|
||||||
|
__index = Grid,
|
||||||
|
__call = Grid.getFrames
|
||||||
|
}
|
||||||
|
|
||||||
|
local function newGrid(frameWidth, frameHeight, imageWidth, imageHeight, left, top, border)
|
||||||
|
assertPositiveInteger(frameWidth, "frameWidth")
|
||||||
|
assertPositiveInteger(frameHeight, "frameHeight")
|
||||||
|
assertPositiveInteger(imageWidth, "imageWidth")
|
||||||
|
assertPositiveInteger(imageHeight, "imageHeight")
|
||||||
|
|
||||||
|
left = left or 0
|
||||||
|
top = top or 0
|
||||||
|
border = border or 0
|
||||||
|
|
||||||
|
local key = getGridKey(frameWidth, frameHeight, imageWidth, imageHeight, left, top, border)
|
||||||
|
|
||||||
|
local grid = setmetatable(
|
||||||
|
{ frameWidth = frameWidth,
|
||||||
|
frameHeight = frameHeight,
|
||||||
|
imageWidth = imageWidth,
|
||||||
|
imageHeight = imageHeight,
|
||||||
|
left = left,
|
||||||
|
top = top,
|
||||||
|
border = border,
|
||||||
|
width = math.floor(imageWidth/frameWidth),
|
||||||
|
height = math.floor(imageHeight/frameHeight),
|
||||||
|
_key = key
|
||||||
|
},
|
||||||
|
Gridmt
|
||||||
|
)
|
||||||
|
return grid
|
||||||
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
local Animation = {}
|
||||||
|
|
||||||
|
local function cloneArray(arr)
|
||||||
|
local result = {}
|
||||||
|
for i=1,#arr do result[i] = arr[i] end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
local function parseDurations(durations, frameCount)
|
||||||
|
local result = {}
|
||||||
|
if type(durations) == 'number' then
|
||||||
|
for i=1,frameCount do result[i] = durations end
|
||||||
|
else
|
||||||
|
local min, max, step
|
||||||
|
for key,duration in pairs(durations) do
|
||||||
|
assert(type(duration) == 'number', "The value [" .. tostring(duration) .. "] should be a number")
|
||||||
|
min, max, step = parseInterval(key)
|
||||||
|
for i = min,max,step do result[i] = duration end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if #result < frameCount then
|
||||||
|
error("The durations table has length of " .. tostring(#result) .. ", but it should be >= " .. tostring(frameCount))
|
||||||
|
end
|
||||||
|
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
local function parseIntervals(durations)
|
||||||
|
local result, time = {0},0
|
||||||
|
for i=1,#durations do
|
||||||
|
time = time + durations[i]
|
||||||
|
result[i+1] = time
|
||||||
|
end
|
||||||
|
return result, time
|
||||||
|
end
|
||||||
|
|
||||||
|
local Animationmt = { __index = Animation }
|
||||||
|
local nop = function() end
|
||||||
|
|
||||||
|
local function newAnimation(frames, durations, onLoop)
|
||||||
|
local td = type(durations);
|
||||||
|
if (td ~= 'number' or durations <= 0) and td ~= 'table' then
|
||||||
|
error("durations must be a positive number. Was " .. tostring(durations) )
|
||||||
|
end
|
||||||
|
onLoop = onLoop or nop
|
||||||
|
durations = parseDurations(durations, #frames)
|
||||||
|
local intervals, totalDuration = parseIntervals(durations)
|
||||||
|
return setmetatable({
|
||||||
|
frames = cloneArray(frames),
|
||||||
|
durations = durations,
|
||||||
|
intervals = intervals,
|
||||||
|
totalDuration = totalDuration,
|
||||||
|
onLoop = onLoop,
|
||||||
|
timer = 0,
|
||||||
|
position = 1,
|
||||||
|
status = "playing",
|
||||||
|
flippedH = false,
|
||||||
|
flippedV = false
|
||||||
|
},
|
||||||
|
Animationmt
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:clone()
|
||||||
|
local newAnim = newAnimation(self.frames, self.durations, self.onLoop)
|
||||||
|
newAnim.flippedH, newAnim.flippedV = self.flippedH, self.flippedV
|
||||||
|
return newAnim
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:flipH()
|
||||||
|
self.flippedH = not self.flippedH
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:flipV()
|
||||||
|
self.flippedV = not self.flippedV
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
local function seekFrameIndex(intervals, timer)
|
||||||
|
local high, low, i = #intervals-1, 1, 1
|
||||||
|
|
||||||
|
while(low <= high) do
|
||||||
|
i = math.floor((low + high) / 2)
|
||||||
|
if timer > intervals[i+1] then low = i + 1
|
||||||
|
elseif timer <= intervals[i] then high = i - 1
|
||||||
|
else
|
||||||
|
return i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return i
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:update(dt)
|
||||||
|
if self.status ~= "playing" then return end
|
||||||
|
|
||||||
|
self.timer = self.timer + dt
|
||||||
|
local loops = math.floor(self.timer / self.totalDuration)
|
||||||
|
if loops ~= 0 then
|
||||||
|
self.timer = self.timer - self.totalDuration * loops
|
||||||
|
local f = type(self.onLoop) == 'function' and self.onLoop or self[self.onLoop]
|
||||||
|
f(self, loops)
|
||||||
|
end
|
||||||
|
|
||||||
|
self.position = seekFrameIndex(self.intervals, self.timer)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:pause()
|
||||||
|
self.status = "paused"
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:gotoFrame(position)
|
||||||
|
self.position = position
|
||||||
|
self.timer = self.intervals[self.position]
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:pauseAtEnd()
|
||||||
|
self.position = #self.frames
|
||||||
|
self.timer = self.totalDuration
|
||||||
|
self:pause()
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:pauseAtStart()
|
||||||
|
self.position = 1
|
||||||
|
self.timer = 0
|
||||||
|
self:pause()
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:resume()
|
||||||
|
self.status = "playing"
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:draw(image, x, y, r, sx, sy, ox, oy, kx, ky)
|
||||||
|
love.graphics.draw(image, self:getFrameInfo(x, y, r, sx, sy, ox, oy, kx, ky))
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:getFrameInfo(x, y, r, sx, sy, ox, oy, kx, ky)
|
||||||
|
local frame = self.frames[self.position]
|
||||||
|
if self.flippedH or self.flippedV then
|
||||||
|
r,sx,sy,ox,oy,kx,ky = r or 0, sx or 1, sy or 1, ox or 0, oy or 0, kx or 0, ky or 0
|
||||||
|
local _,_,w,h = frame:getViewport()
|
||||||
|
|
||||||
|
if self.flippedH then
|
||||||
|
sx = sx * -1
|
||||||
|
ox = w - ox
|
||||||
|
kx = kx * -1
|
||||||
|
ky = ky * -1
|
||||||
|
end
|
||||||
|
|
||||||
|
if self.flippedV then
|
||||||
|
sy = sy * -1
|
||||||
|
oy = h - oy
|
||||||
|
kx = kx * -1
|
||||||
|
ky = ky * -1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return frame, x, y, r, sx, sy, ox, oy, kx, ky
|
||||||
|
end
|
||||||
|
|
||||||
|
function Animation:getDimensions()
|
||||||
|
local _,_,w,h = self.frames[self.position]:getViewport()
|
||||||
|
return w,h
|
||||||
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
anim8.newGrid = newGrid
|
||||||
|
anim8.newAnimation = newAnimation
|
||||||
|
|
||||||
|
return anim8
|
|
@ -0,0 +1,9 @@
|
||||||
|
local AssetManager = Object:extend()
|
||||||
|
|
||||||
|
local SoundManager = "libs.assets.sfx"
|
||||||
|
|
||||||
|
function AssetManager:new()
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
return AssetManager
|
|
@ -0,0 +1,12 @@
|
||||||
|
local SoundManager = Object:extend()
|
||||||
|
local SFX = Object:extend()
|
||||||
|
|
||||||
|
function SoundManager:new()
|
||||||
|
self.datas = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function SoundManager:addSFX()
|
||||||
|
self.datas = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
return SoundManager
|
|
@ -0,0 +1,687 @@
|
||||||
|
-- binser.lua
|
||||||
|
|
||||||
|
--[[
|
||||||
|
Copyright (c) 2016 Calvin Rose
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
]]
|
||||||
|
|
||||||
|
local assert = assert
|
||||||
|
local error = error
|
||||||
|
local select = select
|
||||||
|
local pairs = pairs
|
||||||
|
local getmetatable = getmetatable
|
||||||
|
local setmetatable = setmetatable
|
||||||
|
local tonumber = tonumber
|
||||||
|
local type = type
|
||||||
|
local loadstring = loadstring or load
|
||||||
|
local concat = table.concat
|
||||||
|
local char = string.char
|
||||||
|
local byte = string.byte
|
||||||
|
local format = string.format
|
||||||
|
local sub = string.sub
|
||||||
|
local dump = string.dump
|
||||||
|
local floor = math.floor
|
||||||
|
local frexp = math.frexp
|
||||||
|
local unpack = unpack or table.unpack
|
||||||
|
|
||||||
|
-- Lua 5.3 frexp polyfill
|
||||||
|
-- From https://github.com/excessive/cpml/blob/master/modules/utils.lua
|
||||||
|
if not frexp then
|
||||||
|
local log, abs, floor = math.log, math.abs, math.floor
|
||||||
|
local log2 = log(2)
|
||||||
|
frexp = function(x)
|
||||||
|
if x == 0 then return 0, 0 end
|
||||||
|
local e = floor(log(abs(x)) / log2 + 1)
|
||||||
|
return x / 2 ^ e, e
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- NIL = 202
|
||||||
|
-- FLOAT = 203
|
||||||
|
-- TRUE = 204
|
||||||
|
-- FALSE = 205
|
||||||
|
-- STRING = 206
|
||||||
|
-- TABLE = 207
|
||||||
|
-- REFERENCE = 208
|
||||||
|
-- CONSTRUCTOR = 209
|
||||||
|
-- FUNCTION = 210
|
||||||
|
-- RESOURCE = 211
|
||||||
|
-- INT64 = 212
|
||||||
|
|
||||||
|
local mts = {}
|
||||||
|
local ids = {}
|
||||||
|
local serializers = {}
|
||||||
|
local deserializers = {}
|
||||||
|
local resources = {}
|
||||||
|
local resources_by_name = {}
|
||||||
|
|
||||||
|
local function pack(...)
|
||||||
|
return {...}, select("#", ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function not_array_index(x, len)
|
||||||
|
return type(x) ~= "number" or x < 1 or x > len or x ~= floor(x)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function type_check(x, tp, name)
|
||||||
|
assert(type(x) == tp,
|
||||||
|
format("Expected parameter %q to be of type %q.", name, tp))
|
||||||
|
end
|
||||||
|
|
||||||
|
local bigIntSupport = false
|
||||||
|
local isInteger
|
||||||
|
if math.type then -- Detect Lua 5.3
|
||||||
|
local mtype = math.type
|
||||||
|
bigIntSupport = loadstring[[
|
||||||
|
local char = string.char
|
||||||
|
return function(n)
|
||||||
|
local nn = n < 0 and -(n + 1) or n
|
||||||
|
local b1 = nn // 0x100000000000000
|
||||||
|
local b2 = nn // 0x1000000000000 % 0x100
|
||||||
|
local b3 = nn // 0x10000000000 % 0x100
|
||||||
|
local b4 = nn // 0x100000000 % 0x100
|
||||||
|
local b5 = nn // 0x1000000 % 0x100
|
||||||
|
local b6 = nn // 0x10000 % 0x100
|
||||||
|
local b7 = nn // 0x100 % 0x100
|
||||||
|
local b8 = nn % 0x100
|
||||||
|
if n < 0 then
|
||||||
|
b1, b2, b3, b4 = 0xFF - b1, 0xFF - b2, 0xFF - b3, 0xFF - b4
|
||||||
|
b5, b6, b7, b8 = 0xFF - b5, 0xFF - b6, 0xFF - b7, 0xFF - b8
|
||||||
|
end
|
||||||
|
return char(212, b1, b2, b3, b4, b5, b6, b7, b8)
|
||||||
|
end]]()
|
||||||
|
isInteger = function(x)
|
||||||
|
return mtype(x) == 'integer'
|
||||||
|
end
|
||||||
|
else
|
||||||
|
isInteger = function(x)
|
||||||
|
return floor(x) == x
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Copyright (C) 2012-2015 Francois Perrad.
|
||||||
|
-- number serialization code modified from https://github.com/fperrad/lua-MessagePack
|
||||||
|
-- Encode a number as a big-endian ieee-754 double, big-endian signed 64 bit integer, or a small integer
|
||||||
|
local function number_to_str(n)
|
||||||
|
if isInteger(n) then -- int
|
||||||
|
if n <= 100 and n >= -27 then -- 1 byte, 7 bits of data
|
||||||
|
return char(n + 27)
|
||||||
|
elseif n <= 8191 and n >= -8192 then -- 2 bytes, 14 bits of data
|
||||||
|
n = n + 8192
|
||||||
|
return char(128 + (floor(n / 0x100) % 0x100), n % 0x100)
|
||||||
|
elseif bigIntSupport then
|
||||||
|
return bigIntSupport(n)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local sign = 0
|
||||||
|
if n < 0.0 then
|
||||||
|
sign = 0x80
|
||||||
|
n = -n
|
||||||
|
end
|
||||||
|
local m, e = frexp(n) -- mantissa, exponent
|
||||||
|
if m ~= m then
|
||||||
|
return char(203, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
|
||||||
|
elseif m == 1/0 then
|
||||||
|
if sign == 0 then
|
||||||
|
return char(203, 0x7F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
|
||||||
|
else
|
||||||
|
return char(203, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
e = e + 0x3FE
|
||||||
|
if e < 1 then -- denormalized numbers
|
||||||
|
m = m * 2 ^ (52 + e)
|
||||||
|
e = 0
|
||||||
|
else
|
||||||
|
m = (m * 2 - 1) * 2 ^ 52
|
||||||
|
end
|
||||||
|
return char(203,
|
||||||
|
sign + floor(e / 0x10),
|
||||||
|
(e % 0x10) * 0x10 + floor(m / 0x1000000000000),
|
||||||
|
floor(m / 0x10000000000) % 0x100,
|
||||||
|
floor(m / 0x100000000) % 0x100,
|
||||||
|
floor(m / 0x1000000) % 0x100,
|
||||||
|
floor(m / 0x10000) % 0x100,
|
||||||
|
floor(m / 0x100) % 0x100,
|
||||||
|
m % 0x100)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Copyright (C) 2012-2015 Francois Perrad.
|
||||||
|
-- number deserialization code also modified from https://github.com/fperrad/lua-MessagePack
|
||||||
|
local function number_from_str(str, index)
|
||||||
|
local b = byte(str, index)
|
||||||
|
if b < 128 then
|
||||||
|
return b - 27, index + 1
|
||||||
|
elseif b < 192 then
|
||||||
|
return byte(str, index + 1) + 0x100 * (b - 128) - 8192, index + 2
|
||||||
|
end
|
||||||
|
local b1, b2, b3, b4, b5, b6, b7, b8 = byte(str, index + 1, index + 8)
|
||||||
|
if b == 212 then
|
||||||
|
local flip = b1 >= 128
|
||||||
|
if flip then -- negative
|
||||||
|
b1, b2, b3, b4 = 0xFF - b1, 0xFF - b2, 0xFF - b3, 0xFF - b4
|
||||||
|
b5, b6, b7, b8 = 0xFF - b5, 0xFF - b6, 0xFF - b7, 0xFF - b8
|
||||||
|
end
|
||||||
|
local n = ((((((b1 * 0x100 + b2) * 0x100 + b3) * 0x100 + b4) * 0x100 + b5) * 0x100 + b6) * 0x100 + b7) * 0x100 + b8
|
||||||
|
if flip then
|
||||||
|
return (-n) - 1, index + 9
|
||||||
|
else
|
||||||
|
return n, index + 9
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local sign = b1 > 0x7F and -1 or 1
|
||||||
|
local e = (b1 % 0x80) * 0x10 + floor(b2 / 0x10)
|
||||||
|
local m = ((((((b2 % 0x10) * 0x100 + b3) * 0x100 + b4) * 0x100 + b5) * 0x100 + b6) * 0x100 + b7) * 0x100 + b8
|
||||||
|
local n
|
||||||
|
if e == 0 then
|
||||||
|
if m == 0 then
|
||||||
|
n = sign * 0.0
|
||||||
|
else
|
||||||
|
n = sign * (m / 2 ^ 52) * 2 ^ -1022
|
||||||
|
end
|
||||||
|
elseif e == 0x7FF then
|
||||||
|
if m == 0 then
|
||||||
|
n = sign * (1/0)
|
||||||
|
else
|
||||||
|
n = 0.0/0.0
|
||||||
|
end
|
||||||
|
else
|
||||||
|
n = sign * (1.0 + m / 2 ^ 52) * 2 ^ (e - 0x3FF)
|
||||||
|
end
|
||||||
|
return n, index + 9
|
||||||
|
end
|
||||||
|
|
||||||
|
local types = {}
|
||||||
|
|
||||||
|
types["nil"] = function(x, visited, accum)
|
||||||
|
accum[#accum + 1] = "\202"
|
||||||
|
end
|
||||||
|
|
||||||
|
function types.number(x, visited, accum)
|
||||||
|
accum[#accum + 1] = number_to_str(x)
|
||||||
|
end
|
||||||
|
|
||||||
|
function types.boolean(x, visited, accum)
|
||||||
|
accum[#accum + 1] = x and "\204" or "\205"
|
||||||
|
end
|
||||||
|
|
||||||
|
function types.string(x, visited, accum)
|
||||||
|
local alen = #accum
|
||||||
|
if visited[x] then
|
||||||
|
accum[alen + 1] = "\208"
|
||||||
|
accum[alen + 2] = number_to_str(visited[x])
|
||||||
|
else
|
||||||
|
visited[x] = visited.next
|
||||||
|
visited.next = visited.next + 1
|
||||||
|
accum[alen + 1] = "\206"
|
||||||
|
accum[alen + 2] = number_to_str(#x)
|
||||||
|
accum[alen + 3] = x
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function check_custom_type(x, visited, accum)
|
||||||
|
local res = resources[x]
|
||||||
|
if res then
|
||||||
|
accum[#accum + 1] = "\211"
|
||||||
|
types[type(res)](res, visited, accum)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
local mt = getmetatable(x)
|
||||||
|
local id = mt and ids[mt]
|
||||||
|
if id then
|
||||||
|
if x == visited.temp then
|
||||||
|
error("Infinite loop in constructor.")
|
||||||
|
end
|
||||||
|
visited.temp = x
|
||||||
|
accum[#accum + 1] = "\209"
|
||||||
|
types[type(id)](id, visited, accum)
|
||||||
|
local args, len = pack(serializers[id](x))
|
||||||
|
accum[#accum + 1] = number_to_str(len)
|
||||||
|
for i = 1, len do
|
||||||
|
local arg = args[i]
|
||||||
|
types[type(arg)](arg, visited, accum)
|
||||||
|
end
|
||||||
|
visited[x] = visited.next
|
||||||
|
visited.next = visited.next + 1
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function types.userdata(x, visited, accum)
|
||||||
|
if visited[x] then
|
||||||
|
accum[#accum + 1] = "\208"
|
||||||
|
accum[#accum + 1] = number_to_str(visited[x])
|
||||||
|
else
|
||||||
|
if check_custom_type(x, visited, accum) then return end
|
||||||
|
error("Cannot serialize this userdata.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function types.table(x, visited, accum)
|
||||||
|
if visited[x] then
|
||||||
|
accum[#accum + 1] = "\208"
|
||||||
|
accum[#accum + 1] = number_to_str(visited[x])
|
||||||
|
else
|
||||||
|
if check_custom_type(x, visited, accum) then return end
|
||||||
|
visited[x] = visited.next
|
||||||
|
visited.next = visited.next + 1
|
||||||
|
local xlen = #x
|
||||||
|
accum[#accum + 1] = "\207"
|
||||||
|
accum[#accum + 1] = number_to_str(xlen)
|
||||||
|
for i = 1, xlen do
|
||||||
|
local v = x[i]
|
||||||
|
types[type(v)](v, visited, accum)
|
||||||
|
end
|
||||||
|
local key_count = 0
|
||||||
|
for k in pairs(x) do
|
||||||
|
if not_array_index(k, xlen) then
|
||||||
|
key_count = key_count + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
accum[#accum + 1] = number_to_str(key_count)
|
||||||
|
for k, v in pairs(x) do
|
||||||
|
if not_array_index(k, xlen) then
|
||||||
|
types[type(k)](k, visited, accum)
|
||||||
|
types[type(v)](v, visited, accum)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
types["function"] = function(x, visited, accum)
|
||||||
|
if visited[x] then
|
||||||
|
accum[#accum + 1] = "\208"
|
||||||
|
accum[#accum + 1] = number_to_str(visited[x])
|
||||||
|
else
|
||||||
|
if check_custom_type(x, visited, accum) then return end
|
||||||
|
visited[x] = visited.next
|
||||||
|
visited.next = visited.next + 1
|
||||||
|
local str = dump(x)
|
||||||
|
accum[#accum + 1] = "\210"
|
||||||
|
accum[#accum + 1] = number_to_str(#str)
|
||||||
|
accum[#accum + 1] = str
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
types.cdata = function(x, visited, accum)
|
||||||
|
if visited[x] then
|
||||||
|
accum[#accum + 1] = "\208"
|
||||||
|
accum[#accum + 1] = number_to_str(visited[x])
|
||||||
|
else
|
||||||
|
if check_custom_type(x, visited, #accum) then return end
|
||||||
|
error("Cannot serialize this cdata.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
types.thread = function() error("Cannot serialize threads.") end
|
||||||
|
|
||||||
|
local function deserialize_value(str, index, visited)
|
||||||
|
local t = byte(str, index)
|
||||||
|
if not t then return end
|
||||||
|
if t < 128 then
|
||||||
|
return t - 27, index + 1
|
||||||
|
elseif t < 192 then
|
||||||
|
return byte(str, index + 1) + 0x100 * (t - 128) - 8192, index + 2
|
||||||
|
elseif t == 202 then
|
||||||
|
return nil, index + 1
|
||||||
|
elseif t == 203 then
|
||||||
|
return number_from_str(str, index)
|
||||||
|
elseif t == 204 then
|
||||||
|
return true, index + 1
|
||||||
|
elseif t == 205 then
|
||||||
|
return false, index + 1
|
||||||
|
elseif t == 206 then
|
||||||
|
local length, dataindex = deserialize_value(str, index + 1, visited)
|
||||||
|
local nextindex = dataindex + length
|
||||||
|
local substr = sub(str, dataindex, nextindex - 1)
|
||||||
|
visited[#visited + 1] = substr
|
||||||
|
return substr, nextindex
|
||||||
|
elseif t == 207 then
|
||||||
|
local count, nextindex = number_from_str(str, index + 1)
|
||||||
|
local ret = {}
|
||||||
|
visited[#visited + 1] = ret
|
||||||
|
for i = 1, count do
|
||||||
|
ret[i], nextindex = deserialize_value(str, nextindex, visited)
|
||||||
|
end
|
||||||
|
count, nextindex = number_from_str(str, nextindex)
|
||||||
|
for i = 1, count do
|
||||||
|
local k, v
|
||||||
|
k, nextindex = deserialize_value(str, nextindex, visited)
|
||||||
|
v, nextindex = deserialize_value(str, nextindex, visited)
|
||||||
|
ret[k] = v
|
||||||
|
end
|
||||||
|
return ret, nextindex
|
||||||
|
elseif t == 208 then
|
||||||
|
local ref, nextindex = number_from_str(str, index + 1)
|
||||||
|
return visited[ref], nextindex
|
||||||
|
elseif t == 209 then
|
||||||
|
local count
|
||||||
|
local name, nextindex = deserialize_value(str, index + 1, visited)
|
||||||
|
count, nextindex = number_from_str(str, nextindex)
|
||||||
|
local args = {}
|
||||||
|
for i = 1, count do
|
||||||
|
args[i], nextindex = deserialize_value(str, nextindex, visited)
|
||||||
|
end
|
||||||
|
local ret = deserializers[name](unpack(args))
|
||||||
|
visited[#visited + 1] = ret
|
||||||
|
return ret, nextindex
|
||||||
|
elseif t == 210 then
|
||||||
|
local length, dataindex = deserialize_value(str, index + 1, visited)
|
||||||
|
local nextindex = dataindex + length
|
||||||
|
local ret = loadstring(sub(str, dataindex, nextindex - 1))
|
||||||
|
visited[#visited + 1] = ret
|
||||||
|
return ret, nextindex
|
||||||
|
elseif t == 211 then
|
||||||
|
local res, nextindex = deserialize_value(str, index + 1, visited)
|
||||||
|
return resources_by_name[res], nextindex
|
||||||
|
elseif t == 212 then
|
||||||
|
return number_from_str(str, index)
|
||||||
|
else
|
||||||
|
error("Could not deserialize type byte " .. t .. ".")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function serialize(...)
|
||||||
|
local visited = {next = 1}
|
||||||
|
local accum = {}
|
||||||
|
for i = 1, select("#", ...) do
|
||||||
|
local x = select(i, ...)
|
||||||
|
types[type(x)](x, visited, accum)
|
||||||
|
end
|
||||||
|
return concat(accum)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function make_file_writer(file)
|
||||||
|
return setmetatable({}, {
|
||||||
|
__newindex = function(_, _, v)
|
||||||
|
file:write(v)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
local function serialize_to_file(path, mode, ...)
|
||||||
|
local file, err = io.open(path, mode)
|
||||||
|
assert(file, err)
|
||||||
|
local visited = {next = 1}
|
||||||
|
local accum = make_file_writer(file)
|
||||||
|
for i = 1, select("#", ...) do
|
||||||
|
local x = select(i, ...)
|
||||||
|
types[type(x)](x, visited, accum)
|
||||||
|
end
|
||||||
|
-- flush the writer
|
||||||
|
file:flush()
|
||||||
|
file:close()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function writeFile(path, ...)
|
||||||
|
return serialize_to_file(path, "wb", ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function appendFile(path, ...)
|
||||||
|
return serialize_to_file(path, "ab", ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function deserialize(str, index)
|
||||||
|
assert(type(str) == "string", "Expected string to deserialize.")
|
||||||
|
local vals = {}
|
||||||
|
index = index or 1
|
||||||
|
local visited = {}
|
||||||
|
local len = 0
|
||||||
|
local val
|
||||||
|
while index do
|
||||||
|
val, index = deserialize_value(str, index, visited)
|
||||||
|
if index then
|
||||||
|
len = len + 1
|
||||||
|
vals[len] = val
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return vals, len
|
||||||
|
end
|
||||||
|
|
||||||
|
local function deserializeN(str, n, index)
|
||||||
|
assert(type(str) == "string", "Expected string to deserialize.")
|
||||||
|
n = n or 1
|
||||||
|
assert(type(n) == "number", "Expected a number for parameter n.")
|
||||||
|
assert(n > 0 and floor(n) == n, "N must be a poitive integer.")
|
||||||
|
local vals = {}
|
||||||
|
index = index or 1
|
||||||
|
local visited = {}
|
||||||
|
local len = 0
|
||||||
|
local val
|
||||||
|
while index and len < n do
|
||||||
|
val, index = deserialize_value(str, index, visited)
|
||||||
|
if index then
|
||||||
|
len = len + 1
|
||||||
|
vals[len] = val
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vals[len + 1] = index
|
||||||
|
return unpack(vals, 1, n + 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function readFile(path)
|
||||||
|
local file, err = io.open(path, "rb")
|
||||||
|
assert(file, err)
|
||||||
|
local str = file:read("*all")
|
||||||
|
file:close()
|
||||||
|
return deserialize(str)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function default_deserialize(metatable)
|
||||||
|
return function(...)
|
||||||
|
local ret = {}
|
||||||
|
for i = 1, select("#", ...), 2 do
|
||||||
|
ret[select(i, ...)] = select(i + 1, ...)
|
||||||
|
end
|
||||||
|
return setmetatable(ret, metatable)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function default_serialize(x)
|
||||||
|
assert(type(x) == "table",
|
||||||
|
"Default serialization for custom types only works for tables.")
|
||||||
|
local args = {}
|
||||||
|
local len = 0
|
||||||
|
for k, v in pairs(x) do
|
||||||
|
args[len + 1], args[len + 2] = k, v
|
||||||
|
len = len + 2
|
||||||
|
end
|
||||||
|
return unpack(args, 1, len)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Templating
|
||||||
|
|
||||||
|
local function normalize_template(template)
|
||||||
|
local ret = {}
|
||||||
|
for i = 1, #template do
|
||||||
|
ret[i] = template[i]
|
||||||
|
end
|
||||||
|
local non_array_part = {}
|
||||||
|
-- The non-array part of the template (nested templates) have to be deterministic, so they are sorted.
|
||||||
|
-- This means that inherently non deterministicly sortable keys (tables, functions) should NOT be used
|
||||||
|
-- in templates. Looking for way around this.
|
||||||
|
for k in pairs(template) do
|
||||||
|
if not_array_index(k, #template) then
|
||||||
|
non_array_part[#non_array_part + 1] = k
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.sort(non_array_part)
|
||||||
|
for i = 1, #non_array_part do
|
||||||
|
local name = non_array_part[i]
|
||||||
|
ret[#ret + 1] = {name, normalize_template(template[name])}
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
|
local function templatepart_serialize(part, argaccum, x, len)
|
||||||
|
local extras = {}
|
||||||
|
local extracount = 0
|
||||||
|
for k, v in pairs(x) do
|
||||||
|
extras[k] = v
|
||||||
|
extracount = extracount + 1
|
||||||
|
end
|
||||||
|
for i = 1, #part do
|
||||||
|
extracount = extracount - 1
|
||||||
|
if type(part[i]) == "table" then
|
||||||
|
extras[part[i][1]] = nil
|
||||||
|
len = templatepart_serialize(part[i][2], argaccum, x[part[i][1]], len)
|
||||||
|
else
|
||||||
|
extras[part[i]] = nil
|
||||||
|
len = len + 1
|
||||||
|
argaccum[len] = x[part[i]]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if extracount > 0 then
|
||||||
|
argaccum[len + 1] = extras
|
||||||
|
else
|
||||||
|
argaccum[len + 1] = nil
|
||||||
|
end
|
||||||
|
return len + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local function templatepart_deserialize(ret, part, values, vindex)
|
||||||
|
for i = 1, #part do
|
||||||
|
local name = part[i]
|
||||||
|
if type(name) == "table" then
|
||||||
|
local newret = {}
|
||||||
|
ret[name[1]] = newret
|
||||||
|
vindex = templatepart_deserialize(newret, name[2], values, vindex)
|
||||||
|
else
|
||||||
|
ret[name] = values[vindex]
|
||||||
|
vindex = vindex + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local extras = values[vindex]
|
||||||
|
if extras then
|
||||||
|
for k, v in pairs(extras) do
|
||||||
|
ret[k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return vindex + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local function template_serializer_and_deserializer(metatable, template)
|
||||||
|
return function(x)
|
||||||
|
argaccum = {}
|
||||||
|
local len = templatepart_serialize(template, argaccum, x, 0)
|
||||||
|
return unpack(argaccum, 1, len)
|
||||||
|
end, function(...)
|
||||||
|
local ret = {}
|
||||||
|
local len = select("#", ...)
|
||||||
|
local args = {...}
|
||||||
|
templatepart_deserialize(ret, template, args, 1)
|
||||||
|
return setmetatable(ret, metatable)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function register(metatable, name, serialize, deserialize)
|
||||||
|
name = name or metatable.name
|
||||||
|
serialize = serialize or metatable._serialize
|
||||||
|
deserialize = deserialize or metatable._deserialize
|
||||||
|
if not serialize then
|
||||||
|
if metatable._template then
|
||||||
|
local t = normalize_template(metatable._template)
|
||||||
|
serialize, deserialize = template_serializer_and_deserializer(metatable, t)
|
||||||
|
elseif not deserialize then
|
||||||
|
serialize = default_serialize
|
||||||
|
deserialize = default_deserialize(metatable)
|
||||||
|
else
|
||||||
|
serialize = metatable
|
||||||
|
end
|
||||||
|
end
|
||||||
|
type_check(metatable, "table", "metatable")
|
||||||
|
type_check(name, "string", "name")
|
||||||
|
type_check(serialize, "function", "serialize")
|
||||||
|
type_check(deserialize, "function", "deserialize")
|
||||||
|
assert(not ids[metatable], "Metatable already registered.")
|
||||||
|
assert(not mts[name], ("Name %q already registered."):format(name))
|
||||||
|
mts[name] = metatable
|
||||||
|
ids[metatable] = name
|
||||||
|
serializers[name] = serialize
|
||||||
|
deserializers[name] = deserialize
|
||||||
|
return metatable
|
||||||
|
end
|
||||||
|
|
||||||
|
local function unregister(item)
|
||||||
|
local name, metatable
|
||||||
|
if type(item) == "string" then -- assume name
|
||||||
|
name, metatable = item, mts[item]
|
||||||
|
else -- assume metatable
|
||||||
|
name, metatable = ids[item], item
|
||||||
|
end
|
||||||
|
type_check(name, "string", "name")
|
||||||
|
type_check(metatable, "table", "metatable")
|
||||||
|
mts[name] = nil
|
||||||
|
ids[metatable] = nil
|
||||||
|
serializers[name] = nil
|
||||||
|
deserializers[name] = nil
|
||||||
|
return metatable
|
||||||
|
end
|
||||||
|
|
||||||
|
local function registerClass(class, name)
|
||||||
|
name = name or class.name
|
||||||
|
if class.__instanceDict then -- middleclass
|
||||||
|
register(class.__instanceDict, name)
|
||||||
|
else -- assume 30log or similar library
|
||||||
|
register(class, name)
|
||||||
|
end
|
||||||
|
return class
|
||||||
|
end
|
||||||
|
|
||||||
|
local function registerResource(resource, name)
|
||||||
|
type_check(name, "string", "name")
|
||||||
|
assert(not resources[resource],
|
||||||
|
"Resource already registered.")
|
||||||
|
assert(not resources_by_name[name],
|
||||||
|
format("Resource %q already exists.", name))
|
||||||
|
resources_by_name[name] = resource
|
||||||
|
resources[resource] = name
|
||||||
|
return resource
|
||||||
|
end
|
||||||
|
|
||||||
|
local function unregisterResource(name)
|
||||||
|
type_check(name, "string", "name")
|
||||||
|
assert(resources_by_name[name], format("Resource %q does not exist.", name))
|
||||||
|
local resource = resources_by_name[name]
|
||||||
|
resources_by_name[name] = nil
|
||||||
|
resources[resource] = nil
|
||||||
|
return resource
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
-- aliases
|
||||||
|
s = serialize,
|
||||||
|
d = deserialize,
|
||||||
|
dn = deserializeN,
|
||||||
|
r = readFile,
|
||||||
|
w = writeFile,
|
||||||
|
a = appendFile,
|
||||||
|
|
||||||
|
serialize = serialize,
|
||||||
|
deserialize = deserialize,
|
||||||
|
deserializeN = deserializeN,
|
||||||
|
readFile = readFile,
|
||||||
|
writeFile = writeFile,
|
||||||
|
appendFile = appendFile,
|
||||||
|
register = register,
|
||||||
|
unregister = unregister,
|
||||||
|
registerResource = registerResource,
|
||||||
|
unregisterResource = unregisterResource,
|
||||||
|
registerClass = registerClass
|
||||||
|
}
|
|
@ -0,0 +1,775 @@
|
||||||
|
local bump = {
|
||||||
|
_VERSION = 'bump v3.1.7',
|
||||||
|
_URL = 'https://github.com/kikito/bump.lua',
|
||||||
|
_DESCRIPTION = 'A collision detection library for Lua',
|
||||||
|
_LICENSE = [[
|
||||||
|
MIT LICENSE
|
||||||
|
|
||||||
|
Copyright (c) 2014 Enrique García Cota
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
]]
|
||||||
|
}
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
-- Auxiliary functions
|
||||||
|
------------------------------------------
|
||||||
|
local DELTA = 1e-10 -- floating-point margin of error
|
||||||
|
|
||||||
|
local abs, floor, ceil, min, max = math.abs, math.floor, math.ceil, math.min, math.max
|
||||||
|
|
||||||
|
local function sign(x)
|
||||||
|
if x > 0 then return 1 end
|
||||||
|
if x == 0 then return 0 end
|
||||||
|
return -1
|
||||||
|
end
|
||||||
|
|
||||||
|
local function nearest(x, a, b)
|
||||||
|
if abs(a - x) < abs(b - x) then return a else return b end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function assertType(desiredType, value, name)
|
||||||
|
if type(value) ~= desiredType then
|
||||||
|
error(name .. ' must be a ' .. desiredType .. ', but was ' .. tostring(value) .. '(a ' .. type(value) .. ')')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function assertIsPositiveNumber(value, name)
|
||||||
|
if type(value) ~= 'number' or value <= 0 then
|
||||||
|
error(name .. ' must be a positive integer, but was ' .. tostring(value) .. '(' .. type(value) .. ')')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function assertIsRect(x,y,w,h)
|
||||||
|
assertType('number', x, 'x')
|
||||||
|
assertType('number', y, 'y')
|
||||||
|
assertIsPositiveNumber(w, 'w')
|
||||||
|
assertIsPositiveNumber(h, 'h')
|
||||||
|
end
|
||||||
|
|
||||||
|
local defaultFilter = function()
|
||||||
|
return 'slide'
|
||||||
|
end
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
-- Rectangle functions
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
local function rect_getNearestCorner(x,y,w,h, px, py)
|
||||||
|
return nearest(px, x, x+w), nearest(py, y, y+h)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- This is a generalized implementation of the liang-barsky algorithm, which also returns
|
||||||
|
-- the normals of the sides where the segment intersects.
|
||||||
|
-- Returns nil if the segment never touches the rect
|
||||||
|
-- Notice that normals are only guaranteed to be accurate when initially ti1, ti2 == -math.huge, math.huge
|
||||||
|
local function rect_getSegmentIntersectionIndices(x,y,w,h, x1,y1,x2,y2, ti1,ti2)
|
||||||
|
ti1, ti2 = ti1 or 0, ti2 or 1
|
||||||
|
local dx, dy = x2-x1, y2-y1
|
||||||
|
local nx, ny
|
||||||
|
local nx1, ny1, nx2, ny2 = 0,0,0,0
|
||||||
|
local p, q, r
|
||||||
|
|
||||||
|
for side = 1,4 do
|
||||||
|
if side == 1 then nx,ny,p,q = -1, 0, -dx, x1 - x -- left
|
||||||
|
elseif side == 2 then nx,ny,p,q = 1, 0, dx, x + w - x1 -- right
|
||||||
|
elseif side == 3 then nx,ny,p,q = 0, -1, -dy, y1 - y -- top
|
||||||
|
else nx,ny,p,q = 0, 1, dy, y + h - y1 -- bottom
|
||||||
|
end
|
||||||
|
|
||||||
|
if p == 0 then
|
||||||
|
if q <= 0 then return nil end
|
||||||
|
else
|
||||||
|
r = q / p
|
||||||
|
if p < 0 then
|
||||||
|
if r > ti2 then return nil
|
||||||
|
elseif r > ti1 then ti1,nx1,ny1 = r,nx,ny
|
||||||
|
end
|
||||||
|
else -- p > 0
|
||||||
|
if r < ti1 then return nil
|
||||||
|
elseif r < ti2 then ti2,nx2,ny2 = r,nx,ny
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return ti1,ti2, nx1,ny1, nx2,ny2
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Calculates the minkowsky difference between 2 rects, which is another rect
|
||||||
|
local function rect_getDiff(x1,y1,w1,h1, x2,y2,w2,h2)
|
||||||
|
return x2 - x1 - w1,
|
||||||
|
y2 - y1 - h1,
|
||||||
|
w1 + w2,
|
||||||
|
h1 + h2
|
||||||
|
end
|
||||||
|
|
||||||
|
local function rect_containsPoint(x,y,w,h, px,py)
|
||||||
|
return px - x > DELTA and py - y > DELTA and
|
||||||
|
x + w - px > DELTA and y + h - py > DELTA
|
||||||
|
end
|
||||||
|
|
||||||
|
local function rect_isIntersecting(x1,y1,w1,h1, x2,y2,w2,h2)
|
||||||
|
return x1 < x2+w2 and x2 < x1+w1 and
|
||||||
|
y1 < y2+h2 and y2 < y1+h1
|
||||||
|
end
|
||||||
|
|
||||||
|
local function rect_getSquareDistance(x1,y1,w1,h1, x2,y2,w2,h2)
|
||||||
|
local dx = x1 - x2 + (w1 - w2)/2
|
||||||
|
local dy = y1 - y2 + (h1 - h2)/2
|
||||||
|
return dx*dx + dy*dy
|
||||||
|
end
|
||||||
|
|
||||||
|
local function rect_detectCollision(x1,y1,w1,h1, x2,y2,w2,h2, goalX, goalY)
|
||||||
|
goalX = goalX or x1
|
||||||
|
goalY = goalY or y1
|
||||||
|
|
||||||
|
local dx, dy = goalX - x1, goalY - y1
|
||||||
|
local x,y,w,h = rect_getDiff(x1,y1,w1,h1, x2,y2,w2,h2)
|
||||||
|
|
||||||
|
local overlaps, ti, nx, ny
|
||||||
|
|
||||||
|
if rect_containsPoint(x,y,w,h, 0,0) then -- item was intersecting other
|
||||||
|
local px, py = rect_getNearestCorner(x,y,w,h, 0, 0)
|
||||||
|
local wi, hi = min(w1, abs(px)), min(h1, abs(py)) -- area of intersection
|
||||||
|
ti = -wi * hi -- ti is the negative area of intersection
|
||||||
|
overlaps = true
|
||||||
|
else
|
||||||
|
local ti1,ti2,nx1,ny1 = rect_getSegmentIntersectionIndices(x,y,w,h, 0,0,dx,dy, -math.huge, math.huge)
|
||||||
|
|
||||||
|
-- item tunnels into other
|
||||||
|
if ti1
|
||||||
|
and ti1 < 1
|
||||||
|
and (abs(ti1 - ti2) >= DELTA) -- special case for rect going through another rect's corner
|
||||||
|
and (0 < ti1 + DELTA
|
||||||
|
or 0 == ti1 and ti2 > 0)
|
||||||
|
then
|
||||||
|
ti, nx, ny = ti1, nx1, ny1
|
||||||
|
overlaps = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not ti then return end
|
||||||
|
|
||||||
|
local tx, ty
|
||||||
|
|
||||||
|
if overlaps then
|
||||||
|
if dx == 0 and dy == 0 then
|
||||||
|
-- intersecting and not moving - use minimum displacement vector
|
||||||
|
local px, py = rect_getNearestCorner(x,y,w,h, 0,0)
|
||||||
|
if abs(px) < abs(py) then py = 0 else px = 0 end
|
||||||
|
nx, ny = sign(px), sign(py)
|
||||||
|
tx, ty = x1 + px, y1 + py
|
||||||
|
else
|
||||||
|
-- intersecting and moving - move in the opposite direction
|
||||||
|
local ti1, _
|
||||||
|
ti1,_,nx,ny = rect_getSegmentIntersectionIndices(x,y,w,h, 0,0,dx,dy, -math.huge, 1)
|
||||||
|
if not ti1 then return end
|
||||||
|
tx, ty = x1 + dx * ti1, y1 + dy * ti1
|
||||||
|
end
|
||||||
|
else -- tunnel
|
||||||
|
tx, ty = x1 + dx * ti, y1 + dy * ti
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
overlaps = overlaps,
|
||||||
|
ti = ti,
|
||||||
|
move = {x = dx, y = dy},
|
||||||
|
normal = {x = nx, y = ny},
|
||||||
|
touch = {x = tx, y = ty},
|
||||||
|
itemRect = {x = x1, y = y1, w = w1, h = h1},
|
||||||
|
otherRect = {x = x2, y = y2, w = w2, h = h2}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
-- Grid functions
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
local function grid_toWorld(cellSize, cx, cy)
|
||||||
|
return (cx - 1)*cellSize, (cy-1)*cellSize
|
||||||
|
end
|
||||||
|
|
||||||
|
local function grid_toCell(cellSize, x, y)
|
||||||
|
return floor(x / cellSize) + 1, floor(y / cellSize) + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
-- grid_traverse* functions are based on "A Fast Voxel Traversal Algorithm for Ray Tracing",
|
||||||
|
-- by John Amanides and Andrew Woo - http://www.cse.yorku.ca/~amana/research/grid.pdf
|
||||||
|
-- It has been modified to include both cells when the ray "touches a grid corner",
|
||||||
|
-- and with a different exit condition
|
||||||
|
|
||||||
|
local function grid_traverse_initStep(cellSize, ct, t1, t2)
|
||||||
|
local v = t2 - t1
|
||||||
|
if v > 0 then
|
||||||
|
return 1, cellSize / v, ((ct + v) * cellSize - t1) / v
|
||||||
|
elseif v < 0 then
|
||||||
|
return -1, -cellSize / v, ((ct + v - 1) * cellSize - t1) / v
|
||||||
|
else
|
||||||
|
return 0, math.huge, math.huge
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function grid_traverse(cellSize, x1,y1,x2,y2, f)
|
||||||
|
local cx1,cy1 = grid_toCell(cellSize, x1,y1)
|
||||||
|
local cx2,cy2 = grid_toCell(cellSize, x2,y2)
|
||||||
|
local stepX, dx, tx = grid_traverse_initStep(cellSize, cx1, x1, x2)
|
||||||
|
local stepY, dy, ty = grid_traverse_initStep(cellSize, cy1, y1, y2)
|
||||||
|
local cx,cy = cx1,cy1
|
||||||
|
|
||||||
|
f(cx, cy)
|
||||||
|
|
||||||
|
-- The default implementation had an infinite loop problem when
|
||||||
|
-- approaching the last cell in some occassions. We finish iterating
|
||||||
|
-- when we are *next* to the last cell
|
||||||
|
while abs(cx - cx2) + abs(cy - cy2) > 1 do
|
||||||
|
if tx < ty then
|
||||||
|
tx, cx = tx + dx, cx + stepX
|
||||||
|
f(cx, cy)
|
||||||
|
else
|
||||||
|
-- Addition: include both cells when going through corners
|
||||||
|
if tx == ty then f(cx + stepX, cy) end
|
||||||
|
ty, cy = ty + dy, cy + stepY
|
||||||
|
f(cx, cy)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- If we have not arrived to the last cell, use it
|
||||||
|
if cx ~= cx2 or cy ~= cy2 then f(cx2, cy2) end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
local function grid_toCellRect(cellSize, x,y,w,h)
|
||||||
|
local cx,cy = grid_toCell(cellSize, x, y)
|
||||||
|
local cr,cb = ceil((x+w) / cellSize), ceil((y+h) / cellSize)
|
||||||
|
return cx, cy, cr - cx + 1, cb - cy + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
-- Responses
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
local touch = function(world, col, x,y,w,h, goalX, goalY, filter)
|
||||||
|
return col.touch.x, col.touch.y, {}, 0
|
||||||
|
end
|
||||||
|
|
||||||
|
local cross = function(world, col, x,y,w,h, goalX, goalY, filter)
|
||||||
|
local cols, len = world:project(col.item, x,y,w,h, goalX, goalY, filter)
|
||||||
|
return goalX, goalY, cols, len
|
||||||
|
end
|
||||||
|
|
||||||
|
local slide = function(world, col, x,y,w,h, goalX, goalY, filter)
|
||||||
|
goalX = goalX or x
|
||||||
|
goalY = goalY or y
|
||||||
|
|
||||||
|
local tch, move = col.touch, col.move
|
||||||
|
local sx, sy = tch.x, tch.y
|
||||||
|
if move.x ~= 0 or move.y ~= 0 then
|
||||||
|
if col.normal.x == 0 then
|
||||||
|
sx = goalX
|
||||||
|
else
|
||||||
|
sy = goalY
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
col.slide = {x = sx, y = sy}
|
||||||
|
|
||||||
|
x,y = tch.x, tch.y
|
||||||
|
goalX, goalY = sx, sy
|
||||||
|
local cols, len = world:project(col.item, x,y,w,h, goalX, goalY, filter)
|
||||||
|
return goalX, goalY, cols, len
|
||||||
|
end
|
||||||
|
|
||||||
|
local bounce = function(world, col, x,y,w,h, goalX, goalY, filter)
|
||||||
|
goalX = goalX or x
|
||||||
|
goalY = goalY or y
|
||||||
|
|
||||||
|
local tch, move = col.touch, col.move
|
||||||
|
local tx, ty = tch.x, tch.y
|
||||||
|
|
||||||
|
local bx, by = tx, ty
|
||||||
|
|
||||||
|
if move.x ~= 0 or move.y ~= 0 then
|
||||||
|
local bnx, bny = goalX - tx, goalY - ty
|
||||||
|
if col.normal.x == 0 then bny = -bny else bnx = -bnx end
|
||||||
|
bx, by = tx + bnx, ty + bny
|
||||||
|
end
|
||||||
|
|
||||||
|
col.bounce = {x = bx, y = by}
|
||||||
|
x,y = tch.x, tch.y
|
||||||
|
goalX, goalY = bx, by
|
||||||
|
|
||||||
|
local cols, len = world:project(col.item, x,y,w,h, goalX, goalY, filter)
|
||||||
|
return goalX, goalY, cols, len
|
||||||
|
end
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
-- World
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
local World = {}
|
||||||
|
local World_mt = {__index = World}
|
||||||
|
|
||||||
|
-- Private functions and methods
|
||||||
|
|
||||||
|
local function sortByWeight(a,b) return a.weight < b.weight end
|
||||||
|
|
||||||
|
local function sortByTiAndDistance(a,b)
|
||||||
|
if a.ti == b.ti then
|
||||||
|
local ir, ar, br = a.itemRect, a.otherRect, b.otherRect
|
||||||
|
local ad = rect_getSquareDistance(ir.x,ir.y,ir.w,ir.h, ar.x,ar.y,ar.w,ar.h)
|
||||||
|
local bd = rect_getSquareDistance(ir.x,ir.y,ir.w,ir.h, br.x,br.y,br.w,br.h)
|
||||||
|
return ad < bd
|
||||||
|
end
|
||||||
|
return a.ti < b.ti
|
||||||
|
end
|
||||||
|
|
||||||
|
local function addItemToCell(self, item, cx, cy)
|
||||||
|
self.rows[cy] = self.rows[cy] or setmetatable({}, {__mode = 'v'})
|
||||||
|
local row = self.rows[cy]
|
||||||
|
row[cx] = row[cx] or {itemCount = 0, x = cx, y = cy, items = setmetatable({}, {__mode = 'k'})}
|
||||||
|
local cell = row[cx]
|
||||||
|
self.nonEmptyCells[cell] = true
|
||||||
|
if not cell.items[item] then
|
||||||
|
cell.items[item] = true
|
||||||
|
cell.itemCount = cell.itemCount + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function removeItemFromCell(self, item, cx, cy)
|
||||||
|
local row = self.rows[cy]
|
||||||
|
if not row or not row[cx] or not row[cx].items[item] then return false end
|
||||||
|
|
||||||
|
local cell = row[cx]
|
||||||
|
cell.items[item] = nil
|
||||||
|
cell.itemCount = cell.itemCount - 1
|
||||||
|
if cell.itemCount == 0 then
|
||||||
|
self.nonEmptyCells[cell] = nil
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local function getDictItemsInCellRect(self, cl,ct,cw,ch)
|
||||||
|
local items_dict = {}
|
||||||
|
for cy=ct,ct+ch-1 do
|
||||||
|
local row = self.rows[cy]
|
||||||
|
if row then
|
||||||
|
for cx=cl,cl+cw-1 do
|
||||||
|
local cell = row[cx]
|
||||||
|
if cell and cell.itemCount > 0 then -- no cell.itemCount > 1 because tunneling
|
||||||
|
for item,_ in pairs(cell.items) do
|
||||||
|
items_dict[item] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return items_dict
|
||||||
|
end
|
||||||
|
|
||||||
|
local function getCellsTouchedBySegment(self, x1,y1,x2,y2)
|
||||||
|
|
||||||
|
local cells, cellsLen, visited = {}, 0, {}
|
||||||
|
|
||||||
|
grid_traverse(self.cellSize, x1,y1,x2,y2, function(cx, cy)
|
||||||
|
local row = self.rows[cy]
|
||||||
|
if not row then return end
|
||||||
|
local cell = row[cx]
|
||||||
|
if not cell or visited[cell] then return end
|
||||||
|
|
||||||
|
visited[cell] = true
|
||||||
|
cellsLen = cellsLen + 1
|
||||||
|
cells[cellsLen] = cell
|
||||||
|
end)
|
||||||
|
|
||||||
|
return cells, cellsLen
|
||||||
|
end
|
||||||
|
|
||||||
|
local function getInfoAboutItemsTouchedBySegment(self, x1,y1, x2,y2, filter)
|
||||||
|
local cells, len = getCellsTouchedBySegment(self, x1,y1,x2,y2)
|
||||||
|
local cell, rect, l,t,w,h, ti1,ti2, tii0,tii1
|
||||||
|
local visited, itemInfo, itemInfoLen = {},{},0
|
||||||
|
for i=1,len do
|
||||||
|
cell = cells[i]
|
||||||
|
for item in pairs(cell.items) do
|
||||||
|
if not visited[item] then
|
||||||
|
visited[item] = true
|
||||||
|
if (not filter or filter(item)) then
|
||||||
|
rect = self.rects[item]
|
||||||
|
l,t,w,h = rect.x,rect.y,rect.w,rect.h
|
||||||
|
|
||||||
|
ti1,ti2 = rect_getSegmentIntersectionIndices(l,t,w,h, x1,y1, x2,y2, 0, 1)
|
||||||
|
if ti1 and ((0 < ti1 and ti1 < 1) or (0 < ti2 and ti2 < 1)) then
|
||||||
|
-- the sorting is according to the t of an infinite line, not the segment
|
||||||
|
tii0,tii1 = rect_getSegmentIntersectionIndices(l,t,w,h, x1,y1, x2,y2, -math.huge, math.huge)
|
||||||
|
itemInfoLen = itemInfoLen + 1
|
||||||
|
itemInfo[itemInfoLen] = {item = item, ti1 = ti1, ti2 = ti2, weight = min(tii0,tii1)}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.sort(itemInfo, sortByWeight)
|
||||||
|
return itemInfo, itemInfoLen
|
||||||
|
end
|
||||||
|
|
||||||
|
local function getResponseByName(self, name)
|
||||||
|
local response = self.responses[name]
|
||||||
|
if not response then
|
||||||
|
error(('Unknown collision type: %s (%s)'):format(name, type(name)))
|
||||||
|
end
|
||||||
|
return response
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Misc Public Methods
|
||||||
|
|
||||||
|
function World:addResponse(name, response)
|
||||||
|
self.responses[name] = response
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:project(item, x,y,w,h, goalX, goalY, filter)
|
||||||
|
assertIsRect(x,y,w,h)
|
||||||
|
|
||||||
|
goalX = goalX or x
|
||||||
|
goalY = goalY or y
|
||||||
|
filter = filter or defaultFilter
|
||||||
|
|
||||||
|
local collisions, len = {}, 0
|
||||||
|
|
||||||
|
local visited = {}
|
||||||
|
if item ~= nil then visited[item] = true end
|
||||||
|
|
||||||
|
-- This could probably be done with less cells using a polygon raster over the cells instead of a
|
||||||
|
-- bounding rect of the whole movement. Conditional to building a queryPolygon method
|
||||||
|
local tl, tt = min(goalX, x), min(goalY, y)
|
||||||
|
local tr, tb = max(goalX + w, x+w), max(goalY + h, y+h)
|
||||||
|
local tw, th = tr-tl, tb-tt
|
||||||
|
|
||||||
|
local cl,ct,cw,ch = grid_toCellRect(self.cellSize, tl,tt,tw,th)
|
||||||
|
|
||||||
|
local dictItemsInCellRect = getDictItemsInCellRect(self, cl,ct,cw,ch)
|
||||||
|
|
||||||
|
for other,_ in pairs(dictItemsInCellRect) do
|
||||||
|
if not visited[other] then
|
||||||
|
visited[other] = true
|
||||||
|
|
||||||
|
local responseName = filter(item, other)
|
||||||
|
if responseName then
|
||||||
|
local ox,oy,ow,oh = self:getRect(other)
|
||||||
|
local col = rect_detectCollision(x,y,w,h, ox,oy,ow,oh, goalX, goalY)
|
||||||
|
|
||||||
|
if col then
|
||||||
|
col.other = other
|
||||||
|
col.item = item
|
||||||
|
col.type = responseName
|
||||||
|
|
||||||
|
len = len + 1
|
||||||
|
collisions[len] = col
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
table.sort(collisions, sortByTiAndDistance)
|
||||||
|
|
||||||
|
return collisions, len
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:countCells()
|
||||||
|
local count = 0
|
||||||
|
for _,row in pairs(self.rows) do
|
||||||
|
for _,_ in pairs(row) do
|
||||||
|
count = count + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return count
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:hasItem(item)
|
||||||
|
return not not self.rects[item]
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:getItems()
|
||||||
|
local items, len = {}, 0
|
||||||
|
for item,_ in pairs(self.rects) do
|
||||||
|
len = len + 1
|
||||||
|
items[len] = item
|
||||||
|
end
|
||||||
|
return items, len
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:countItems()
|
||||||
|
local len = 0
|
||||||
|
for _ in pairs(self.rects) do len = len + 1 end
|
||||||
|
return len
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:getRect(item)
|
||||||
|
local rect = self.rects[item]
|
||||||
|
if not rect then
|
||||||
|
error('Item ' .. tostring(item) .. ' must be added to the world before getting its rect. Use world:add(item, x,y,w,h) to add it first.')
|
||||||
|
end
|
||||||
|
return rect.x, rect.y, rect.w, rect.h
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:toWorld(cx, cy)
|
||||||
|
return grid_toWorld(self.cellSize, cx, cy)
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:toCell(x,y)
|
||||||
|
return grid_toCell(self.cellSize, x, y)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Query methods
|
||||||
|
|
||||||
|
function World:queryRect(x,y,w,h, filter)
|
||||||
|
|
||||||
|
assertIsRect(x,y,w,h)
|
||||||
|
|
||||||
|
local cl,ct,cw,ch = grid_toCellRect(self.cellSize, x,y,w,h)
|
||||||
|
local dictItemsInCellRect = getDictItemsInCellRect(self, cl,ct,cw,ch)
|
||||||
|
|
||||||
|
local items, len = {}, 0
|
||||||
|
|
||||||
|
local rect
|
||||||
|
for item,_ in pairs(dictItemsInCellRect) do
|
||||||
|
rect = self.rects[item]
|
||||||
|
if (not filter or filter(item))
|
||||||
|
and rect_isIntersecting(x,y,w,h, rect.x, rect.y, rect.w, rect.h)
|
||||||
|
then
|
||||||
|
len = len + 1
|
||||||
|
items[len] = item
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return items, len
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:queryPoint(x,y, filter)
|
||||||
|
local cx,cy = self:toCell(x,y)
|
||||||
|
local dictItemsInCellRect = getDictItemsInCellRect(self, cx,cy,1,1)
|
||||||
|
|
||||||
|
local items, len = {}, 0
|
||||||
|
|
||||||
|
local rect
|
||||||
|
for item,_ in pairs(dictItemsInCellRect) do
|
||||||
|
rect = self.rects[item]
|
||||||
|
if (not filter or filter(item))
|
||||||
|
and rect_containsPoint(rect.x, rect.y, rect.w, rect.h, x, y)
|
||||||
|
then
|
||||||
|
len = len + 1
|
||||||
|
items[len] = item
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return items, len
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:querySegment(x1, y1, x2, y2, filter)
|
||||||
|
local itemInfo, len = getInfoAboutItemsTouchedBySegment(self, x1, y1, x2, y2, filter)
|
||||||
|
local items = {}
|
||||||
|
for i=1, len do
|
||||||
|
items[i] = itemInfo[i].item
|
||||||
|
end
|
||||||
|
return items, len
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:querySegmentWithCoords(x1, y1, x2, y2, filter)
|
||||||
|
local itemInfo, len = getInfoAboutItemsTouchedBySegment(self, x1, y1, x2, y2, filter)
|
||||||
|
local dx, dy = x2-x1, y2-y1
|
||||||
|
local info, ti1, ti2
|
||||||
|
for i=1, len do
|
||||||
|
info = itemInfo[i]
|
||||||
|
ti1 = info.ti1
|
||||||
|
ti2 = info.ti2
|
||||||
|
|
||||||
|
info.weight = nil
|
||||||
|
info.x1 = x1 + dx * ti1
|
||||||
|
info.y1 = y1 + dy * ti1
|
||||||
|
info.x2 = x1 + dx * ti2
|
||||||
|
info.y2 = y1 + dy * ti2
|
||||||
|
end
|
||||||
|
return itemInfo, len
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Main methods
|
||||||
|
|
||||||
|
function World:add(item, x,y,w,h)
|
||||||
|
local rect = self.rects[item]
|
||||||
|
if rect then
|
||||||
|
error('Item ' .. tostring(item) .. ' added to the world twice.')
|
||||||
|
end
|
||||||
|
assertIsRect(x,y,w,h)
|
||||||
|
|
||||||
|
self.rects[item] = {x=x,y=y,w=w,h=h}
|
||||||
|
|
||||||
|
local cl,ct,cw,ch = grid_toCellRect(self.cellSize, x,y,w,h)
|
||||||
|
for cy = ct, ct+ch-1 do
|
||||||
|
for cx = cl, cl+cw-1 do
|
||||||
|
addItemToCell(self, item, cx, cy)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return item
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:remove(item)
|
||||||
|
local x,y,w,h = self:getRect(item)
|
||||||
|
|
||||||
|
self.rects[item] = nil
|
||||||
|
local cl,ct,cw,ch = grid_toCellRect(self.cellSize, x,y,w,h)
|
||||||
|
for cy = ct, ct+ch-1 do
|
||||||
|
for cx = cl, cl+cw-1 do
|
||||||
|
removeItemFromCell(self, item, cx, cy)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:update(item, x2,y2,w2,h2)
|
||||||
|
local x1,y1,w1,h1 = self:getRect(item)
|
||||||
|
w2,h2 = w2 or w1, h2 or h1
|
||||||
|
assertIsRect(x2,y2,w2,h2)
|
||||||
|
|
||||||
|
if x1 ~= x2 or y1 ~= y2 or w1 ~= w2 or h1 ~= h2 then
|
||||||
|
|
||||||
|
local cellSize = self.cellSize
|
||||||
|
local cl1,ct1,cw1,ch1 = grid_toCellRect(cellSize, x1,y1,w1,h1)
|
||||||
|
local cl2,ct2,cw2,ch2 = grid_toCellRect(cellSize, x2,y2,w2,h2)
|
||||||
|
|
||||||
|
if cl1 ~= cl2 or ct1 ~= ct2 or cw1 ~= cw2 or ch1 ~= ch2 then
|
||||||
|
|
||||||
|
local cr1, cb1 = cl1+cw1-1, ct1+ch1-1
|
||||||
|
local cr2, cb2 = cl2+cw2-1, ct2+ch2-1
|
||||||
|
local cyOut
|
||||||
|
|
||||||
|
for cy = ct1, cb1 do
|
||||||
|
cyOut = cy < ct2 or cy > cb2
|
||||||
|
for cx = cl1, cr1 do
|
||||||
|
if cyOut or cx < cl2 or cx > cr2 then
|
||||||
|
removeItemFromCell(self, item, cx, cy)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for cy = ct2, cb2 do
|
||||||
|
cyOut = cy < ct1 or cy > cb1
|
||||||
|
for cx = cl2, cr2 do
|
||||||
|
if cyOut or cx < cl1 or cx > cr1 then
|
||||||
|
addItemToCell(self, item, cx, cy)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
local rect = self.rects[item]
|
||||||
|
rect.x, rect.y, rect.w, rect.h = x2,y2,w2,h2
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:move(item, goalX, goalY, filter)
|
||||||
|
local actualX, actualY, cols, len = self:check(item, goalX, goalY, filter)
|
||||||
|
|
||||||
|
self:update(item, actualX, actualY)
|
||||||
|
|
||||||
|
return actualX, actualY, cols, len
|
||||||
|
end
|
||||||
|
|
||||||
|
function World:check(item, goalX, goalY, filter)
|
||||||
|
filter = filter or defaultFilter
|
||||||
|
|
||||||
|
local visited = {[item] = true}
|
||||||
|
local visitedFilter = function(itm, other)
|
||||||
|
if visited[other] then return false end
|
||||||
|
return filter(itm, other)
|
||||||
|
end
|
||||||
|
|
||||||
|
local cols, len = {}, 0
|
||||||
|
|
||||||
|
local x,y,w,h = self:getRect(item)
|
||||||
|
|
||||||
|
local projected_cols, projected_len = self:project(item, x,y,w,h, goalX,goalY, visitedFilter)
|
||||||
|
|
||||||
|
while projected_len > 0 do
|
||||||
|
local col = projected_cols[1]
|
||||||
|
len = len + 1
|
||||||
|
cols[len] = col
|
||||||
|
|
||||||
|
visited[col.other] = true
|
||||||
|
|
||||||
|
local response = getResponseByName(self, col.type)
|
||||||
|
|
||||||
|
goalX, goalY, projected_cols, projected_len = response(
|
||||||
|
self,
|
||||||
|
col,
|
||||||
|
x, y, w, h,
|
||||||
|
goalX, goalY,
|
||||||
|
visitedFilter
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
return goalX, goalY, cols, len
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Public library functions
|
||||||
|
|
||||||
|
bump.newWorld = function(cellSize)
|
||||||
|
cellSize = cellSize or 64
|
||||||
|
assertIsPositiveNumber(cellSize, 'cellSize')
|
||||||
|
local world = setmetatable({
|
||||||
|
cellSize = cellSize,
|
||||||
|
rects = {},
|
||||||
|
rows = {},
|
||||||
|
nonEmptyCells = {},
|
||||||
|
responses = {}
|
||||||
|
}, World_mt)
|
||||||
|
|
||||||
|
world:addResponse('touch', touch)
|
||||||
|
world:addResponse('cross', cross)
|
||||||
|
world:addResponse('slide', slide)
|
||||||
|
world:addResponse('bounce', bounce)
|
||||||
|
|
||||||
|
return world
|
||||||
|
end
|
||||||
|
|
||||||
|
bump.rect = {
|
||||||
|
getNearestCorner = rect_getNearestCorner,
|
||||||
|
getSegmentIntersectionIndices = rect_getSegmentIntersectionIndices,
|
||||||
|
getDiff = rect_getDiff,
|
||||||
|
containsPoint = rect_containsPoint,
|
||||||
|
isIntersecting = rect_isIntersecting,
|
||||||
|
getSquareDistance = rect_getSquareDistance,
|
||||||
|
detectCollision = rect_detectCollision
|
||||||
|
}
|
||||||
|
|
||||||
|
bump.responses = {
|
||||||
|
touch = touch,
|
||||||
|
cross = cross,
|
||||||
|
slide = slide,
|
||||||
|
bounce = bounce
|
||||||
|
}
|
||||||
|
|
||||||
|
return bump
|
|
@ -0,0 +1,68 @@
|
||||||
|
--
|
||||||
|
-- classic
|
||||||
|
--
|
||||||
|
-- Copyright (c) 2014, rxi
|
||||||
|
--
|
||||||
|
-- This module is free software; you can redistribute it and/or modify it under
|
||||||
|
-- the terms of the MIT license. See LICENSE for details.
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
local Object = {}
|
||||||
|
Object.__index = Object
|
||||||
|
|
||||||
|
|
||||||
|
function Object:new()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function Object:extend()
|
||||||
|
local cls = {}
|
||||||
|
for k, v in pairs(self) do
|
||||||
|
if k:find("__") == 1 then
|
||||||
|
cls[k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
cls.__index = cls
|
||||||
|
cls.super = self
|
||||||
|
setmetatable(cls, self)
|
||||||
|
return cls
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function Object:implement(...)
|
||||||
|
for _, cls in pairs({...}) do
|
||||||
|
for k, v in pairs(cls) do
|
||||||
|
if self[k] == nil and type(v) == "function" then
|
||||||
|
self[k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function Object:is(T)
|
||||||
|
local mt = getmetatable(self)
|
||||||
|
while mt do
|
||||||
|
if mt == T then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
mt = getmetatable(mt)
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function Object:__tostring()
|
||||||
|
return "Object"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function Object:__call(...)
|
||||||
|
local obj = setmetatable({}, self)
|
||||||
|
obj:new(...)
|
||||||
|
return obj
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
return Object
|
|
@ -0,0 +1,99 @@
|
||||||
|
--[[
|
||||||
|
CScreen v1.3 by CodeNMore
|
||||||
|
A simple way to make resolution-independent Love2D games
|
||||||
|
Tested for LOVE 0.10.1
|
||||||
|
See: https://github.com/CodeNMore/CScreen
|
||||||
|
Zlib License:
|
||||||
|
Copyright (c) 2016 CodeNMore
|
||||||
|
This software is provided 'as-is', without any express or implied warranty.
|
||||||
|
In no event will the authors be held liable for any damages arising from
|
||||||
|
the use of this software.
|
||||||
|
Permission is granted to anyone to use this software for any purpose,
|
||||||
|
including commercial applications, and to alter it and redistribute it
|
||||||
|
freely, subject to the following restrictions:
|
||||||
|
1. The origin of this software must not be misrepresented; you must not
|
||||||
|
claim that you wrote the original software. If you use this software in
|
||||||
|
a product, an acknowledgment in the product documentation would be appreciated
|
||||||
|
but is not required.
|
||||||
|
2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
misrepresented as being the original software.
|
||||||
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
|
--]]
|
||||||
|
|
||||||
|
local CScreen = {}
|
||||||
|
local rx, ry, ctr = 800, 600, true
|
||||||
|
local rxv, ryv, fsv, fsvr = 800, 600, 1.0, 1.0
|
||||||
|
local tx, ty, rwf, rhf = 0, 0, 800, 600
|
||||||
|
local cr, cg, cb, ca = 0, 0, 0, 255
|
||||||
|
|
||||||
|
-- Initializes CScreen with the initial size values
|
||||||
|
function CScreen.init(tw, th, cntr)
|
||||||
|
rx = tw or 800
|
||||||
|
ry = th or 600
|
||||||
|
ctr = cntr or false
|
||||||
|
CScreen.update(love.graphics.getWidth(), love.graphics.getHeight())
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Draws letterbox borders
|
||||||
|
function CScreen.cease()
|
||||||
|
if ctr then
|
||||||
|
local pr, pg, pb, pa = love.graphics.getColor()
|
||||||
|
love.graphics.setColor(cr, cg, cb, ca)
|
||||||
|
love.graphics.scale(fsvr, fsvr)
|
||||||
|
|
||||||
|
if tx ~= 0 then
|
||||||
|
love.graphics.rectangle("fill", -tx, 0, tx, rhf)
|
||||||
|
love.graphics.rectangle("fill", rxv, 0, tx, rhf)
|
||||||
|
elseif ty ~= 0 then
|
||||||
|
love.graphics.rectangle("fill", 0, -ty, rwf, ty)
|
||||||
|
love.graphics.rectangle("fill", 0, ryv, rwf, ty)
|
||||||
|
end
|
||||||
|
|
||||||
|
love.graphics.setColor(pr, pg, pb, pa)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Scales and centers all graphics properly
|
||||||
|
function CScreen.apply()
|
||||||
|
if ctr then
|
||||||
|
love.graphics.translate(tx, ty)
|
||||||
|
end
|
||||||
|
love.graphics.scale(fsv, fsv)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Updates CScreen when the window size changes
|
||||||
|
function CScreen.update(w, h)
|
||||||
|
local sx = w / rx
|
||||||
|
local sy = h / ry
|
||||||
|
fsv = math.min(sx, sy)
|
||||||
|
fsvr = 1 / fsv
|
||||||
|
-- Centering
|
||||||
|
if ctr and fsv == sx then -- Vertically
|
||||||
|
tx = 0
|
||||||
|
ty = (h / 2) - (ry * fsv / 2)
|
||||||
|
elseif ctr and fsv == sy then -- Horizontally
|
||||||
|
ty = 0
|
||||||
|
tx = (w / 2) - (rx * fsv / 2)
|
||||||
|
end
|
||||||
|
-- Variable sets
|
||||||
|
rwf = w
|
||||||
|
rhf = h
|
||||||
|
rxv = rx * fsv
|
||||||
|
ryv = ry * fsv
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Convert from window coordinates to target coordinates
|
||||||
|
function CScreen.project(x, y)
|
||||||
|
return math.floor((x - tx) / fsv), math.floor((y - ty) / fsv)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Change letterbox color
|
||||||
|
function CScreen.setColor(r, g, b, a)
|
||||||
|
cr = r
|
||||||
|
cg = g
|
||||||
|
cb = b
|
||||||
|
ca = a
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Return the table for use
|
||||||
|
return CScreen
|
|
@ -0,0 +1,216 @@
|
||||||
|
--[[
|
||||||
|
Copyright (c) 2010-2015 Matthias Richter
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name(s) of the above copyright holders
|
||||||
|
shall not be used in advertising or otherwise to promote the sale, use or
|
||||||
|
other dealings in this Software without prior written authorization.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local _PATH = (...):match('^(.*[%./])[^%.%/]+$') or ''
|
||||||
|
local cos, sin = math.cos, math.sin
|
||||||
|
|
||||||
|
local camera = {}
|
||||||
|
camera.__index = camera
|
||||||
|
|
||||||
|
-- Movement interpolators (for camera locking/windowing)
|
||||||
|
camera.smooth = {}
|
||||||
|
|
||||||
|
function camera.smooth.none()
|
||||||
|
return function(dx,dy) return dx,dy end
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera.smooth.linear(speed)
|
||||||
|
assert(type(speed) == "number", "Invalid parameter: speed = "..tostring(speed))
|
||||||
|
return function(dx,dy, s)
|
||||||
|
-- normalize direction
|
||||||
|
local d = math.sqrt(dx*dx+dy*dy)
|
||||||
|
local dts = math.min((s or speed) * love.timer.getDelta(), d) -- prevent overshooting the goal
|
||||||
|
if d > 0 then
|
||||||
|
dx,dy = dx/d, dy/d
|
||||||
|
end
|
||||||
|
|
||||||
|
return dx*dts, dy*dts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera.smooth.damped(stiffness)
|
||||||
|
assert(type(stiffness) == "number", "Invalid parameter: stiffness = "..tostring(stiffness))
|
||||||
|
return function(dx,dy, s)
|
||||||
|
local dts = love.timer.getDelta() * (s or stiffness)
|
||||||
|
return dx*dts, dy*dts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function new(x,y, zoom, rot, smoother)
|
||||||
|
x,y = x or love.graphics.getWidth()/2, y or love.graphics.getHeight()/2
|
||||||
|
zoom = zoom or 1
|
||||||
|
rot = rot or 0
|
||||||
|
smoother = smoother or camera.smooth.none() -- for locking, see below
|
||||||
|
return setmetatable({x = x, y = y, scale = zoom, rot = rot, smoother = smoother}, camera)
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:lookAt(x,y)
|
||||||
|
self.x, self.y = x, y
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:move(dx,dy)
|
||||||
|
self.x, self.y = self.x + dx, self.y + dy
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:position()
|
||||||
|
return self.x, self.y
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:rotate(phi)
|
||||||
|
self.rot = self.rot + phi
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:rotateTo(phi)
|
||||||
|
self.rot = phi
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:zoom(mul)
|
||||||
|
self.scale = self.scale * mul
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:zoomTo(zoom)
|
||||||
|
self.scale = zoom
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:attach(x,y,w,h, noclip)
|
||||||
|
x,y = x or 0, y or 0
|
||||||
|
w,h = w or love.graphics.getWidth(), h or love.graphics.getHeight()
|
||||||
|
|
||||||
|
self._sx,self._sy,self._sw,self._sh = love.graphics.getScissor()
|
||||||
|
if not noclip then
|
||||||
|
love.graphics.setScissor(x,y,w,h)
|
||||||
|
end
|
||||||
|
|
||||||
|
local cx,cy = x+w/2, y+h/2
|
||||||
|
love.graphics.push()
|
||||||
|
love.graphics.translate(cx, cy)
|
||||||
|
love.graphics.scale(self.scale)
|
||||||
|
love.graphics.rotate(self.rot)
|
||||||
|
love.graphics.translate(-self.x, -self.y)
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:detach()
|
||||||
|
love.graphics.pop()
|
||||||
|
love.graphics.setScissor(self._sx,self._sy,self._sw,self._sh)
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:draw(...)
|
||||||
|
local x,y,w,h,noclip,func
|
||||||
|
local nargs = select("#", ...)
|
||||||
|
if nargs == 1 then
|
||||||
|
func = ...
|
||||||
|
elseif nargs == 5 then
|
||||||
|
x,y,w,h,func = ...
|
||||||
|
elseif nargs == 6 then
|
||||||
|
x,y,w,h,noclip,func = ...
|
||||||
|
else
|
||||||
|
error("Invalid arguments to camera:draw()")
|
||||||
|
end
|
||||||
|
|
||||||
|
self:attach(x,y,w,h,noclip)
|
||||||
|
func()
|
||||||
|
self:detach()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- world coordinates to camera coordinates
|
||||||
|
function camera:cameraCoords(x,y, ox,oy,w,h)
|
||||||
|
ox, oy = ox or 0, oy or 0
|
||||||
|
w,h = w or love.graphics.getWidth(), h or love.graphics.getHeight()
|
||||||
|
|
||||||
|
-- x,y = ((x,y) - (self.x, self.y)):rotated(self.rot) * self.scale + center
|
||||||
|
local c,s = cos(self.rot), sin(self.rot)
|
||||||
|
x,y = x - self.x, y - self.y
|
||||||
|
x,y = c*x - s*y, s*x + c*y
|
||||||
|
return x*self.scale + w/2 + ox, y*self.scale + h/2 + oy
|
||||||
|
end
|
||||||
|
|
||||||
|
-- camera coordinates to world coordinates
|
||||||
|
function camera:worldCoords(x,y, ox,oy,w,h)
|
||||||
|
ox, oy = ox or 0, oy or 0
|
||||||
|
w,h = w or love.graphics.getWidth(), h or love.graphics.getHeight()
|
||||||
|
|
||||||
|
-- x,y = (((x,y) - center) / self.scale):rotated(-self.rot) + (self.x,self.y)
|
||||||
|
local c,s = cos(-self.rot), sin(-self.rot)
|
||||||
|
x,y = (x - w/2 - ox) / self.scale, (y - h/2 - oy) / self.scale
|
||||||
|
x,y = c*x - s*y, s*x + c*y
|
||||||
|
return x+self.x, y+self.y
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:mousePosition(ox,oy,w,h)
|
||||||
|
local mx,my = love.mouse.getPosition()
|
||||||
|
return self:worldCoords(mx,my, ox,oy,w,h)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- camera scrolling utilities
|
||||||
|
function camera:lockX(x, smoother, ...)
|
||||||
|
local dx, dy = (smoother or self.smoother)(x - self.x, self.y, ...)
|
||||||
|
self.x = self.x + dx
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:lockY(y, smoother, ...)
|
||||||
|
local dx, dy = (smoother or self.smoother)(self.x, y - self.y, ...)
|
||||||
|
self.y = self.y + dy
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:lockPosition(x,y, smoother, ...)
|
||||||
|
return self:move((smoother or self.smoother)(x - self.x, y - self.y, ...))
|
||||||
|
end
|
||||||
|
|
||||||
|
function camera:lockWindow(x, y, x_min, x_max, y_min, y_max, smoother, ...)
|
||||||
|
-- figure out displacement in camera coordinates
|
||||||
|
x,y = self:cameraCoords(x,y)
|
||||||
|
local dx, dy = 0,0
|
||||||
|
if x < x_min then
|
||||||
|
dx = x - x_min
|
||||||
|
elseif x > x_max then
|
||||||
|
dx = x - x_max
|
||||||
|
end
|
||||||
|
if y < y_min then
|
||||||
|
dy = y - y_min
|
||||||
|
elseif y > y_max then
|
||||||
|
dy = y - y_max
|
||||||
|
end
|
||||||
|
|
||||||
|
-- transform displacement to movement in world coordinates
|
||||||
|
local c,s = cos(-self.rot), sin(-self.rot)
|
||||||
|
dx,dy = (c*dx - s*dy) / self.scale, (s*dx + c*dy) / self.scale
|
||||||
|
|
||||||
|
-- move
|
||||||
|
self:move((smoother or self.smoother)(dx,dy,...))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- the module
|
||||||
|
return setmetatable({new = new, smooth = camera.smooth},
|
||||||
|
{__call = function(_, ...) return new(...) end})
|
|
@ -0,0 +1,98 @@
|
||||||
|
--[[
|
||||||
|
Copyright (c) 2010-2013 Matthias Richter
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name(s) of the above copyright holders
|
||||||
|
shall not be used in advertising or otherwise to promote the sale, use or
|
||||||
|
other dealings in this Software without prior written authorization.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local function include_helper(to, from, seen)
|
||||||
|
if from == nil then
|
||||||
|
return to
|
||||||
|
elseif type(from) ~= 'table' then
|
||||||
|
return from
|
||||||
|
elseif seen[from] then
|
||||||
|
return seen[from]
|
||||||
|
end
|
||||||
|
|
||||||
|
seen[from] = to
|
||||||
|
for k,v in pairs(from) do
|
||||||
|
k = include_helper({}, k, seen) -- keys might also be tables
|
||||||
|
if to[k] == nil then
|
||||||
|
to[k] = include_helper({}, v, seen)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return to
|
||||||
|
end
|
||||||
|
|
||||||
|
-- deeply copies `other' into `class'. keys in `other' that are already
|
||||||
|
-- defined in `class' are omitted
|
||||||
|
local function include(class, other)
|
||||||
|
return include_helper(class, other, {})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- returns a deep copy of `other'
|
||||||
|
local function clone(other)
|
||||||
|
return setmetatable(include({}, other), getmetatable(other))
|
||||||
|
end
|
||||||
|
|
||||||
|
local function new(class)
|
||||||
|
-- mixins
|
||||||
|
class = class or {} -- class can be nil
|
||||||
|
local inc = class.__includes or {}
|
||||||
|
if getmetatable(inc) then inc = {inc} end
|
||||||
|
|
||||||
|
for _, other in ipairs(inc) do
|
||||||
|
if type(other) == "string" then
|
||||||
|
other = _G[other]
|
||||||
|
end
|
||||||
|
include(class, other)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- class implementation
|
||||||
|
class.__index = class
|
||||||
|
class.init = class.init or class[1] or function() end
|
||||||
|
class.include = class.include or include
|
||||||
|
class.clone = class.clone or clone
|
||||||
|
|
||||||
|
-- constructor call
|
||||||
|
return setmetatable(class, {__call = function(c, ...)
|
||||||
|
local o = setmetatable({}, c)
|
||||||
|
o:init(...)
|
||||||
|
return o
|
||||||
|
end})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- interface for cross class-system compatibility (see https://github.com/bartbes/Class-Commons).
|
||||||
|
if class_commons ~= false and not common then
|
||||||
|
common = {}
|
||||||
|
function common.class(name, prototype, parent)
|
||||||
|
return new{__includes = {prototype, parent}}
|
||||||
|
end
|
||||||
|
function common.instance(class, ...)
|
||||||
|
return class(...)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- the module
|
||||||
|
return setmetatable({new = new, include = include, clone = clone},
|
||||||
|
{__call = function(_,...) return new(...) end})
|
|
@ -0,0 +1,108 @@
|
||||||
|
--[[
|
||||||
|
Copyright (c) 2010-2013 Matthias Richter
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name(s) of the above copyright holders
|
||||||
|
shall not be used in advertising or otherwise to promote the sale, use or
|
||||||
|
other dealings in this Software without prior written authorization.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local function __NULL__() end
|
||||||
|
|
||||||
|
-- default gamestate produces error on every callback
|
||||||
|
local state_init = setmetatable({leave = __NULL__},
|
||||||
|
{__index = function() error("Gamestate not initialized. Use Gamestate.switch()") end})
|
||||||
|
local stack = {state_init}
|
||||||
|
local initialized_states = setmetatable({}, {__mode = "k"})
|
||||||
|
local state_is_dirty = true
|
||||||
|
|
||||||
|
local GS = {}
|
||||||
|
function GS.new(t) return t or {} end -- constructor - deprecated!
|
||||||
|
|
||||||
|
local function change_state(stack_offset, to, ...)
|
||||||
|
local pre = stack[#stack]
|
||||||
|
|
||||||
|
-- initialize only on first call
|
||||||
|
;(initialized_states[to] or to.init or __NULL__)(to)
|
||||||
|
initialized_states[to] = __NULL__
|
||||||
|
|
||||||
|
stack[#stack+stack_offset] = to
|
||||||
|
state_is_dirty = true
|
||||||
|
return (to.enter or __NULL__)(to, pre, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GS.switch(to, ...)
|
||||||
|
assert(to, "Missing argument: Gamestate to switch to")
|
||||||
|
assert(to ~= GS, "Can't call switch with colon operator")
|
||||||
|
;(stack[#stack].leave or __NULL__)(stack[#stack])
|
||||||
|
return change_state(0, to, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GS.push(to, ...)
|
||||||
|
assert(to, "Missing argument: Gamestate to switch to")
|
||||||
|
assert(to ~= GS, "Can't call push with colon operator")
|
||||||
|
return change_state(1, to, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GS.pop(...)
|
||||||
|
assert(#stack > 1, "No more states to pop!")
|
||||||
|
local pre, to = stack[#stack], stack[#stack-1]
|
||||||
|
stack[#stack] = nil
|
||||||
|
;(pre.leave or __NULL__)(pre)
|
||||||
|
state_is_dirty = true
|
||||||
|
return (to.resume or __NULL__)(to, pre, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GS.current()
|
||||||
|
return stack[#stack]
|
||||||
|
end
|
||||||
|
|
||||||
|
-- fetch event callbacks from love.handlers
|
||||||
|
local all_callbacks = { 'draw', 'errhand', 'update' }
|
||||||
|
for k in pairs(love.handlers) do
|
||||||
|
all_callbacks[#all_callbacks+1] = k
|
||||||
|
end
|
||||||
|
|
||||||
|
function GS.registerEvents(callbacks)
|
||||||
|
local registry = {}
|
||||||
|
callbacks = callbacks or all_callbacks
|
||||||
|
for _, f in ipairs(callbacks) do
|
||||||
|
registry[f] = love[f] or __NULL__
|
||||||
|
love[f] = function(...)
|
||||||
|
registry[f](...)
|
||||||
|
return GS[f](...)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- forward any undefined functions
|
||||||
|
setmetatable(GS, {__index = function(_, func)
|
||||||
|
-- call function only if at least one 'update' was called beforehand
|
||||||
|
-- (see issue #46)
|
||||||
|
if not state_is_dirty or func == 'update' then
|
||||||
|
state_is_dirty = false
|
||||||
|
return function(...)
|
||||||
|
return (stack[#stack][func] or __NULL__)(stack[#stack], ...)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return __NULL__
|
||||||
|
end})
|
||||||
|
|
||||||
|
return GS
|
|
@ -0,0 +1,102 @@
|
||||||
|
--[[
|
||||||
|
Copyright (c) 2012-2013 Matthias Richter
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name(s) of the above copyright holders
|
||||||
|
shall not be used in advertising or otherwise to promote the sale, use or
|
||||||
|
other dealings in this Software without prior written authorization.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local Registry = {}
|
||||||
|
Registry.__index = function(self, key)
|
||||||
|
return Registry[key] or (function()
|
||||||
|
local t = {}
|
||||||
|
rawset(self, key, t)
|
||||||
|
return t
|
||||||
|
end)()
|
||||||
|
end
|
||||||
|
|
||||||
|
function Registry:register(s, f)
|
||||||
|
self[s][f] = f
|
||||||
|
return f
|
||||||
|
end
|
||||||
|
|
||||||
|
function Registry:emit(s, ...)
|
||||||
|
for f in pairs(self[s]) do
|
||||||
|
f(...)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Registry:remove(s, ...)
|
||||||
|
local f = {...}
|
||||||
|
for i = 1,select('#', ...) do
|
||||||
|
self[s][f[i]] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Registry:clear(...)
|
||||||
|
local s = {...}
|
||||||
|
for i = 1,select('#', ...) do
|
||||||
|
self[s[i]] = {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Registry:emitPattern(p, ...)
|
||||||
|
for s in pairs(self) do
|
||||||
|
if s:match(p) then self:emit(s, ...) end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Registry:registerPattern(p, f)
|
||||||
|
for s in pairs(self) do
|
||||||
|
if s:match(p) then self:register(s, f) end
|
||||||
|
end
|
||||||
|
return f
|
||||||
|
end
|
||||||
|
|
||||||
|
function Registry:removePattern(p, ...)
|
||||||
|
for s in pairs(self) do
|
||||||
|
if s:match(p) then self:remove(s, ...) end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Registry:clearPattern(p)
|
||||||
|
for s in pairs(self) do
|
||||||
|
if s:match(p) then self[s] = {} end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- instancing
|
||||||
|
function Registry.new()
|
||||||
|
return setmetatable({}, Registry)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- default instance
|
||||||
|
local default = Registry.new()
|
||||||
|
|
||||||
|
-- module forwards calls to default instance
|
||||||
|
local module = {}
|
||||||
|
for k in pairs(Registry) do
|
||||||
|
if k ~= "__index" then
|
||||||
|
module[k] = function(...) return default[k](default, ...) end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return setmetatable(module, {__call = Registry.new})
|