When player is to high, camera follows

Textures can be repeated over entity
This commit is contained in:
= 2017-05-25 13:26:08 +02:00
parent 66e381ad01
commit bf848cd46c
53 changed files with 667 additions and 1342 deletions

View File

@ -90,7 +90,6 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/reports" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />

View File

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<levelPack name="Levelpack 1">
<levels>
<level goalX="24" number="1">
<terrain endX="27" height="-0.6">
<gaps>
<gap leftEdge="4" rightEdge="5"/>
<gap leftEdge="12" rightEdge="13"/>
<gap leftEdge="16" rightEdge="16.5"/>
<gap leftEdge="16.8" rightEdge="17.3"/>
</gaps>
</terrain>
<obstacles>
<obstacle height="0.3" leftEdge="9" rightEdge="10" type="default"/>
<obstacle height="0.2" leftEdge="13" rightEdge="14" type="default"/>
<obstacle height="0.3" leftEdge="18" rightEdge="20" type="default"/>
<obstacle height="0.5" leftEdge="20" rightEdge="21" type="default"/>
<obstacle height="0.1" leftEdge="21" rightEdge="22" type="default"/>
</obstacles>
</level>
<level goalX="21.25" number="2">
<terrain endX="21" height="-0.6">
<gaps>
<gap leftEdge="1" rightEdge="1.7" />
<gap leftEdge="8.9" rightEdge="9.6" />
<gap leftEdge="9.7" rightEdge="10.4" />
<gap leftEdge="15" rightEdge="16.1" />
</gaps>
</terrain>
<obstacles>
<obstacle height="0.3" leftEdge="1.73" rightEdge="2.3" type="default" />
<obstacle height="0.5" leftEdge="2.9" rightEdge="3.6" type="default" />
<obstacle height="0.3" leftEdge="5" rightEdge="7" type="default" />
<obstacle height="0.52" leftEdge="7.1" rightEdge="8.5" type="default" />
<obstacle height="0.5" leftEdge="11.4" rightEdge="12.8" type="default" />
<obstacle height="0.5" leftEdge="13.9" rightEdge="14.2" type="default" />
<obstacle height="0.24" leftEdge="16.8" rightEdge="18.3" type="default" />
<obstacle height="0.35" leftEdge="18.30001" rightEdge="18.8" type="default" />
<obstacle height="0.54" leftEdge="18.80001" rightEdge="19.4" type="default" />
<obstacle height="0.41" leftEdge="19.40001" rightEdge="20.5" type="default" />
</obstacles>
</level>
</levels>
</levelPack>

View File

@ -1,284 +1,272 @@
<levelPack id="2">
<theme>GRASSLANDS</theme>
<levelPack id="1">
<world>GRASSLANDS</world>
<levels class="java.util.ArrayList">
<level packId="2" id="1" goalX="22.606565" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="1" id="1" goalX="16.896702" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.5854988" width="7.1709976"/>
<tileData x="10.153494" width="10.408993"/>
<tileData x="21.640932" width="11.797886"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.873024" rightEdge="11.427025" height="0.304" y="-0.448"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.860029" rightEdge="15.360029" height="0.3" y="-0.45000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.096622" rightEdge="22.096622" height="0.25" y="-0.47500002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="22.166656" rightEdge="22.666656" height="0.639" y="-0.28050002"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="11.159975" y="-0.15999995"/>
<positionData x="15.106676" y="-0.14000002"/>
<positionData x="22.043303" y="-0.20666662"/>
</stars>
</level>
<level packId="2" id="2" goalX="22.366613" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.9448314" width="7.8896627"/>
<tileData x="8.345928" width="4.4445295"/>
<tileData x="15.41926" width="8.228134"/>
<tileData x="20.374657" width="0.4826603"/>
<tileData x="24.32193" width="6.43589"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.3708305" rightEdge="4.8758307" height="0.2" y="-0.5"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.334382" rightEdge="11.912381" height="0.319" y="-0.44050002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.4509985" rightEdge="3.3089983" height="0.275" y="-0.46250004"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6111658" rightEdge="2.3221657" height="0.338" y="-0.43100002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.037212" rightEdge="16.856213" height="0.435" y="-0.38250002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.873312" rightEdge="17.873312" height="0.367" y="-0.41650003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.884027" rightEdge="18.896029" height="0.327" y="-0.4365"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.046677" rightEdge="19.546677" height="0.884" y="-0.15800002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.948046" rightEdge="16.852045" height="0.5" y="-0.35000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.123379" rightEdge="20.623379" height="0.5" y="-0.35000002"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="10.94335" y="-0.61999965"/>
<positionData x="15.7367" y="0.3199999"/>
<positionData x="18.893328" y="-0.12666662"/>
</stars>
</level>
<level packId="2" id="3" goalX="19.200012" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.4151678" width="5.1696644"/>
<tileData x="7.1337633" width="8.020197"/>
<tileData x="15.293072" width="7.220421"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.00651" rightEdge="8.67351" height="0.319" y="-0.44050002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.703371" rightEdge="12.7233715" height="0.299" y="-0.4505"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.164396" rightEdge="15.762396" height="0.466" y="-0.36700004"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.891703" rightEdge="16.901701" height="0.402" y="-0.39900002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.998373" rightEdge="18.248373" height="0.353" y="-0.42350003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="18.396694" rightEdge="18.896694" height="0.789" y="-0.20550004"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.6399994" y="0.10666669"/>
<positionData x="8.793346" y="-0.4733331"/>
<positionData x="12.253348" y="-0.13333318"/>
</stars>
</level>
<level packId="2" id="4" goalX="23.933224" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="6.06402" width="18.12804"/>
<tileData x="19.269924" width="3.0757751"/>
<tileData x="25.439342" width="4.201065"/>
<tileData x="1.0092487" width="8.018497"/>
<tileData x="13.61743" width="15.911868"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="23.786556" width="0.29333496"/>
<tileData x="6.948351" width="19.896702"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.9489989" rightEdge="2.5509992" height="0.354" y="-0.42300004"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.512207" rightEdge="21.241207" height="0.408" y="0.50399995"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.408872" rightEdge="11.137872" height="0.803" y="-0.19850004"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.196732" rightEdge="14.196732" height="0.5" y="0.3966666"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="14.865067" rightEdge="17.775066" height="0.299" y="0.48666632"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.824553" rightEdge="18.475554" height="1.415" y="0.10749996"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="5.79467" rightEdge="8.37867" height="0.544" y="-0.328"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="12.00004" rightEdge="12.50004" height="0.382" y="-0.40900004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="11.560022" y="-0.26000002"/>
<positionData x="16.310017" y="0.80666655"/>
<positionData x="21.9833" y="-0.099999994"/>
<positionData x="5.3666835" y="0.7866664"/>
<positionData x="12.263359" y="-0.0266667"/>
<positionData x="16.58005" y="0.77999955"/>
</stars>
<energy x="12.243361" y="-0.40666705"/>
</level>
<level packId="2" id="5" goalX="16.249996" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="1" id="2" goalX="23.896725" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="1.9915047" width="9.983009"/>
<tileData x="12.045149" width="7.65627"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.3669987" rightEdge="2.7929988" height="1.074" y="-0.06300002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="12.000204" rightEdge="13.373203" height="0.946" y="-0.12700003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="13.539708" rightEdge="15.093709" height="0.725" y="-0.23750001"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.29672" rightEdge="15.79672" height="1.539" y="0.1695"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.5799987" y="0.62"/>
<positionData x="7.5566673" y="0.26000008"/>
<positionData x="11.85002" y="-0.4533334"/>
</stars>
</level>
<level packId="2" id="6" goalX="27.539873" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.4867487" width="6.9734974"/>
<tileData x="7.8615937" width="5.390193"/>
<tileData x="13.799343" width="5.285305"/>
<tileData x="21.770779" width="9.7455635"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.1131666" rightEdge="1.5001667" height="0.941" y="-0.12950003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6498328" rightEdge="1.7768329" height="0.902" y="-0.14900002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.9103339" rightEdge="2.1163337" height="0.838" y="-0.18100002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.224499" rightEdge="2.415499" height="0.735" y="-0.23250002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.500666" rightEdge="2.6726658" height="0.613" y="-0.29350004"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.7449994" rightEdge="3.9749994" height="0.5" y="-0.35000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="5.1713314" rightEdge="5.955332" height="0.186" y="-0.507"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.060041" rightEdge="10.560041" height="0.843" y="-0.17850003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.506636" rightEdge="20.806635" height="0.558" y="-0.321"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.5105" rightEdge="20.8095" height="0.286" y="0.9333331"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.943075" rightEdge="16.437075" height="0.231" y="-0.48450002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="25.300407" rightEdge="26.619408" height="0.612" y="-0.29400003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="23.873228" rightEdge="24.373228" height="0.5" y="-0.35000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="24.34991" rightEdge="24.84991" height="0.5" y="-0.35000002"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="4.586666" y="-0.5866665"/>
<positionData x="10.696706" y="-0.46666694"/>
<positionData x="20.64665" y="0.39999995"/>
</stars>
</level>
<level packId="2" id="7" goalX="25.866587" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="2.1916704" width="10.383341"/>
<tileData x="11.639271" width="7.31187"/>
<tileData x="17.96075" width="3.4850826"/>
<tileData x="22.583197" width="4.5598145"/>
<tileData x="1.6106672" width="9.221334"/>
<tileData x="12.331865" width="10.333063"/>
<tileData x="20.876247" width="4.5356846"/>
<tileData x="25.874727" width="4.7972755"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="25.669922" width="0.39332962"/>
<tileData x="10.448362" width="26.896725"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.9593315" rightEdge="3.9473314" height="0.313" y="-0.01333334"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.987667" rightEdge="5.565667" height="0.272" y="-0.046666723"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="10.1723585" rightEdge="12.214358" height="0.095" y="0.027500032"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.595845" rightEdge="6.950845" height="0.19" y="-0.073333286"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="8.669004" rightEdge="10.151005" height="0.218" y="0.0023332927"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="6.992841" rightEdge="7.353841" height="0.558" y="-0.321"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.32099" rightEdge="19.718988" height="0.762" y="-0.21900001"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="19.963318" rightEdge="20.463318" height="0.5" y="0.7533332"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.287636" rightEdge="21.245636" height="0.435" y="-0.38250002"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="12.539991" rightEdge="13.659992" height="0.395" y="0.124166645"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.773358" rightEdge="12.273358" height="0.884" y="0.5499999"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.503757" rightEdge="21.642757" height="0.327" y="0.3799999"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="24.1271" rightEdge="24.886099" height="0.694" y="-0.25300002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.2166634" rightEdge="6.2166634" height="0.293" y="-0.45350003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.9867525" rightEdge="15.406753" height="0.586" y="-0.307">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.434769" rightEdge="17.498768" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="23.488386" rightEdge="24.138388" height="0.331" y="-0.43450004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.798721" rightEdge="14.454721" height="0.204" y="-0.49800003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="6.6800065" y="-0.38666666"/>
<positionData x="13.066695" y="0.48666692"/>
<positionData x="20.679989" y="0.85333335"/>
<positionData x="6.6933284" y="-0.57999974"/>
<positionData x="14.833428" y="-0.4399998"/>
<positionData x="18.076752" y="-0.50000006"/>
</stars>
<energy x="16.436743" y="-0.37333328"/>
</level>
<level packId="2" id="8" goalX="17.896662" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="1" id="3" goalX="25.803282" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-2.0766673" width="1.8466654"/>
<tileData x="2.5266657" width="0.7200012"/>
<tileData x="9.478603" width="3.1838756"/>
<tileData x="16.133102" width="3.5271206"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.979664" rightEdge="5.9736643" height="0.286" y="-0.89333284"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.057998" rightEdge="3.9619977" height="0.299" y="-0.81333286"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.9729972" rightEdge="4.9669976" height="0.286" y="-0.8533326"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.997839" rightEdge="6.8288393" height="0.231" y="-0.9199996"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.854198" rightEdge="13.119198" height="1.02" y="0.023333304"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="13.15453" rightEdge="13.805531" height="0.639" y="0.13999994"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.541548" rightEdge="15.698547" height="0.422" y="-0.38900003"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.286684" rightEdge="14.286684" height="0.218" y="-1.1266662"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.876839" rightEdge="7.689839" height="0.286" y="-1.0"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-1.0233328" rightEdge="1.9766672" height="0.136" y="-0.86666656"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.543333" y="0.3933335"/>
<positionData x="14.12338" y="-0.79999965"/>
<positionData x="17.523336" y="0.4799996"/>
</stars>
</level>
<level packId="2" id="9" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
<tileData x="2.928771" width="11.857542"/>
<tileData x="14.645462" width="3.5258408"/>
<tileData x="20.861193" width="7.2456512"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
<tileData x="6.5533686" width="19.106737"/>
<tileData x="20.95501" width="9.696545"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="0.45000017" rightEdge="0.95000017" height="0.5" y="-0.35000002">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.3533306" rightEdge="5.3533306" height="0.357" y="-0.42150003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-0.103333026" rightEdge="0.39666697" height="0.5" y="0.22666666">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="5.385499" rightEdge="7.3344994" height="0.688" y="-0.256">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="true" leftEdge="-1.7966661" rightEdge="-1.2966661" height="0.5" y="-0.35000002">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.4723425" rightEdge="8.834342" height="1.032" y="-0.08400005">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="-0.7099999" rightEdge="-0.20999992" height="0.5" y="0.21999998">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="7.432005" rightEdge="8.368005" height="0.637" y="-0.2815">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="9.223393" rightEdge="12.223393" height="0.127" y="-0.93333316">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="21.176678" rightEdge="21.676678" height="0.408" y="-0.39600003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="21.729795" rightEdge="22.436796" height="0.318" y="-0.44100004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="22.456125" rightEdge="23.297125" height="0.242" y="-0.47900003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="23.333607" rightEdge="24.479607" height="0.178" y="-0.51100004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6883316" rightEdge="2.3383317" height="0.382" y="-0.40900004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="5.236675" y="-0.10000009"/>
<positionData x="12.743379" y="-0.87999964"/>
<positionData x="25.046606" y="0.44000027"/>
</stars>
<energy x="9.043368" y="-0.8999996"/>
</level>
<level packId="1" id="4" goalX="23.266603" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.27333355" width="5.453333"/>
<tileData x="10.069099" width="5.231532"/>
<tileData x="17.179937" width="0.2761612"/>
<tileData x="24.247623" width="8.61121"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="10.133302" width="26.266603"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.5106652" rightEdge="3.5426652" height="0.5" y="-0.9066665">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.6169972" rightEdge="4.7829976" height="0.5" y="-0.9799999">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.875505" rightEdge="5.9645047" height="0.5" y="-1.0799999">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.0315022" rightEdge="7.3885026" height="0.5" y="-0.76666665">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="9.111034" rightEdge="11.289034" height="0.382" y="-0.40900004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.36054" rightEdge="12.65954" height="0.306" y="-0.44700003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="12.702217" rightEdge="15.511217" height="0.166" y="-0.026666649">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="15.972044" rightEdge="18.208044" height="0.255" y="0.29333323">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.377197" rightEdge="18.836197" height="0.229" y="0.1666667">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="19.030016" rightEdge="19.530016" height="0.242" y="0.0066666286">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.63783" rightEdge="20.828833" height="1.108" y="0.35999984">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="22.10714" rightEdge="22.56614" height="0.331" y="-0.3933331">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="4.8966684" y="-0.0933331"/>
<positionData x="12.523364" y="-0.09333331"/>
<positionData x="21.769947" y="0.3733334"/>
</stars>
<energy x="17.186693" y="-0.41333315"/>
</level>
<level packId="1" id="5" goalX="25.756561" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.3149171" width="5.370166"/>
<tileData x="5.247172" width="3.9280117"/>
<tileData x="8.653435" width="0.0625"/>
<tileData x="9.939764" width="0.062160492"/>
<tileData x="12.285448" width="3.8192024"/>
<tileData x="16.539871" width="3.5896454"/>
<tileData x="21.039742" width="2.40209"/>
<tileData x="26.437824" width="7.5440884"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="11.378281" width="28.756561"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="6.166328" rightEdge="7.1603284" height="0.293" y="-0.45350003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="16.936665" rightEdge="19.076664" height="0.217" y="0.30666652">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="7.203003" rightEdge="8.6170025" height="0.127" y="-0.41333312">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="8.687184" rightEdge="9.986184" height="0.153" y="-0.47333324">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.379863" rightEdge="11.0868635" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="14.776228" rightEdge="15.617228" height="0.344" y="-0.0066666957">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="15.643713" rightEdge="16.809713" height="0.293" y="-0.050000057">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.627857" rightEdge="18.258858" height="0.318" y="-0.44100004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.325031" rightEdge="19.83503" height="0.166" y="-0.41999984">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.8000035" y="-0.77999914"/>
<positionData x="11.243364" y="-0.43999982"/>
<positionData x="16.21668" y="0.34666675"/>
</stars>
<energy x="19.086668" y="-0.81333315"/>
</level>
<level packId="1" id="6" goalX="16.046711" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="2.3134198" width="10.62684"/>
<tileData x="11.750938" width="5.8622084"/>
<tileData x="17.74903" width="5.2619705"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="6.5233555" width="19.046711"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.5633323" rightEdge="2.9833324" height="0.866" y="-0.16700003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="12.6995325" rightEdge="13.100532" height="0.42" y="-0.39000005">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="13.132866" rightEdge="13.533865" height="0.611" y="-0.29450002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="13.566537" rightEdge="14.693538" height="0.344" y="-0.42800003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.7666643" y="0.8799996"/>
<positionData x="8.200006" y="0.8999994"/>
<positionData x="12.566701" y="-0.4666665"/>
</stars>
<energy x="13.326665" y="-0.40666687"/>
</level>
<level packId="1" id="7" goalX="10.643346" startSpeed="0.2" endSpeed="0.2" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="3.821673" width="13.643346"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="3.821673" width="13.643346"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="0.5466671" rightEdge="3.546667" height="0.917" y="-0.14150003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.6133304" rightEdge="6.6133304" height="1.414" y="0.10699999">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="6.633338" rightEdge="9.633338" height="1.057" y="-0.0715">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="2" id="10" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="1" id="8" goalX="3.0" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="-0.68833333" rightEdge="0.82166666" height="1.541" y="0.17049998">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="2" id="11" goalX="22.569973" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.23241591" width="6.464832"/>
<tileData x="8.307598" width="7.651533"/>
<tileData x="18.551668" width="8.036609"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="9.7849865" width="25.569973"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.3666725" rightEdge="8.8666725" height="0.344" y="-0.42800003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.186697" rightEdge="19.606695" height="0.4" y="-0.40000004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.026669" rightEdge="6.026669" height="0.229" y="0.7399997">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="2" id="12" goalX="28.746628" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.34033322" width="5.3193336"/>
<tileData x="9.0306835" width="10.206701"/>
<tileData x="22.446331" width="12.600594"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="12.873314" width="31.746628"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.236673" rightEdge="8.736673" height="0.8" y="-0.20000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="21.91664" rightEdge="22.41664" height="0.968" y="-0.11600003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="1.5333319" rightEdge="4.533332" height="0.344" y="0.5999999">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.538332" rightEdge="5.6083317" height="0.306" y="0.59999996">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<obstacles class="java.util.ArrayList"/>
<stars class="java.util.ArrayList"/>
</level>
</levels>

View File

@ -1,115 +0,0 @@
<levelPack id="5">
<theme>TESTCAVE</theme>
<levels class="java.util.ArrayList">
<level packId="5" id="1" goalX="4.3969" startSpeed="0.6" endSpeed="0.6" terrainEdge="-0.176" ceilingEdge="0.747">
<terrainTiles class="java.util.ArrayList">
<tileData x="-2.4650004" width="1.0699992"/>
<tileData x="1.3783364" width="5.4166737"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="-2.6666667" width="0.6666665"/>
<tileData x="0.59333193" width="4.6533327"/>
<tileData x="3.9584491" width="0.8769021"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.6066647" rightEdge="4.1066647" height="0.5" y="0.074">
<moveComponent width="5.0" height="4.217" x="3.2333317" y="-0.729" speed="0.508"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6499996" rightEdge="2.1499996" height="0.5" y="0.074">
<moveComponent width="3.939" height="1.275" x="0.0" y="-0.729" speed="0.896"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="-2.7566657" rightEdge="-2.2566657" height="0.5" y="0.074">
<moveComponent width="0.076" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="true" leftEdge="2.429999" rightEdge="2.929999" height="0.5" y="0.26666665">
<moveComponent width="2.841" height="1.212" x="2.679999" y="0.26666665" speed="0.136"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
<energy x="0.013333277" y="0.32666668"/>
</level>
<level packId="5" id="2" goalX="13.38005" startSpeed="0.5" endSpeed="0.6" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="2.2557545" width="10.511509"/>
<tileData x="8.660347" width="0.8236685"/>
<tileData x="11.630615" width="3.498868"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="5.1900253" width="16.38005"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="0.46000051" rightEdge="0.9600005" height="0.694" y="0.15333341"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="1.0306667" rightEdge="1.4826666" height="0.789" y="0.08666667"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="1.5308328" rightEdge="2.2358327" height="0.68" y="0.07333334"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.376332" rightEdge="2.810332" height="0.816" y="0.25333333"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.9108317" rightEdge="3.2358315" height="0.844" y="0.15333337"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.3118312" rightEdge="3.6548312" height="0.98" y="-0.110000014"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.883165" rightEdge="4.190165" height="0.68" y="-0.26000002"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.8149962" rightEdge="5.2849965" height="0.422" y="0.25999996"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.329664" rightEdge="5.9436646" height="0.544" y="0.060000002"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.0306664" rightEdge="6.482666" height="0.83" y="0.13333333"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.600003" rightEdge="6.980003" height="0.735" y="0.033333324"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="7.1111717" rightEdge="7.3821716" height="0.626" y="0.19999996"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="7.416671" rightEdge="8.916671" height="0.272" y="0.1866666"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="9.453531" rightEdge="10.266531" height="0.136" y="-0.532"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.386221" rightEdge="13.067221" height="0.34" y="0.07999999"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="3.0633316" y="-0.43333337"/>
<positionData x="9.686677" y="-0.76000005"/>
<positionData x="13.110031" y="0.8466663"/>
</stars>
</level>
<level packId="5" id="3" goalX="16.630037" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="0.692">
<terrainTiles class="java.util.ArrayList">
<tileData x="6.8150187" width="19.630037"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="-1.0400832" width="3.9198337"/>
<tileData x="8.253105" width="9.812542"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="true" deadly="true" leftEdge="1.9166656" rightEdge="2.4166656" height="0.5" y="0.2766666">
<moveComponent width="0.0" height="1.717" x="2.1666656" y="0.2766666" speed="0.664"/>
</obstacleData>
<obstacleData floating="false" moving="true" deadly="false" leftEdge="5.3966713" rightEdge="5.8966713" height="0.5" y="-0.35000002">
<moveComponent width="2.841" height="0.0" x="5.6466713" y="-0.35000002" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="true" leftEdge="9.8766775" rightEdge="10.3766775" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="14.763373" rightEdge="15.263373" height="0.5" y="0.21666658">
<moveComponent width="2.386" height="1.351" x="15.013373" y="0.21666658" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="5" id="4" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="true" deadly="false" leftEdge="-0.55199987" rightEdge="-0.20799984" height="0.357" y="-0.42150003">
<moveComponent width="0.0" height="1.086" x="-0.37999985" y="-0.42150003" speed="0.5"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="-1.6233331" rightEdge="-1.1233331" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="1.275" x="-1.3733331" y="-0.35000002" speed="0.508"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="5" id="9" goalX="3.0" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList"/>
<stars class="java.util.ArrayList"/>
</level>
</levels>
</levelPack>

View File

@ -1,5 +1,6 @@
uniform mat4 mvpMatrix;
uniform mat4 transformationMatrix;
uniform vec2 texCoordScaling;
attribute vec4 position;
attribute vec2 texCoords;
@ -11,5 +12,9 @@ void main() {
vec4 transformatedPosition = transformationMatrix * position;
gl_Position = mvpMatrix * transformatedPosition;
pass_TexCoords = texCoords;
if(texCoordScaling.x != 0.0)
pass_TexCoords.x *= texCoordScaling.x;
if(texCoordScaling.y != 0.0)
pass_TexCoords.y *= texCoordScaling.y;
}

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<levelPack name="Testpack">
<levels>
<level goalX="110" number="1">
<terrain endX="100" height="1.0">
<gaps></gaps>
</terrain>
<obstacles></obstacles>
</level>
<level goalX="110" number="2">
<terrain endX="100" height="-0.6">
<gaps></gaps>
</terrain>
<obstacles></obstacles>
</level>
<level goalX="110" number="3">
<terrain endX="100" height="-0.6">
<gaps>
<gap leftEdge="10" rightEdge="11" />
<gap leftEdge="20" rightEdge="21" />
<gap leftEdge="30" rightEdge="31" />
<gap leftEdge="40" rightEdge="41" />
<gap leftEdge="50" rightEdge="51" />
<gap leftEdge="60" rightEdge="61" />
<gap leftEdge="70" rightEdge="71" />
<gap leftEdge="80" rightEdge="81" />
<gap leftEdge="90" rightEdge="91" />
</gaps>
</terrain>
<obstacles></obstacles>
</level>
</levels>
</levelPack>

View File

@ -43,14 +43,14 @@
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_seekbar_thumb_material.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_seekbar_thumb_material.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\xml_background_tutorialtextview.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\xml_background_tutorialtextview.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_btn_check_material.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_btn_check_material.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\xml_background_tutorialtextview.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\xml_background_tutorialtextview.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_spinner_textfield_background_material.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_spinner_textfield_background_material.xml"
@ -167,14 +167,14 @@
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\backgrounds_game_mountains.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\backgrounds_game_mountains.png"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_unlockedbutton.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_unlockedbutton.png"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\guis_playerarrow.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\guis_playerarrow.png"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_unlockedbutton.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_unlockedbutton.png"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_ratingbar_full_material.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_ratingbar_full_material.xml"
@ -195,14 +195,14 @@
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tip_icon.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tip_icon.png"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_cab_background_top_material.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_cab_background_top_material.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_emptybutton.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_emptybutton.png"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_cab_background_top_material.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_cab_background_top_material.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_text_cursor_material.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_text_cursor_material.xml"
@ -219,14 +219,14 @@
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\obstacles_grass.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\obstacles_grass.png"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_list_selector_holo_light.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_list_selector_holo_light.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_switch_thumb_material.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_switch_thumb_material.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_list_selector_holo_light.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_list_selector_holo_light.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_bombbutton.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_bombbutton.png"

View File

@ -3,22 +3,22 @@
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\levels.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\levels.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\toolshop.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\toolshop.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\tutorial.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\tutorial.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\abc_screen_simple_overlay_action_mode.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\layout\\abc_screen_simple_overlay_action_mode.xml"
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\toolshop.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\toolshop.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\worlds.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\worlds.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\abc_screen_simple_overlay_action_mode.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\layout\\abc_screen_simple_overlay_action_mode.xml"
},
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\abc_screen_simple.xml",
"source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\layout\\abc_screen_simple.xml"

View File

@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="output"><source path="C:\Users\Julian\.android\build-cache\7988038707870a182a4d2c219c6a86a58ec3478f\output\assets"/></dataSet><dataSet config="output"><source path="C:\Users\Julian\.android\build-cache\2232000db64551c7682d41127fbc27c912efcc3d\output\assets"/></dataSet><dataSet config="main"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets"><file name="fontBaron.ttf" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\fontBaron.ttf"/><file name="Grasslands.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\Grasslands.xml"/><file name="Icy Mountains.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\Icy Mountains.xml"/><file name="levelpacks/Beginning.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Beginning.xml"/><file name="levelpacks/Grasslands.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Grasslands.xml"/><file name="levelpacks/Icy Mountains.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Icy Mountains.xml"/><file name="levelpacks/Testcave.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Testcave.xml"/><file name="levelpack_01.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpack_01.xml"/><file name="particleEffects/collectEnergy.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\collectEnergy.pe"/><file name="particleEffects/collectStar.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\collectStar.pe"/><file name="particleEffects/explosion.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\explosion.pe"/><file name="particleEffects/magnet.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\magnet.pe"/><file name="particleEffects/particle.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\particle.png"/><file name="particleEffects/star.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\star.png"/><file name="shader/entityFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\entityFragmentShader.glsl"/><file name="shader/entityVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\entityVertexShader.glsl"/><file name="shader/particleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\particleFragmentShader.glsl"/><file name="shader/simpleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\simpleFragmentShader.glsl"/><file name="shader/simpleVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\simpleVertexShader.glsl"/><file name="shader/terrainVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\terrainVertexShader.glsl"/><file name="testlevelpack.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\testlevelpack.xml"/></source><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\build\generated\assets\shaders\debug"/></dataSet><dataSet config="debug"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\debug\assets"/></dataSet></merger>
<merger version="3"><dataSet config="output"><source path="C:\Users\Julian\.android\build-cache\7988038707870a182a4d2c219c6a86a58ec3478f\output\assets"/></dataSet><dataSet config="output"><source path="C:\Users\Julian\.android\build-cache\2232000db64551c7682d41127fbc27c912efcc3d\output\assets"/></dataSet><dataSet config="main"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets"><file name="fontBaron.ttf" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\fontBaron.ttf"/><file name="levelpacks/Grasslands.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Grasslands.xml"/><file name="particleEffects/collectEnergy.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\collectEnergy.pe"/><file name="particleEffects/collectStar.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\collectStar.pe"/><file name="particleEffects/explosion.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\explosion.pe"/><file name="particleEffects/magnet.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\magnet.pe"/><file name="particleEffects/particle.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\particle.png"/><file name="particleEffects/star.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\star.png"/><file name="shader/entityFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\entityFragmentShader.glsl"/><file name="shader/entityVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\entityVertexShader.glsl"/><file name="shader/particleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\particleFragmentShader.glsl"/><file name="shader/simpleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\simpleFragmentShader.glsl"/><file name="shader/simpleVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\simpleVertexShader.glsl"/><file name="shader/terrainVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\terrainVertexShader.glsl"/></source><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\build\generated\assets\shaders\debug"/></dataSet><dataSet config="debug"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\debug\assets"/></dataSet></merger>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 622 B

After

Width:  |  Height:  |  Size: 179 B

View File

@ -51,6 +51,6 @@
android:layout_marginLeft="48dp"
android:layout_marginStart="48dp"
android:text="Lv to 100"
android:visibility="gone"/>
android:visibility="visible"/>
</RelativeLayout>

View File

@ -1,285 +0,0 @@
<levelPack>
<theme>GRASSLANDS</theme>
<levels class="java.util.ArrayList">
<level number="1" goalX="22.606565" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.5854988" width="7.1709976"/>
<tileData x="10.153494" width="10.408993"/>
<tileData x="21.640932" width="11.797886"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.873024" rightEdge="11.427025" height="0.304" y="-0.448"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.860029" rightEdge="15.360029" height="0.3" y="-0.45000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.096622" rightEdge="22.096622" height="0.25" y="-0.47500002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="22.166656" rightEdge="22.666656" height="0.639" y="-0.28050002"/>
</obstacles>
<stars class="java.util.ArrayList">
<starData index="1" x="11.159975" y="-0.15999995" width="0.25" height="0.25"/>
<starData index="2" x="15.106676" y="-0.14000002" width="0.25" height="0.25"/>
<starData index="3" x="22.043303" y="-0.20666662" width="0.25" height="0.25"/>
</stars>
</level>
<level number="2" goalX="22.366613" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.9448314" width="7.8896627"/>
<tileData x="8.345928" width="4.4445295"/>
<tileData x="15.41926" width="8.228134"/>
<tileData x="20.374657" width="0.4826603"/>
<tileData x="24.32193" width="6.43589"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.3708305" rightEdge="4.8758307" height="0.2" y="-0.5"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.334382" rightEdge="11.912381" height="0.319" y="-0.44050002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.4509985" rightEdge="3.3089983" height="0.275" y="-0.46250004"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6111658" rightEdge="2.3221657" height="0.338" y="-0.43100002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.037212" rightEdge="16.856213" height="0.435" y="-0.38250002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.873312" rightEdge="17.873312" height="0.367" y="-0.41650003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.884027" rightEdge="18.896029" height="0.327" y="-0.4365"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.046677" rightEdge="19.546677" height="0.884" y="-0.15800002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.948046" rightEdge="16.852045" height="0.5" y="-0.35000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.123379" rightEdge="20.623379" height="0.5" y="-0.35000002"/>
</obstacles>
<stars class="java.util.ArrayList">
<starData index="1" x="10.94335" y="-0.61999965" width="0.25" height="0.25"/>
<starData index="2" x="15.7367" y="0.3199999" width="0.25" height="0.25"/>
<starData index="3" x="18.893328" y="-0.12666662" width="0.25" height="0.25"/>
</stars>
</level>
<level number="3" goalX="19.200012" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.4151678" width="5.1696644"/>
<tileData x="7.1337633" width="8.020197"/>
<tileData x="15.293072" width="7.220421"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.00651" rightEdge="8.67351" height="0.319" y="-0.44050002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.703371" rightEdge="12.7233715" height="0.299" y="-0.4505"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.164396" rightEdge="15.762396" height="0.466" y="-0.36700004"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.891703" rightEdge="16.901701" height="0.402" y="-0.39900002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.998373" rightEdge="18.248373" height="0.353" y="-0.42350003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="18.396694" rightEdge="18.896694" height="0.789" y="-0.20550004"/>
</obstacles>
<stars class="java.util.ArrayList">
<starData index="1" x="2.6399994" y="0.10666669" width="0.25" height="0.25"/>
<starData index="2" x="8.793346" y="-0.4733331" width="0.25" height="0.25"/>
<starData index="3" x="12.253348" y="-0.13333318" width="0.25" height="0.25"/>
</stars>
</level>
<level number="4" goalX="23.933224" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="6.06402" width="18.12804"/>
<tileData x="19.269924" width="3.0757751"/>
<tileData x="25.439342" width="4.201065"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="23.786556" width="0.29333496"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.9489989" rightEdge="2.5509992" height="0.354" y="-0.42300004"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.512207" rightEdge="21.241207" height="0.408" y="0.50399995"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.408872" rightEdge="11.137872" height="0.803" y="-0.19850004"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.196732" rightEdge="14.196732" height="0.5" y="0.3966666"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="14.865067" rightEdge="17.775066" height="0.299" y="0.48666632"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.824553" rightEdge="18.475554" height="1.415" y="0.10749996"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="5.79467" rightEdge="8.37867" height="0.544" y="-0.328"/>
</obstacles>
<stars class="java.util.ArrayList">
<starData index="1" x="11.560022" y="-0.26000002" width="0.25" height="0.25"/>
<starData index="2" x="16.310017" y="0.80666655" width="0.25" height="0.25"/>
<starData index="3" x="21.9833" y="-0.099999994" width="0.25" height="0.25"/>
</stars>
</level>
<level number="5" goalX="16.249996" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="1.9915047" width="9.983009"/>
<tileData x="12.045149" width="7.65627"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.3669987" rightEdge="2.7929988" height="1.074" y="-0.06300002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="12.000204" rightEdge="13.373203" height="0.946" y="-0.12700003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="13.539708" rightEdge="15.093709" height="0.725" y="-0.23750001"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.29672" rightEdge="15.79672" height="1.539" y="0.1695"/>
</obstacles>
<stars class="java.util.ArrayList">
<starData index="1" x="2.5799987" y="0.62" width="0.25" height="0.25"/>
<starData index="2" x="7.5566673" y="0.26000008" width="0.25" height="0.25"/>
<starData index="3" x="11.85002" y="-0.4533334" width="0.25" height="0.25"/>
</stars>
</level>
<level number="6" goalX="27.539873" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.4867487" width="6.9734974"/>
<tileData x="7.8615937" width="5.390193"/>
<tileData x="13.799343" width="5.285305"/>
<tileData x="21.770779" width="9.7455635"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.1131666" rightEdge="1.5001667" height="0.941" y="-0.12950003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6498328" rightEdge="1.7768329" height="0.902" y="-0.14900002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.9103339" rightEdge="2.1163337" height="0.838" y="-0.18100002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.224499" rightEdge="2.415499" height="0.735" y="-0.23250002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.500666" rightEdge="2.6726658" height="0.613" y="-0.29350004"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.7449994" rightEdge="3.9749994" height="0.5" y="-0.35000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="5.1713314" rightEdge="5.955332" height="0.186" y="-0.507"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.060041" rightEdge="10.560041" height="0.843" y="-0.17850003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.506636" rightEdge="20.806635" height="0.558" y="-0.321"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.5105" rightEdge="20.8095" height="0.286" y="0.9333331"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.943075" rightEdge="16.437075" height="0.231" y="-0.48450002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="25.300407" rightEdge="26.619408" height="0.612" y="-0.29400003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="23.873228" rightEdge="24.373228" height="0.5" y="-0.35000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="24.34991" rightEdge="24.84991" height="0.5" y="-0.35000002"/>
</obstacles>
<stars class="java.util.ArrayList">
<starData index="1" x="4.586666" y="-0.5866665" width="0.25" height="0.25"/>
<starData index="2" x="10.696706" y="-0.46666694" width="0.25" height="0.25"/>
<starData index="3" x="20.64665" y="0.39999995" width="0.25" height="0.25"/>
</stars>
</level>
<level number="7" goalX="25.866587" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="2.1916704" width="10.383341"/>
<tileData x="11.639271" width="7.31187"/>
<tileData x="17.96075" width="3.4850826"/>
<tileData x="22.583197" width="4.5598145"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="25.669922" width="0.39332962"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.9593315" rightEdge="3.9473314" height="0.313" y="-0.01333334"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.987667" rightEdge="5.565667" height="0.272" y="-0.046666723"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="10.1723585" rightEdge="12.214358" height="0.095" y="0.027500032"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.595845" rightEdge="6.950845" height="0.19" y="-0.073333286"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="8.669004" rightEdge="10.151005" height="0.218" y="0.0023332927"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="6.992841" rightEdge="7.353841" height="0.558" y="-0.321"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.32099" rightEdge="19.718988" height="0.762" y="-0.21900001"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="19.963318" rightEdge="20.463318" height="0.5" y="0.7533332"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.287636" rightEdge="21.245636" height="0.435" y="-0.38250002"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="12.539991" rightEdge="13.659992" height="0.395" y="0.124166645"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.773358" rightEdge="12.273358" height="0.884" y="0.5499999"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.503757" rightEdge="21.642757" height="0.327" y="0.3799999"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="24.1271" rightEdge="24.886099" height="0.694" y="-0.25300002"/>
</obstacles>
<stars class="java.util.ArrayList">
<starData index="1" x="6.6800065" y="-0.38666666" width="0.25" height="0.25"/>
<starData index="2" x="13.066695" y="0.48666692" width="0.25" height="0.25"/>
<starData index="3" x="20.679989" y="0.85333335" width="0.25" height="0.25"/>
</stars>
</level>
<level number="8" goalX="17.896662" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-2.0766673" width="1.8466654"/>
<tileData x="2.5266657" width="0.7200012"/>
<tileData x="9.478603" width="3.1838756"/>
<tileData x="16.133102" width="3.5271206"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.979664" rightEdge="5.9736643" height="0.286" y="-0.89333284"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.057998" rightEdge="3.9619977" height="0.299" y="-0.81333286"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.9729972" rightEdge="4.9669976" height="0.286" y="-0.8533326"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.997839" rightEdge="6.8288393" height="0.231" y="-0.9199996"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.854198" rightEdge="13.119198" height="1.02" y="0.023333304"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="13.15453" rightEdge="13.805531" height="0.639" y="0.13999994"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.541548" rightEdge="15.698547" height="0.422" y="-0.38900003"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.286684" rightEdge="14.286684" height="0.218" y="-1.1266662"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.876839" rightEdge="7.689839" height="0.286" y="-1.0"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-1.0233328" rightEdge="1.9766672" height="0.136" y="-0.86666656"/>
</obstacles>
<stars class="java.util.ArrayList">
<starData index="1" x="2.543333" y="0.3933335" width="0.25" height="0.25"/>
<starData index="2" x="14.12338" y="-0.79999965" width="0.25" height="0.25"/>
<starData index="3" x="17.523336" y="0.4799996" width="0.25" height="0.25"/>
</stars>
</level>
<level number="9" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="0.45000017" rightEdge="0.95000017" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-0.103333026" rightEdge="0.39666697" height="0.5" y="0.22666666">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="true" leftEdge="-1.7966661" rightEdge="-1.2966661" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="-0.7099999" rightEdge="-0.20999992" height="0.5" y="0.21999998">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level number="10" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="-0.68833333" rightEdge="0.82166666" height="1.541" y="0.17049998">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level number="11" goalX="22.569973" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.23241591" width="6.464832"/>
<tileData x="8.307598" width="7.651533"/>
<tileData x="18.551668" width="8.036609"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="9.7849865" width="25.569973"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.3666725" rightEdge="8.8666725" height="0.344" y="-0.42800003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.186697" rightEdge="19.606695" height="0.4" y="-0.40000004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.026669" rightEdge="6.026669" height="0.229" y="0.7399997">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level number="12" goalX="28.746628" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.34033322" width="5.3193336"/>
<tileData x="9.0306835" width="10.206701"/>
<tileData x="22.446331" width="12.600594"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="12.873314" width="31.746628"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.236673" rightEdge="8.736673" height="0.8" y="-0.20000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="21.91664" rightEdge="22.41664" height="0.968" y="-0.11600003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="1.5333319" rightEdge="4.533332" height="0.344" y="0.5999999">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.538332" rightEdge="5.6083317" height="0.306" y="0.59999996">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
</levels>
</levelPack>

View File

@ -1,57 +0,0 @@
<levelPack>
<theme>ICY_MOUNTAINS</theme>
<levels class="java.util.ArrayList">
<level number="1" goalX="29.37652" startSpeed="0.6" endSpeed="0.6" terrainEdge="-0.957" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="13.188259" width="32.37652"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="13.188259" width="32.37652"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList"/>
<stars class="java.util.ArrayList"/>
</level>
<level number="2" goalX="3.0" startSpeed="0.1" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6566663" rightEdge="2.1566663" height="0.5" y="-0.35000002"/>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level number="3" goalX="20.986637" startSpeed="0.5" endSpeed="0.6" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.08241773" width="5.8351645"/>
<tileData x="4.4789143" width="0.9214988"/>
<tileData x="7.7215056" width="0.33568478"/>
<tileData x="11.007034" width="0.25934982"/>
<tileData x="18.561672" width="4.84993"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="8.993319" width="23.986637"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.9333316" rightEdge="4.9333315" height="0.218" y="-0.49100003"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.698176" rightEdge="6.8551755" height="0.558" y="-0.38666666"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="7.399845" rightEdge="8.086845" height="0.5" y="-0.26666665"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="8.412685" rightEdge="9.840685" height="0.395" y="-0.06666667"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="10.084207" rightEdge="11.729207" height="0.286" y="-0.18666662"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="12.520058" rightEdge="15.520058" height="0.354" y="0.080000006"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.280017" rightEdge="14.280017" height="0.19" y="-1.1199995"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="15.560076" rightEdge="15.940075" height="2.0" y="0.89333296"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="14.299717" rightEdge="16.793716" height="0.177" y="-1.1399996"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.028896" rightEdge="19.317898" height="0.871" y="-0.16450003"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="19.86667" rightEdge="20.36667" height="0.5" y="0.35999995"/>
</obstacles>
<stars class="java.util.ArrayList">
<starData index="1" x="3.426661" y="-0.76666605" width="0.25" height="0.25"/>
<starData index="2" x="11.003345" y="-0.43999967" width="0.25" height="0.25"/>
<starData index="3" x="20.120005" y="0.7799998" width="0.25" height="0.25"/>
</stars>
</level>
</levels>
</levelPack>

View File

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<levelPack name="Levelpack 1">
<levels>
<level goalX="24" number="1">
<terrain endX="27" height="-0.6">
<gaps>
<gap leftEdge="4" rightEdge="5"/>
<gap leftEdge="12" rightEdge="13"/>
<gap leftEdge="16" rightEdge="16.5"/>
<gap leftEdge="16.8" rightEdge="17.3"/>
</gaps>
</terrain>
<obstacles>
<obstacle height="0.3" leftEdge="9" rightEdge="10" type="default"/>
<obstacle height="0.2" leftEdge="13" rightEdge="14" type="default"/>
<obstacle height="0.3" leftEdge="18" rightEdge="20" type="default"/>
<obstacle height="0.5" leftEdge="20" rightEdge="21" type="default"/>
<obstacle height="0.1" leftEdge="21" rightEdge="22" type="default"/>
</obstacles>
</level>
<level goalX="21.25" number="2">
<terrain endX="21" height="-0.6">
<gaps>
<gap leftEdge="1" rightEdge="1.7" />
<gap leftEdge="8.9" rightEdge="9.6" />
<gap leftEdge="9.7" rightEdge="10.4" />
<gap leftEdge="15" rightEdge="16.1" />
</gaps>
</terrain>
<obstacles>
<obstacle height="0.3" leftEdge="1.73" rightEdge="2.3" type="default" />
<obstacle height="0.5" leftEdge="2.9" rightEdge="3.6" type="default" />
<obstacle height="0.3" leftEdge="5" rightEdge="7" type="default" />
<obstacle height="0.52" leftEdge="7.1" rightEdge="8.5" type="default" />
<obstacle height="0.5" leftEdge="11.4" rightEdge="12.8" type="default" />
<obstacle height="0.5" leftEdge="13.9" rightEdge="14.2" type="default" />
<obstacle height="0.24" leftEdge="16.8" rightEdge="18.3" type="default" />
<obstacle height="0.35" leftEdge="18.30001" rightEdge="18.8" type="default" />
<obstacle height="0.54" leftEdge="18.80001" rightEdge="19.4" type="default" />
<obstacle height="0.41" leftEdge="19.40001" rightEdge="20.5" type="default" />
</obstacles>
</level>
</levels>
</levelPack>

View File

@ -1,284 +1,272 @@
<levelPack id="2">
<theme>GRASSLANDS</theme>
<levelPack id="1">
<world>GRASSLANDS</world>
<levels class="java.util.ArrayList">
<level packId="2" id="1" goalX="22.606565" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="1" id="1" goalX="16.896702" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.5854988" width="7.1709976"/>
<tileData x="10.153494" width="10.408993"/>
<tileData x="21.640932" width="11.797886"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.873024" rightEdge="11.427025" height="0.304" y="-0.448"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.860029" rightEdge="15.360029" height="0.3" y="-0.45000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.096622" rightEdge="22.096622" height="0.25" y="-0.47500002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="22.166656" rightEdge="22.666656" height="0.639" y="-0.28050002"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="11.159975" y="-0.15999995"/>
<positionData x="15.106676" y="-0.14000002"/>
<positionData x="22.043303" y="-0.20666662"/>
</stars>
</level>
<level packId="2" id="2" goalX="22.366613" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.9448314" width="7.8896627"/>
<tileData x="8.345928" width="4.4445295"/>
<tileData x="15.41926" width="8.228134"/>
<tileData x="20.374657" width="0.4826603"/>
<tileData x="24.32193" width="6.43589"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.3708305" rightEdge="4.8758307" height="0.2" y="-0.5"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.334382" rightEdge="11.912381" height="0.319" y="-0.44050002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.4509985" rightEdge="3.3089983" height="0.275" y="-0.46250004"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6111658" rightEdge="2.3221657" height="0.338" y="-0.43100002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.037212" rightEdge="16.856213" height="0.435" y="-0.38250002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.873312" rightEdge="17.873312" height="0.367" y="-0.41650003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.884027" rightEdge="18.896029" height="0.327" y="-0.4365"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.046677" rightEdge="19.546677" height="0.884" y="-0.15800002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.948046" rightEdge="16.852045" height="0.5" y="-0.35000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.123379" rightEdge="20.623379" height="0.5" y="-0.35000002"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="10.94335" y="-0.61999965"/>
<positionData x="15.7367" y="0.3199999"/>
<positionData x="18.893328" y="-0.12666662"/>
</stars>
</level>
<level packId="2" id="3" goalX="19.200012" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.4151678" width="5.1696644"/>
<tileData x="7.1337633" width="8.020197"/>
<tileData x="15.293072" width="7.220421"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.00651" rightEdge="8.67351" height="0.319" y="-0.44050002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.703371" rightEdge="12.7233715" height="0.299" y="-0.4505"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.164396" rightEdge="15.762396" height="0.466" y="-0.36700004"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.891703" rightEdge="16.901701" height="0.402" y="-0.39900002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.998373" rightEdge="18.248373" height="0.353" y="-0.42350003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="18.396694" rightEdge="18.896694" height="0.789" y="-0.20550004"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.6399994" y="0.10666669"/>
<positionData x="8.793346" y="-0.4733331"/>
<positionData x="12.253348" y="-0.13333318"/>
</stars>
</level>
<level packId="2" id="4" goalX="23.933224" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="6.06402" width="18.12804"/>
<tileData x="19.269924" width="3.0757751"/>
<tileData x="25.439342" width="4.201065"/>
<tileData x="1.0092487" width="8.018497"/>
<tileData x="13.61743" width="15.911868"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="23.786556" width="0.29333496"/>
<tileData x="6.948351" width="19.896702"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.9489989" rightEdge="2.5509992" height="0.354" y="-0.42300004"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.512207" rightEdge="21.241207" height="0.408" y="0.50399995"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.408872" rightEdge="11.137872" height="0.803" y="-0.19850004"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.196732" rightEdge="14.196732" height="0.5" y="0.3966666"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="14.865067" rightEdge="17.775066" height="0.299" y="0.48666632"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.824553" rightEdge="18.475554" height="1.415" y="0.10749996"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="5.79467" rightEdge="8.37867" height="0.544" y="-0.328"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="12.00004" rightEdge="12.50004" height="0.382" y="-0.40900004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="11.560022" y="-0.26000002"/>
<positionData x="16.310017" y="0.80666655"/>
<positionData x="21.9833" y="-0.099999994"/>
<positionData x="5.3666835" y="0.7866664"/>
<positionData x="12.263359" y="-0.0266667"/>
<positionData x="16.58005" y="0.77999955"/>
</stars>
<energy x="12.243361" y="-0.40666705"/>
</level>
<level packId="2" id="5" goalX="16.249996" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="1" id="2" goalX="23.896725" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="1.9915047" width="9.983009"/>
<tileData x="12.045149" width="7.65627"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.3669987" rightEdge="2.7929988" height="1.074" y="-0.06300002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="12.000204" rightEdge="13.373203" height="0.946" y="-0.12700003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="13.539708" rightEdge="15.093709" height="0.725" y="-0.23750001"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.29672" rightEdge="15.79672" height="1.539" y="0.1695"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.5799987" y="0.62"/>
<positionData x="7.5566673" y="0.26000008"/>
<positionData x="11.85002" y="-0.4533334"/>
</stars>
</level>
<level packId="2" id="6" goalX="27.539873" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.4867487" width="6.9734974"/>
<tileData x="7.8615937" width="5.390193"/>
<tileData x="13.799343" width="5.285305"/>
<tileData x="21.770779" width="9.7455635"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.1131666" rightEdge="1.5001667" height="0.941" y="-0.12950003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6498328" rightEdge="1.7768329" height="0.902" y="-0.14900002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.9103339" rightEdge="2.1163337" height="0.838" y="-0.18100002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.224499" rightEdge="2.415499" height="0.735" y="-0.23250002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.500666" rightEdge="2.6726658" height="0.613" y="-0.29350004"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.7449994" rightEdge="3.9749994" height="0.5" y="-0.35000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="5.1713314" rightEdge="5.955332" height="0.186" y="-0.507"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.060041" rightEdge="10.560041" height="0.843" y="-0.17850003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.506636" rightEdge="20.806635" height="0.558" y="-0.321"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.5105" rightEdge="20.8095" height="0.286" y="0.9333331"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.943075" rightEdge="16.437075" height="0.231" y="-0.48450002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="25.300407" rightEdge="26.619408" height="0.612" y="-0.29400003"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="23.873228" rightEdge="24.373228" height="0.5" y="-0.35000002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="24.34991" rightEdge="24.84991" height="0.5" y="-0.35000002"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="4.586666" y="-0.5866665"/>
<positionData x="10.696706" y="-0.46666694"/>
<positionData x="20.64665" y="0.39999995"/>
</stars>
</level>
<level packId="2" id="7" goalX="25.866587" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="2.1916704" width="10.383341"/>
<tileData x="11.639271" width="7.31187"/>
<tileData x="17.96075" width="3.4850826"/>
<tileData x="22.583197" width="4.5598145"/>
<tileData x="1.6106672" width="9.221334"/>
<tileData x="12.331865" width="10.333063"/>
<tileData x="20.876247" width="4.5356846"/>
<tileData x="25.874727" width="4.7972755"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="25.669922" width="0.39332962"/>
<tileData x="10.448362" width="26.896725"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.9593315" rightEdge="3.9473314" height="0.313" y="-0.01333334"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.987667" rightEdge="5.565667" height="0.272" y="-0.046666723"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="10.1723585" rightEdge="12.214358" height="0.095" y="0.027500032"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.595845" rightEdge="6.950845" height="0.19" y="-0.073333286"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="8.669004" rightEdge="10.151005" height="0.218" y="0.0023332927"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="6.992841" rightEdge="7.353841" height="0.558" y="-0.321"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.32099" rightEdge="19.718988" height="0.762" y="-0.21900001"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="19.963318" rightEdge="20.463318" height="0.5" y="0.7533332"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.287636" rightEdge="21.245636" height="0.435" y="-0.38250002"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="12.539991" rightEdge="13.659992" height="0.395" y="0.124166645"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.773358" rightEdge="12.273358" height="0.884" y="0.5499999"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.503757" rightEdge="21.642757" height="0.327" y="0.3799999"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="24.1271" rightEdge="24.886099" height="0.694" y="-0.25300002"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.2166634" rightEdge="6.2166634" height="0.293" y="-0.45350003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.9867525" rightEdge="15.406753" height="0.586" y="-0.307">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.434769" rightEdge="17.498768" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="23.488386" rightEdge="24.138388" height="0.331" y="-0.43450004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.798721" rightEdge="14.454721" height="0.204" y="-0.49800003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="6.6800065" y="-0.38666666"/>
<positionData x="13.066695" y="0.48666692"/>
<positionData x="20.679989" y="0.85333335"/>
<positionData x="6.6933284" y="-0.57999974"/>
<positionData x="14.833428" y="-0.4399998"/>
<positionData x="18.076752" y="-0.50000006"/>
</stars>
<energy x="16.436743" y="-0.37333328"/>
</level>
<level packId="2" id="8" goalX="17.896662" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="1" id="3" goalX="25.803282" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-2.0766673" width="1.8466654"/>
<tileData x="2.5266657" width="0.7200012"/>
<tileData x="9.478603" width="3.1838756"/>
<tileData x="16.133102" width="3.5271206"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.979664" rightEdge="5.9736643" height="0.286" y="-0.89333284"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.057998" rightEdge="3.9619977" height="0.299" y="-0.81333286"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.9729972" rightEdge="4.9669976" height="0.286" y="-0.8533326"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.997839" rightEdge="6.8288393" height="0.231" y="-0.9199996"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.854198" rightEdge="13.119198" height="1.02" y="0.023333304"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="13.15453" rightEdge="13.805531" height="0.639" y="0.13999994"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="14.541548" rightEdge="15.698547" height="0.422" y="-0.38900003"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.286684" rightEdge="14.286684" height="0.218" y="-1.1266662"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.876839" rightEdge="7.689839" height="0.286" y="-1.0"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-1.0233328" rightEdge="1.9766672" height="0.136" y="-0.86666656"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.543333" y="0.3933335"/>
<positionData x="14.12338" y="-0.79999965"/>
<positionData x="17.523336" y="0.4799996"/>
</stars>
</level>
<level packId="2" id="9" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
<tileData x="2.928771" width="11.857542"/>
<tileData x="14.645462" width="3.5258408"/>
<tileData x="20.861193" width="7.2456512"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
<tileData x="6.5533686" width="19.106737"/>
<tileData x="20.95501" width="9.696545"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="0.45000017" rightEdge="0.95000017" height="0.5" y="-0.35000002">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.3533306" rightEdge="5.3533306" height="0.357" y="-0.42150003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-0.103333026" rightEdge="0.39666697" height="0.5" y="0.22666666">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="5.385499" rightEdge="7.3344994" height="0.688" y="-0.256">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="true" leftEdge="-1.7966661" rightEdge="-1.2966661" height="0.5" y="-0.35000002">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.4723425" rightEdge="8.834342" height="1.032" y="-0.08400005">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="-0.7099999" rightEdge="-0.20999992" height="0.5" y="0.21999998">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="7.432005" rightEdge="8.368005" height="0.637" y="-0.2815">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="9.223393" rightEdge="12.223393" height="0.127" y="-0.93333316">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="21.176678" rightEdge="21.676678" height="0.408" y="-0.39600003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="21.729795" rightEdge="22.436796" height="0.318" y="-0.44100004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="22.456125" rightEdge="23.297125" height="0.242" y="-0.47900003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="23.333607" rightEdge="24.479607" height="0.178" y="-0.51100004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6883316" rightEdge="2.3383317" height="0.382" y="-0.40900004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="5.236675" y="-0.10000009"/>
<positionData x="12.743379" y="-0.87999964"/>
<positionData x="25.046606" y="0.44000027"/>
</stars>
<energy x="9.043368" y="-0.8999996"/>
</level>
<level packId="1" id="4" goalX="23.266603" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.27333355" width="5.453333"/>
<tileData x="10.069099" width="5.231532"/>
<tileData x="17.179937" width="0.2761612"/>
<tileData x="24.247623" width="8.61121"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="10.133302" width="26.266603"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.5106652" rightEdge="3.5426652" height="0.5" y="-0.9066665">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.6169972" rightEdge="4.7829976" height="0.5" y="-0.9799999">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.875505" rightEdge="5.9645047" height="0.5" y="-1.0799999">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.0315022" rightEdge="7.3885026" height="0.5" y="-0.76666665">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="9.111034" rightEdge="11.289034" height="0.382" y="-0.40900004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.36054" rightEdge="12.65954" height="0.306" y="-0.44700003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="12.702217" rightEdge="15.511217" height="0.166" y="-0.026666649">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="15.972044" rightEdge="18.208044" height="0.255" y="0.29333323">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.377197" rightEdge="18.836197" height="0.229" y="0.1666667">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="19.030016" rightEdge="19.530016" height="0.242" y="0.0066666286">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.63783" rightEdge="20.828833" height="1.108" y="0.35999984">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="22.10714" rightEdge="22.56614" height="0.331" y="-0.3933331">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="4.8966684" y="-0.0933331"/>
<positionData x="12.523364" y="-0.09333331"/>
<positionData x="21.769947" y="0.3733334"/>
</stars>
<energy x="17.186693" y="-0.41333315"/>
</level>
<level packId="1" id="5" goalX="25.756561" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.3149171" width="5.370166"/>
<tileData x="5.247172" width="3.9280117"/>
<tileData x="8.653435" width="0.0625"/>
<tileData x="9.939764" width="0.062160492"/>
<tileData x="12.285448" width="3.8192024"/>
<tileData x="16.539871" width="3.5896454"/>
<tileData x="21.039742" width="2.40209"/>
<tileData x="26.437824" width="7.5440884"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="11.378281" width="28.756561"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="6.166328" rightEdge="7.1603284" height="0.293" y="-0.45350003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="16.936665" rightEdge="19.076664" height="0.217" y="0.30666652">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="7.203003" rightEdge="8.6170025" height="0.127" y="-0.41333312">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="8.687184" rightEdge="9.986184" height="0.153" y="-0.47333324">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.379863" rightEdge="11.0868635" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="14.776228" rightEdge="15.617228" height="0.344" y="-0.0066666957">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="15.643713" rightEdge="16.809713" height="0.293" y="-0.050000057">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.627857" rightEdge="18.258858" height="0.318" y="-0.44100004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.325031" rightEdge="19.83503" height="0.166" y="-0.41999984">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.8000035" y="-0.77999914"/>
<positionData x="11.243364" y="-0.43999982"/>
<positionData x="16.21668" y="0.34666675"/>
</stars>
<energy x="19.086668" y="-0.81333315"/>
</level>
<level packId="1" id="6" goalX="16.046711" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="2.3134198" width="10.62684"/>
<tileData x="11.750938" width="5.8622084"/>
<tileData x="17.74903" width="5.2619705"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="6.5233555" width="19.046711"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.5633323" rightEdge="2.9833324" height="0.866" y="-0.16700003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="12.6995325" rightEdge="13.100532" height="0.42" y="-0.39000005">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="13.132866" rightEdge="13.533865" height="0.611" y="-0.29450002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="13.566537" rightEdge="14.693538" height="0.344" y="-0.42800003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="2.7666643" y="0.8799996"/>
<positionData x="8.200006" y="0.8999994"/>
<positionData x="12.566701" y="-0.4666665"/>
</stars>
<energy x="13.326665" y="-0.40666687"/>
</level>
<level packId="1" id="7" goalX="10.643346" startSpeed="0.2" endSpeed="0.2" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="3.821673" width="13.643346"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="3.821673" width="13.643346"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="0.5466671" rightEdge="3.546667" height="0.917" y="-0.14150003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.6133304" rightEdge="6.6133304" height="1.414" y="0.10699999">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="6.633338" rightEdge="9.633338" height="1.057" y="-0.0715">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="2" id="10" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="1" id="8" goalX="3.0" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="-0.68833333" rightEdge="0.82166666" height="1.541" y="0.17049998">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="2" id="11" goalX="22.569973" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.23241591" width="6.464832"/>
<tileData x="8.307598" width="7.651533"/>
<tileData x="18.551668" width="8.036609"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="9.7849865" width="25.569973"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.3666725" rightEdge="8.8666725" height="0.344" y="-0.42800003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="19.186697" rightEdge="19.606695" height="0.4" y="-0.40000004">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.026669" rightEdge="6.026669" height="0.229" y="0.7399997">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="2" id="12" goalX="28.746628" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.34033322" width="5.3193336"/>
<tileData x="9.0306835" width="10.206701"/>
<tileData x="22.446331" width="12.600594"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="12.873314" width="31.746628"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="8.236673" rightEdge="8.736673" height="0.8" y="-0.20000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="21.91664" rightEdge="22.41664" height="0.968" y="-0.11600003">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="1.5333319" rightEdge="4.533332" height="0.344" y="0.5999999">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.538332" rightEdge="5.6083317" height="0.306" y="0.59999996">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
</obstacles>
<obstacles class="java.util.ArrayList"/>
<stars class="java.util.ArrayList"/>
</level>
</levels>

View File

@ -1,115 +0,0 @@
<levelPack id="5">
<theme>TESTCAVE</theme>
<levels class="java.util.ArrayList">
<level packId="5" id="1" goalX="4.3969" startSpeed="0.6" endSpeed="0.6" terrainEdge="-0.176" ceilingEdge="0.747">
<terrainTiles class="java.util.ArrayList">
<tileData x="-2.4650004" width="1.0699992"/>
<tileData x="1.3783364" width="5.4166737"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="-2.6666667" width="0.6666665"/>
<tileData x="0.59333193" width="4.6533327"/>
<tileData x="3.9584491" width="0.8769021"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.6066647" rightEdge="4.1066647" height="0.5" y="0.074">
<moveComponent width="5.0" height="4.217" x="3.2333317" y="-0.729" speed="0.508"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.6499996" rightEdge="2.1499996" height="0.5" y="0.074">
<moveComponent width="3.939" height="1.275" x="0.0" y="-0.729" speed="0.896"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="-2.7566657" rightEdge="-2.2566657" height="0.5" y="0.074">
<moveComponent width="0.076" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="true" leftEdge="2.429999" rightEdge="2.929999" height="0.5" y="0.26666665">
<moveComponent width="2.841" height="1.212" x="2.679999" y="0.26666665" speed="0.136"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
<energy x="0.013333277" y="0.32666668"/>
</level>
<level packId="5" id="2" goalX="13.38005" startSpeed="0.5" endSpeed="0.6" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="2.2557545" width="10.511509"/>
<tileData x="8.660347" width="0.8236685"/>
<tileData x="11.630615" width="3.498868"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="5.1900253" width="16.38005"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="0.46000051" rightEdge="0.9600005" height="0.694" y="0.15333341"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="1.0306667" rightEdge="1.4826666" height="0.789" y="0.08666667"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="1.5308328" rightEdge="2.2358327" height="0.68" y="0.07333334"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.376332" rightEdge="2.810332" height="0.816" y="0.25333333"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.9108317" rightEdge="3.2358315" height="0.844" y="0.15333337"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.3118312" rightEdge="3.6548312" height="0.98" y="-0.110000014"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="3.883165" rightEdge="4.190165" height="0.68" y="-0.26000002"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="4.8149962" rightEdge="5.2849965" height="0.422" y="0.25999996"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.329664" rightEdge="5.9436646" height="0.544" y="0.060000002"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.0306664" rightEdge="6.482666" height="0.83" y="0.13333333"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.600003" rightEdge="6.980003" height="0.735" y="0.033333324"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="7.1111717" rightEdge="7.3821716" height="0.626" y="0.19999996"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="7.416671" rightEdge="8.916671" height="0.272" y="0.1866666"/>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="9.453531" rightEdge="10.266531" height="0.136" y="-0.532"/>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.386221" rightEdge="13.067221" height="0.34" y="0.07999999"/>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="3.0633316" y="-0.43333337"/>
<positionData x="9.686677" y="-0.76000005"/>
<positionData x="13.110031" y="0.8466663"/>
</stars>
</level>
<level packId="5" id="3" goalX="16.630037" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="0.692">
<terrainTiles class="java.util.ArrayList">
<tileData x="6.8150187" width="19.630037"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="-1.0400832" width="3.9198337"/>
<tileData x="8.253105" width="9.812542"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="true" deadly="true" leftEdge="1.9166656" rightEdge="2.4166656" height="0.5" y="0.2766666">
<moveComponent width="0.0" height="1.717" x="2.1666656" y="0.2766666" speed="0.664"/>
</obstacleData>
<obstacleData floating="false" moving="true" deadly="false" leftEdge="5.3966713" rightEdge="5.8966713" height="0.5" y="-0.35000002">
<moveComponent width="2.841" height="0.0" x="5.6466713" y="-0.35000002" speed="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="true" leftEdge="9.8766775" rightEdge="10.3766775" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="0.0" x="0.0" y="0.0" speed="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="14.763373" rightEdge="15.263373" height="0.5" y="0.21666658">
<moveComponent width="2.386" height="1.351" x="15.013373" y="0.21666658" speed="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="5" id="4" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="true" deadly="false" leftEdge="-0.55199987" rightEdge="-0.20799984" height="0.357" y="-0.42150003">
<moveComponent width="0.0" height="1.086" x="-0.37999985" y="-0.42150003" speed="0.5"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="-1.6233331" rightEdge="-1.1233331" height="0.5" y="-0.35000002">
<moveComponent width="0.0" height="1.275" x="-1.3733331" y="-0.35000002" speed="0.508"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
</level>
<level packId="5" id="9" goalX="3.0" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList"/>
<stars class="java.util.ArrayList"/>
</level>
</levels>
</levelPack>

View File

@ -1,5 +1,6 @@
uniform mat4 mvpMatrix;
uniform mat4 transformationMatrix;
uniform vec2 texCoordScaling;
attribute vec4 position;
attribute vec2 texCoords;
@ -11,5 +12,9 @@ void main() {
vec4 transformatedPosition = transformationMatrix * position;
gl_Position = mvpMatrix * transformatedPosition;
pass_TexCoords = texCoords;
if(texCoordScaling.x != 0.0)
pass_TexCoords.x *= texCoordScaling.x;
if(texCoordScaling.y != 0.0)
pass_TexCoords.y *= texCoordScaling.y;
}

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<levelPack name="Testpack">
<levels>
<level goalX="110" number="1">
<terrain endX="100" height="1.0">
<gaps></gaps>
</terrain>
<obstacles></obstacles>
</level>
<level goalX="110" number="2">
<terrain endX="100" height="-0.6">
<gaps></gaps>
</terrain>
<obstacles></obstacles>
</level>
<level goalX="110" number="3">
<terrain endX="100" height="-0.6">
<gaps>
<gap leftEdge="10" rightEdge="11" />
<gap leftEdge="20" rightEdge="21" />
<gap leftEdge="30" rightEdge="31" />
<gap leftEdge="40" rightEdge="41" />
<gap leftEdge="50" rightEdge="51" />
<gap leftEdge="60" rightEdge="61" />
<gap leftEdge="70" rightEdge="71" />
<gap leftEdge="80" rightEdge="81" />
<gap leftEdge="90" rightEdge="91" />
</gaps>
</terrain>
<obstacles></obstacles>
</level>
</levels>
</levelPack>

View File

@ -11,6 +11,7 @@ public class Background extends SynchronizedArrayList<Entity> {
private final float PART_WIDTH = 5;
private final float HALF_PART_WIDTH = PART_WIDTH / 2;
private final float HEIGHT = 2.5f;
private Texture texture;
public Background(Texture texture) {
@ -27,7 +28,7 @@ public class Background extends SynchronizedArrayList<Entity> {
}
private Entity createPart(float xLeftEdge) {
return new Entity(texture, new Vector(xLeftEdge + HALF_PART_WIDTH, 0), PART_WIDTH, 2);
return new Entity(texture, new Vector(xLeftEdge + HALF_PART_WIDTH, (HEIGHT - 2) / 2), PART_WIDTH, HEIGHT);
}
public void move(float x, float cameraX) {

View File

@ -16,11 +16,13 @@ public class Entity extends Quad {
private float alpha = 1.0f;
private boolean destroyed;
private DestroyEffect destroyEffect;
private Vector maxTexSize;
public Entity(Texture texture, Vector position, float width, float height) {
super(position, width, height);
this.texture = texture;
this.movement = new Vector();
this.maxTexSize = new Vector();
}
public void move(Vector movement) {
@ -91,4 +93,12 @@ public class Entity extends Quad {
public int getTextureAtlasIndex() {
return textureAtlasIndex;
}
public void setMaxTexSize(Vector maxTexSize) {
this.maxTexSize = maxTexSize;
}
public Vector getMaxTexSize() {
return maxTexSize;
}
}

View File

@ -6,7 +6,8 @@ import com.example.julian.endlessroll.entities.textures.Texture;
public class Goal extends Entity {
public Goal(Texture texture) {
super(texture, new Vector(), 0.1f, 2);
super(texture, new Vector(), 0.1f, 3);
super.getMaxTexSize().setY(0.2f);
}
public void setGoalX(float goalX) {

View File

@ -3,7 +3,7 @@ package com.example.julian.endlessroll.entities;
import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.levels.MoveComponent;
import com.example.julian.endlessroll.levels.ObstacleData;
import com.example.julian.endlessroll.levels.worlds.Theme;
import com.example.julian.endlessroll.levels.worlds.World;
import java.util.Random;
@ -23,8 +23,8 @@ public class Obstacle extends Entity {
private float moveProgress;
public Obstacle(Theme theme, ObstacleData data, float terrainEdge) {
super(theme.getObstacleTexture(), new Vector(data.getX(), data.getY()), data.getWidth(), data.getHeight());
public Obstacle(World world, ObstacleData data, float terrainEdge) {
super(world.getObstacleTexture(), new Vector(data.getX(), data.getY()), data.getWidth(), data.getHeight());
this.deadly = data.isDeadly();
this.floating = data.isFloating();
this.moving = data.isMoving();

View File

@ -56,7 +56,7 @@ public class Particle extends Entity {
public void update(Timer timer, float windStrength, float gravityStrength) {
if (active) {
passedLifetime += timer.getFrameTime();
passedLifetime += timer.getFrameTimeSeconds();
if (passedLifetime >= maxLife)
active = false;
float lifetimePercent = passedLifetime / maxLife;

View File

@ -56,18 +56,18 @@ public class ParticleSource {
public void update(Timer timer) {
if (alife) {
passedTime += timer.getFrameTime();
passedTime += timer.getFrameTimeSeconds();
lifePercent = passedTime / maxTime;
if (passedTime >= currentDelay) {
passedEmittPause += timer.getFrameTime();
passedEmittPause += timer.getFrameTimeSeconds();
calcWindAndGravity();
while (passedEmittPause >= emittPause) {
passedEmittPause -= emittPause;
emitt();
}
passedSecond += timer.getFrameTime();
passedSecond += timer.getFrameTimeSeconds();
if (passedSecond >= 1000) {
passedSecond -= 1000;
calcEmittPause();
@ -89,7 +89,7 @@ public class ParticleSource {
inactiveParticles.add(particle);
iter.remove();
} else {
particle.move(new Vector(particle.getMovement()).mul(timer.getFrameTime() / 1000));
particle.move(new Vector(particle.getMovement()).mul(timer.getFrameTimeSeconds() / 1000));
}
}
activeParticleLock.unlock();

View File

@ -5,7 +5,7 @@ import android.support.annotation.DrawableRes;
import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.levels.worlds.Theme;
import com.example.julian.endlessroll.levels.worlds.World;
/**
* Created by Julian on 05.12.2015.
@ -30,7 +30,7 @@ public class TexturePack {
energy = loadAtlas(R.drawable.currency_energy_atlas, 2, 2);
ToolType.loadAllToolTextures(this);
Theme.loadAllSpecificTextures(this);
World.loadAllSpecificTextures(this);
}
public Texture loadTexture(@DrawableRes int id) {

View File

@ -3,7 +3,7 @@ package com.example.julian.endlessroll.entities.tileLists;
import com.example.julian.endlessroll.data.SynchronizedArrayList;
import com.example.julian.endlessroll.entities.textures.Texture;
import com.example.julian.endlessroll.levels.TileData;
import com.example.julian.endlessroll.levels.worlds.Theme;
import com.example.julian.endlessroll.levels.worlds.World;
import java.util.ArrayList;
import java.util.List;
@ -36,10 +36,10 @@ public class TileList extends SynchronizedArrayList<Tile> {
this.texture = texture;
}
public void loadData(Theme theme, float edge, List<TileData> tileData) {
this.texture = theme.getTerrainTexture();
public void loadData(World world, float edge, List<TileData> tileData) {
this.texture = world.getTerrainTexture();
if (type == Type.CEILING)
this.texture = theme.getCeilingTexture();
this.texture = world.getCeilingTexture();
this.endless = false;
super.clear();
for (TileData data : tileData)
@ -49,8 +49,8 @@ public class TileList extends SynchronizedArrayList<Tile> {
super.clear();
}
public void createEndless(Theme theme, float edge) {
loadData(theme, edge, new ArrayList<TileData>());
public void createEndless(World world, float edge) {
loadData(world, edge, new ArrayList<TileData>());
super.add(createEndlessTile(0));
this.endless = true;
}

View File

@ -30,7 +30,7 @@ public class Bomb extends Tool {
@Override
public void update(Timer timer) {
super.update(timer);
delta += timer.getFrameTime();
delta += timer.getFrameTimeSeconds();
if (delta >= 1000)
exploding = true;
}

View File

@ -15,11 +15,6 @@ public class ToolSlot {
this.locked = locked;
}
public ToolSlot(String type) {
this.toolType = ToolType.valueOf(type);
this.locked = toolType == ToolType.NONE;
}
public ToolType getToolType() {
return toolType;
}

View File

@ -1,6 +1,6 @@
package com.example.julian.endlessroll.levels;
import com.example.julian.endlessroll.levels.worlds.Theme;
import com.example.julian.endlessroll.levels.worlds.World;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
@ -18,7 +18,7 @@ public class LevelPack {
@Attribute
private int id;
@Element
private Theme theme;
private World world;
@ElementList
private List<Level> levels;
@ -33,8 +33,8 @@ public class LevelPack {
return levels;
}
public Theme getTheme() {
return theme;
public World getWorld() {
return world;
}
public void setName(String name) {

View File

@ -10,7 +10,7 @@ import com.example.julian.endlessroll.entities.textures.TexturePack;
* Created by Julian on 14.11.2016.
*/
public enum Theme {
public enum World {
GRASSLANDS("Grasslands", R.drawable.previews_grass, R.drawable.backgrounds_game_grass, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_grass),
TESTCAVE("Testcave", R.drawable.previews_grass, R.drawable.backgrounds_game_cave, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_cave),
@ -33,7 +33,7 @@ public enum Theme {
private Texture ceiling;
private Texture obstacle;
Theme(String name, @DrawableRes int previewId, @DrawableRes int backgroundId, @DrawableRes int terrainId, @DrawableRes int ceilingId, @DrawableRes int obstacleId) {
World(String name, @DrawableRes int previewId, @DrawableRes int backgroundId, @DrawableRes int terrainId, @DrawableRes int ceilingId, @DrawableRes int obstacleId) {
this.name = name;
this.previewId = previewId;
this.backgroundId = backgroundId;
@ -43,8 +43,8 @@ public enum Theme {
}
public static void loadAllSpecificTextures(TexturePack texturePack) {
for (Theme theme : values())
theme.loadSpecificTextures(texturePack);
for (World world : values())
world.loadSpecificTextures(texturePack);
}
private void loadSpecificTextures(TexturePack texturePack) {

View File

@ -0,0 +1,47 @@
package com.example.julian.endlessroll.main.game;
import com.example.julian.endlessroll.main.GameLog;
/**
* Created by Julian on 22.05.2017.
*/
public class Camera {
private final float MOVE_SPEED_UP = 0.7f;
private final float MOVE_SPEED_DOWN = 0.7f;
private final float MAX_Y = 0.5f;
private final float MIN_Y = 0;
private float x, y;
public void update(float playerY, Timer timer){
float frameTime = timer.getFrameTimeSeconds() / 1000f;
float maxY = Math.min(playerY - 1 + 0.6f, MAX_Y);
if(playerY >= 0.5f){
y += MOVE_SPEED_UP * frameTime;
if(y > maxY)
y = maxY;
} else if(y > MIN_Y){
y -= MOVE_SPEED_DOWN * frameTime;
if(y < MIN_Y)
y = MIN_Y;
}
}
public void moveX(float move){
x += move;
}
public void reset(){
x = 0;
y = 0;
}
public float getX() {
return x;
}
public float getY() {
return y;
}
}

View File

@ -111,10 +111,9 @@ public class Game extends Rendering<GameScene> {
collectedStars.clear();
energyCollected = false;
particleSystem.deleteAllSources();
scene.loadLevel(level, levelPack.getTheme());
scene.loadLevel(level, levelPack.getWorld());
player = scene.getPlayer();
if (viewManager.isScreenSizeSet())
viewManager.resetViews();
viewManager.resetViews(user);
currentTool = viewManager.toolButtonBar.getActiveButton().getToolType();
viewManager.startCountdown();
}
@ -131,7 +130,6 @@ public class Game extends Rendering<GameScene> {
public void setScreenSize(int width, int height) {
Vector screenSize = new Vector(width, height);
scene.setScreenSize(screenSize);
viewManager.setScreenSize(screenSize);
}
@Override
@ -139,14 +137,11 @@ public class Game extends Rendering<GameScene> {
particleSystem.update(timer);
float playerProgress = 0;
float playerSpeed = 0;
float playerY = 0;
if (player != null) {
playerProgress = player.getProgress();
playerSpeed = player.getSpeed();
playerY = player.getPosition().y;
}
viewManager.update(gameState == GameState.RUNNING, timer, playerProgress, playerSpeed,
playerY);
viewManager.update(gameState == GameState.RUNNING, timer, playerProgress, playerSpeed);
switch (gameState) {
case RUNNING:
if (player.getPosition().y < -2f) {
@ -157,6 +152,7 @@ public class Game extends Rendering<GameScene> {
onGoalReached();
return;
}
scene.getCamera().update(player.getPosition().y, timer);
if (currentTutorial != null) {
currentTutorial.update(playerProgress);
@ -190,7 +186,7 @@ public class Game extends Rendering<GameScene> {
}
public void resetViews() {
viewManager.resetViews();
viewManager.resetViews(user);
}
public void continueGame() {
@ -217,6 +213,8 @@ public class Game extends Rendering<GameScene> {
}
public void tryToPause() {
if(gameState == GameState.GAME_OVER || gameState == GameState.PAUSED)
return;
viewManager.showShortMenu();
if (gameState == GameState.COUNTDOWN)
viewManager.stopCountdown();

View File

@ -16,7 +16,7 @@ import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.levels.Level;
import com.example.julian.endlessroll.levels.ObstacleData;
import com.example.julian.endlessroll.levels.PositionData;
import com.example.julian.endlessroll.levels.worlds.Theme;
import com.example.julian.endlessroll.levels.worlds.World;
import com.example.julian.endlessroll.main.GameLog;
import java.util.ArrayList;
@ -29,7 +29,7 @@ import java.util.List;
*/
public class GameScene extends Scene {
private Theme currentTheme;
private World currentWorld;
private CollisionDetector collisionDetector;
private Goal goal;
@ -46,12 +46,12 @@ public class GameScene extends Scene {
goal = new Goal(textures.goal);
}
public void loadLevel(Level level, Theme theme) throws Exception {
this.currentTheme = theme;
public void loadLevel(Level level, World world) throws Exception {
this.currentWorld = world;
reset();
background.changeTexture(theme.getBackgroundTexture());
terrain.loadData(theme, level.getTerrainEdge(), level.getTerrainTiles());
ceiling.loadData(theme, level.getCeilingEdge(), level.getCeilingTiles());
background.changeTexture(world.getBackgroundTexture());
terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles());
ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles());
super.add(goal);
player.init(terrain.getEdge(), level.getStartSpeed(), level.getEndSpeed());
super.add(player);
@ -81,7 +81,7 @@ public class GameScene extends Scene {
obstacles.clear();
tools.clear();
energy = null;
cameraX = 0;
camera.reset();
background.resetPosition();
}
@ -103,7 +103,7 @@ public class GameScene extends Scene {
}
public void addObstacle(ObstacleData data) {
Obstacle obstacle = new Obstacle(currentTheme, data, terrain.getEdge());
Obstacle obstacle = new Obstacle(currentWorld, data, terrain.getEdge());
super.add(obstacle);
obstacles.add(obstacle);
}

View File

@ -16,7 +16,6 @@ import com.example.julian.endlessroll.entities.tileLists.Terrain;
import com.example.julian.endlessroll.entities.tileLists.Tile;
import com.example.julian.endlessroll.entities.tools.Bomb;
import com.example.julian.endlessroll.entities.tools.Tool;
import com.example.julian.endlessroll.main.GameLog;
import java.util.ArrayList;
import java.util.HashMap;
@ -36,7 +35,7 @@ public class Physics {
}
public void applyGravity(GameScene scene, Timer timer) {
float gravity = GRAVITY_FORCE * timer.getFrameTime();
float gravity = GRAVITY_FORCE * timer.getFrameTimeSeconds();
scene.getPlayer().getMovement().y -= gravity;
synchronized (scene.getTools()) {

View File

@ -11,7 +11,7 @@ import com.example.julian.endlessroll.entities.particles.ParticleSystem;
import com.example.julian.endlessroll.entities.textures.TexturePack;
import com.example.julian.endlessroll.entities.tileLists.Ceiling;
import com.example.julian.endlessroll.entities.tileLists.Terrain;
import com.example.julian.endlessroll.levels.worlds.Theme;
import com.example.julian.endlessroll.levels.worlds.World;
import java.util.Iterator;
@ -20,8 +20,7 @@ import java.util.Iterator;
*/
public abstract class Scene extends SynchronizedArrayList<Entity> {
public float cameraX;
protected Camera camera;
private Vector screenSize;
private Entity playerArrow;
@ -35,10 +34,11 @@ public abstract class Scene extends SynchronizedArrayList<Entity> {
public Scene(TexturePack texturePack, ParticleSystem particleSystem) {
this.particleSystem = particleSystem;
setTexturePack(texturePack);
camera = new Camera();
playerArrow = new Entity(textures.playerArrow, new Vector(0, 0.9f), .2f, .2f);
background = new Background(Theme.GRASSLANDS.getBackgroundTexture());
terrain = new Terrain(Theme.GRASSLANDS.getTerrainTexture());
ceiling = new Ceiling(Theme.GRASSLANDS.getTerrainTexture());
background = new Background(World.GRASSLANDS.getBackgroundTexture());
terrain = new Terrain(World.GRASSLANDS.getTerrainTexture());
ceiling = new Ceiling(World.GRASSLANDS.getTerrainTexture());
player = new Player(textures.player);
}
@ -54,26 +54,27 @@ public abstract class Scene extends SynchronizedArrayList<Entity> {
if(entity instanceof AnimatedEntity)
((AnimatedEntity) entity).update(timer);
Vector movement = entity.getMovement();
Vector finalMovement = new Vector(movement).mul(timer.getFrameTime());
Vector finalMovement = new Vector(movement).mul(timer.getFrameTimeSeconds());
entity.move(finalMovement);
if (entity instanceof Obstacle) {
Obstacle obstacle = (Obstacle) entity;
if (obstacle.isMoving())
obstacle.moveWithMoveComponent(timer.getFrameTime());
obstacle.moveWithMoveComponent(timer.getFrameTimeSeconds());
}
if (entity.isDestroyed() && entity.getDestroyEffect() != null)
entity.getDestroyEffect().createEffect(particleSystem, new Vector(entity.getPosition()), new Vector(entity.getWidth(), entity.getHeight())).start();
if (entity.equals(player))
moveEnviroment(finalMovement.x);
else if (entity.getRightEdge() - cameraX < -3f || entity.isDestroyed()) {
else if (entity.getRightEdge() - camera.getX() < -3f || entity.isDestroyed()) {
iterator.remove();
removeEntityFromAllLists(entity);
}
}
}
if (player.getPosition().y >= player.RADIUS + 1) {
if (player.getPosition().y >= player.RADIUS + 1 + camera.getY()) {
playerArrow.getPosition().x = player.getPosition().x;
playerArrow.getPosition().y = camera.getY() + 0.9f;
if (!super.contains(playerArrow)) {
super.add(playerArrow);
}
@ -89,10 +90,10 @@ public abstract class Scene extends SynchronizedArrayList<Entity> {
protected abstract void removeEntityFromAllLists(Entity entity);
private void moveEnviroment(float x) {
cameraX += x;
background.move(x * 0.95f, cameraX);
terrain.update(cameraX);
ceiling.update(cameraX);
camera.moveX(x);
background.move(x * 0.95f, camera.getX());
terrain.update(camera.getX());
ceiling.update(camera.getX());
}
protected Vector calcWorldFromScreenCoords(float screenX, float screenY) throws Exception {
@ -100,7 +101,7 @@ public abstract class Scene extends SynchronizedArrayList<Entity> {
throw new Exception("ScreenSize not set");
float glCoordWidth = (2f * screenSize.x / screenSize.y);
float x = ((screenX / screenSize.x) * 2f - 1f) * glCoordWidth / 2;
x += cameraX;
x += camera.getX();
float y = -((screenY / screenSize.y) * 2f - 1f);
return new Vector(x, y);
}
@ -132,4 +133,8 @@ public abstract class Scene extends SynchronizedArrayList<Entity> {
public ParticleSystem getParticleSystem() {
return particleSystem;
}
public Camera getCamera() {
return camera;
}
}

View File

@ -3,13 +3,13 @@ package com.example.julian.endlessroll.main.game;
import com.example.julian.endlessroll.entities.Entity;
import com.example.julian.endlessroll.entities.particles.ParticleSystem;
import com.example.julian.endlessroll.entities.textures.TexturePack;
import com.example.julian.endlessroll.levels.worlds.Theme;
import com.example.julian.endlessroll.levels.worlds.World;
public class StartScene extends Scene {
public StartScene(TexturePack texturePack, ParticleSystem particleSystem) {
super(texturePack, particleSystem);
terrain.createEndless(Theme.ICY_MOUNTAINS, -.8f);
terrain.createEndless(World.ICY_MOUNTAINS, -.8f);
player.init(terrain.getEdge(), 0.5f, 0.5f);
super.add(player);
}

View File

@ -31,7 +31,7 @@ public class Timer {
}
}
public float getFrameTime() {
public float getFrameTimeSeconds() {
return delta;
}

View File

@ -83,7 +83,7 @@ public class StartScreen extends GLScreen<RelativeLayout> implements View.OnClic
// user.setStarCount(100);
levelManager.unlockAllLevels();
levelManager.unlockAllPacks();
user.gainEp(75);
user.gainEp(90);
} else if (v.equals(lvUp)) {
user.gainEp(100);
}

View File

@ -4,6 +4,7 @@ import android.opengl.Matrix;
import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.entities.Entity;
import com.example.julian.endlessroll.main.game.Camera;
/**
* Created by Julian on 23.11.2015.
@ -17,13 +18,13 @@ public class MatrixCreator {
this.height = height;
}
public float[] createModelViewProjectionMatrix(float cameraX) {
public float[] createModelViewProjectionMatrix(Camera camera) {
float[] mvpMatrix = new float[16];
float[] projectionMatrix = new float[16];
float[] viewMatrix = new float[16];
float ratio = width / height;
Matrix.frustumM(projectionMatrix, 0, -ratio + cameraX, ratio + cameraX, -1, 1, 1, 2);
Matrix.frustumM(projectionMatrix, 0, -ratio + camera.getX(), ratio + camera.getX(), -1 + camera.getY(), 1 + camera.getY(), 1, 2);
Matrix.setLookAtM(viewMatrix, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0);
Matrix.multiplyMM(mvpMatrix, 0, projectionMatrix, 0, viewMatrix, 0);
return mvpMatrix;

View File

@ -113,7 +113,7 @@ public class GameRenderer implements GLSurfaceView.Renderer {
private void renderEntities(GL10 gl, Scene scene) {
entityShader.start();
entityShader.loadMVPMatrix(matrixCreator, scene.cameraX);
entityShader.loadMVPMatrix(matrixCreator, scene.getCamera());
synchronized (scene.getBackground()) {
for (Entity backgroundPart : scene.getBackground())
renderEntity(gl, backgroundPart);
@ -131,12 +131,15 @@ public class GameRenderer implements GLSurfaceView.Renderer {
entityShader.loadTransformationMatrix(matrixCreator, entity);
entityShader.loadAlpha(entity.getAlpha());
entityShader.loadTextureAtlasInfos(entity.getTexture(), entity.getTextureAtlasIndex());
float texScaleX = entity.getMaxTexSize().x == 0 ? 1 : entity.getWidth() / entity.getMaxTexSize().x;
float texScaleY = entity.getMaxTexSize().y == 0 ? 1 : entity.getHeight() / entity.getMaxTexSize().y;
entityShader.loadTexCoordScaling(texScaleX, texScaleY);
quad.draw();
}
private void renderTileList(GL10 gl, TileList tileList, Scene scene) {
terrainShader.start();
terrainShader.loadMVPMatrix(matrixCreator, scene.cameraX);
terrainShader.loadMVPMatrix(matrixCreator, scene.getCamera());
synchronized (tileList) {
for (Tile tile : tileList) {
gl.glActiveTexture(GL10.GL_TEXTURE0);

View File

@ -47,7 +47,7 @@ public class ParticleRenderer {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
particleShader.start();
particleShader.loadMVPMatrix(matrixCreator, scene.cameraX);
particleShader.loadMVPMatrix(matrixCreator, scene.getCamera());
synchronized (scene.getParticleSystem().getEffects()) {
for (ParticleEffect effect : scene.getParticleSystem().getEffects()) {
gl.glActiveTexture(GL10.GL_TEXTURE0);

View File

@ -3,8 +3,10 @@ package com.example.julian.endlessroll.rendering.shader;
import android.content.Context;
import android.opengl.GLES20;
import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.entities.Entity;
import com.example.julian.endlessroll.entities.textures.Texture;
import com.example.julian.endlessroll.main.game.Camera;
import com.example.julian.endlessroll.rendering.MatrixCreator;
/**
@ -17,6 +19,7 @@ public class EntityShader extends ShaderProgram {
private int location_alpha;
private int location_texAtlasSize;
private int location_texAtlasIndex;
private int location_texCoordScaling;
public EntityShader(Context context) throws Exception {
super(context, "shader/entityVertexShader.glsl", "shader/entityFragmentShader.glsl");
@ -29,10 +32,11 @@ public class EntityShader extends ShaderProgram {
location_alpha = super.getUniformLocation("alpha");
location_texAtlasSize = super.getUniformLocation("texAtlasSize");
location_texAtlasIndex = super.getUniformLocation("texAtlasIndex");
location_texCoordScaling = super.getUniformLocation("texCoordScaling");
}
public void loadMVPMatrix(MatrixCreator matrixCreator, float cameraX) {
float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(cameraX);
public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
}
@ -49,4 +53,9 @@ public class EntityShader extends ShaderProgram {
GLES20.glUniform2f(location_texAtlasSize, texture.getAtlasWidth(), texture.getAtlasHeight());
GLES20.glUniform1f(location_texAtlasIndex, atlasIndex);
}
public void loadTexCoordScaling(float scalingX, float scalingY){
GLES20.glUniform2f(location_texCoordScaling, scalingX, scalingY);
}
}

View File

@ -5,6 +5,7 @@ import android.opengl.GLES20;
import com.example.julian.endlessroll.data.Color;
import com.example.julian.endlessroll.entities.Entity;
import com.example.julian.endlessroll.main.game.Camera;
import com.example.julian.endlessroll.rendering.MatrixCreator;
/**
@ -27,8 +28,8 @@ public class ParticleShader extends ShaderProgram {
location_color = super.getUniformLocation("color");
}
public void loadMVPMatrix(MatrixCreator matrixCreator, float cameraX) {
float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(cameraX);
public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
}

View File

@ -4,6 +4,7 @@ import android.content.Context;
import android.opengl.GLES20;
import com.example.julian.endlessroll.entities.Entity;
import com.example.julian.endlessroll.main.game.Camera;
import com.example.julian.endlessroll.rendering.MatrixCreator;
/**
@ -24,8 +25,8 @@ public class TerrainShader extends ShaderProgram {
location_transformationMatrix = super.getUniformLocation("transformationMatrix");
}
public void loadMVPMatrix(MatrixCreator matrixCreator, float cameraX) {
float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(cameraX);
public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
}

View File

@ -40,11 +40,11 @@ public class ToolSlotSettings extends ArrayList<ToolSlot> {
}
public int getLockedSlotCount() {
for (int i = super.size() - 1; i > 0; i--) {
if (!super.get(i).isLocked())
return i + 1;
}
return 0;
int count = 0;
for (ToolSlot slot : this)
if(slot.isLocked())
count ++;
return count;
}
}

View File

@ -1,5 +1,7 @@
package com.example.julian.endlessroll.user;
import com.example.julian.endlessroll.main.GameLog;
/**
* Created by Julian on 10.07.2016.
*/

View File

@ -8,6 +8,7 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.main.GameLog;
import com.example.julian.endlessroll.user.ToolSlotSettings;
import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.main.game.Game;
@ -36,7 +37,6 @@ public class ToolButtonBar implements View.OnClickListener, Animation.AnimationL
private Animation fadeIn, fadeOut;
private Game game;
private ToolSlotSettings toolSlotSettings;
private List<ToolButton> buttons = new ArrayList<>(4);
private RelativeLayout button1;
private RelativeLayout button2;
@ -46,7 +46,6 @@ public class ToolButtonBar implements View.OnClickListener, Animation.AnimationL
public ToolButtonBar(Game game, ToolSlotSettings toolSlotSettings, LinearLayout layout1) {
this.game = game;
this.toolSlotSettings = toolSlotSettings;
Context context = game.getContext();
fadeIn = AnimationUtils.loadAnimation(game.getContext(), R.anim.fade_in);
fadeIn.setAnimationListener(this);
@ -80,14 +79,15 @@ public class ToolButtonBar implements View.OnClickListener, Animation.AnimationL
button4.startAnimation(fadeOut);
}
public void changeToolButtonTypes() {
public void changeToolButtonTypes(ToolSlotSettings toolSlotSettings) {
for (int i = 0; i < 4; i++) {
buttons.get(i).changeToolSlot(toolSlotSettings.get(i));
}
}
public void reset() {
changeToolButtonTypes();
public void reset(ToolSlotSettings toolSlotSettings) {
GameLog.i("Reset toolbuttonBar");
changeToolButtonTypes(toolSlotSettings);
for (int i = 0; i < 4; i++) {
if (toolSlotSettings.get(i).getToolType() != ToolType.NONE) {
setActive(i);

View File

@ -10,15 +10,16 @@ import android.widget.TextView;
import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.main.GameHandler;
import com.example.julian.endlessroll.main.game.Camera;
import com.example.julian.endlessroll.main.game.Game;
import com.example.julian.endlessroll.main.game.Timer;
import com.example.julian.endlessroll.user.User;
/**
* Created by Julian on 11.12.2015.
*/
public class ViewManager implements View.OnClickListener {
private Vector screenSize;
private GameHandler gameViewHandler;
private Game game;
@ -52,24 +53,16 @@ public class ViewManager implements View.OnClickListener {
fpsView = (TextView) layout.findViewById(R.id.game_fps);
}
public void setScreenSize(Vector screenSize) {
this.screenSize = screenSize;
}
public boolean isScreenSizeSet() {
return screenSize != null;
}
@Override
public void onClick(View v) {
game.tryToPause();
}
public void resetViews() {
public void resetViews(final User user) {
gameViewHandler.startInUiThread(new Runnable() {
@Override
public void run() {
toolButtonBar.reset();
toolButtonBar.reset(user.getToolSlotSettings());
toolButtonBar.update(0);
playerProgress.setText("0.0m");
playerSpeed.setText("0.0m/s");
@ -104,7 +97,7 @@ public class ViewManager implements View.OnClickListener {
countdown.stop();
}
public void update(final boolean gameRunning, final Timer timer, final float playerX, final float playerXMov, final float playerY) {
public void update(final boolean gameRunning, final Timer timer, final float playerX, final float playerXMov) {
gameViewHandler.startInUiThread(new Runnable() {
@Override
public void run() {
@ -112,7 +105,7 @@ public class ViewManager implements View.OnClickListener {
if (gameRunning) {
playerProgress.setText(toMeters(playerX) + "m");
playerSpeed.setText(toMeters(playerXMov * 1000) + "m/s");
toolButtonBar.update(timer.getFrameTime());
toolButtonBar.update(timer.getFrameTimeSeconds());
}
}
});

View File

@ -10,7 +10,7 @@ import android.widget.TextView;
import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.levels.LevelPack;
import com.example.julian.endlessroll.levels.worlds.Theme;
import com.example.julian.endlessroll.levels.worlds.World;
/**
* Created by Julian on 01.08.2016.
@ -18,7 +18,7 @@ import com.example.julian.endlessroll.levels.worlds.Theme;
public class WorldButton extends RelativeLayout {
private LevelPack levelPack;
private Theme theme;
private World world;
private TextView title;
private ImageView previewImage;
@ -30,7 +30,7 @@ public class WorldButton extends RelativeLayout {
public WorldButton(Context context, Typeface typeface, View.OnClickListener clickListener, LevelPack levelPack) {
super(context);
this.levelPack = levelPack;
this.theme = levelPack.getTheme();
this.world = levelPack.getWorld();
LayoutInflater inflater = LayoutInflater.from(context);
inflater.inflate(R.layout.world_button, this);
@ -52,7 +52,7 @@ public class WorldButton extends RelativeLayout {
public void updateInformation() {
title.setText(levelPack.getName());
previewImage.setImageDrawable(getContext().getResources().getDrawable(theme.getPreviewId()));
previewImage.setImageDrawable(getContext().getResources().getDrawable(world.getPreviewId()));
levelCount.setText(levelPack.getFinishedLevelCount() + "/" + levelPack.getLevels().size());
starCount.setText(levelPack.getCollectedStarCount() + "/" + levelPack.getAvailableStars());
energyCount.setText(levelPack.getCollectedEnergyCount() + "/" + levelPack.getAvailableEnergy());

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 278 B

View File

@ -51,6 +51,6 @@
android:layout_marginLeft="48dp"
android:layout_marginStart="48dp"
android:text="Lv to 100"
android:visibility="gone"/>
android:visibility="visible"/>
</RelativeLayout>

View File

@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'com.android.tools.build:gradle:2.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files