Fixed Obstacle-Move-Component bug, when offsets were set

Countdown now played as three seperate sounds, though not perfect yet (neither timing, nor high pitches)
Added lv 12
This commit is contained in:
= 2018-04-30 19:04:01 +02:00
parent 1871979b41
commit 66b3b1d55e
17 changed files with 435 additions and 125 deletions

View File

@ -619,7 +619,7 @@ public final class R {
public static final int abc_shareactionprovider_share_with = 0x7f0d0010;
public static final int abc_shareactionprovider_share_with_application = 0x7f0d0011;
public static final int abc_toolbar_collapse_description = 0x7f0d0012;
public static final int status_bar_notification_info_overflow = 0x7f0d0059;
public static final int status_bar_notification_info_overflow = 0x7f0d005b;
}
public static final class style {
public static final int AlertDialog_AppCompat = 0x7f0e0000;

File diff suppressed because one or more lines are too long

View File

@ -18,6 +18,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:testOnly="true"
android:theme="@style/AppTheme" >
<activity
android:name="de.frajul.endlessroll.main.GameActivity"

View File

@ -872,16 +872,17 @@ int raw music_game_3 0x7f0c0002
int raw music_menu 0x7f0c0003
int raw sound_collect_energy 0x7f0c0004
int raw sound_collect_star 0x7f0c0005
int raw sound_countdown 0x7f0c0006
int raw sound_die 0x7f0c0007
int raw sound_explosion 0x7f0c0008
int raw sound_firework 0x7f0c0009
int raw sound_goal 0x7f0c000a
int raw sound_magnet 0x7f0c000b
int raw sound_mushroom 0x7f0c000c
int raw sound_place_tool 0x7f0c000d
int raw sound_spring 0x7f0c000e
int raw sound_stasis 0x7f0c000f
int raw sound_countdown_last 0x7f0c0006
int raw sound_countdown_single 0x7f0c0007
int raw sound_die 0x7f0c0008
int raw sound_explosion 0x7f0c0009
int raw sound_firework 0x7f0c000a
int raw sound_goal 0x7f0c000b
int raw sound_magnet 0x7f0c000c
int raw sound_mushroom 0x7f0c000d
int raw sound_place_tool 0x7f0c000e
int raw sound_spring 0x7f0c000f
int raw sound_stasis 0x7f0c0010
int string abc_action_bar_home_description 0x7f0d0000
int string abc_action_bar_home_description_format 0x7f0d0001
int string abc_action_bar_home_subtitle_description_format 0x7f0d0002
@ -960,56 +961,58 @@ int string playershape_name_wheel 0x7f0d004a
int string pre_start_screen_loading 0x7f0d004b
int string price_button_buy 0x7f0d004c
int string price_button_upgrade 0x7f0d004d
int string settings_credits 0x7f0d004e
int string settings_music 0x7f0d004f
int string settings_reset 0x7f0d0050
int string settings_sounds 0x7f0d0051
int string short_menu_continue 0x7f0d0052
int string short_menu_exit 0x7f0d0053
int string start_screen_finish_world_1 0x7f0d0054
int string start_screen_gain_90_ep 0x7f0d0055
int string start_screen_play 0x7f0d0056
int string start_screen_to_gl_test_screen 0x7f0d0057
int string start_screen_unlock_all_levels 0x7f0d0058
int string status_bar_notification_info_overflow 0x7f0d0059
int string task_collect_energy_format_d 0x7f0d005a
int string task_collect_energy_progress_format_ddd 0x7f0d005b
int string task_collect_stars_format_d 0x7f0d005c
int string task_collect_stars_progress_format_ddd 0x7f0d005d
int string task_complete_world_format_d 0x7f0d005e
int string task_empty 0x7f0d005f
int string tool_description_bomb 0x7f0d0060
int string tool_description_locked_format_d 0x7f0d0061
int string tool_description_magnet 0x7f0d0062
int string tool_description_power_mushroom 0x7f0d0063
int string tool_description_ramp 0x7f0d0064
int string tool_description_spring 0x7f0d0065
int string tool_description_stasis 0x7f0d0066
int string tool_level_format_d 0x7f0d0067
int string tool_name_bomb 0x7f0d0068
int string tool_name_locked 0x7f0d0069
int string tool_name_magnet 0x7f0d006a
int string tool_name_power_mushroom 0x7f0d006b
int string tool_name_ramp 0x7f0d006c
int string tool_name_spring 0x7f0d006d
int string tool_name_stasis 0x7f0d006e
int string topbar_level_format_d 0x7f0d006f
int string topbar_level_placeholder 0x7f0d0070
int string tutorial_leveled_up_to_toolshop 0x7f0d0071
int string tutorial_place_ramp_air 0x7f0d0072
int string tutorial_place_ramp_air_2 0x7f0d0073
int string tutorial_place_ramp_gap 0x7f0d0074
int string tutorial_place_ramp_obstacle 0x7f0d0075
int string tutorial_place_tools 0x7f0d0076
int string tutorial_placeholder 0x7f0d0077
int string tutorial_spring_equipped 0x7f0d0078
int string tutorial_switch_tools_switch 0x7f0d0079
int string tutorial_switch_tools_two_neccessary 0x7f0d007a
int string tutorial_welcome 0x7f0d007b
int string unlock_message_placeholder 0x7f0d007c
int string world_button_count_format_dd 0x7f0d007d
int string world_button_progress_placeholder 0x7f0d007e
int string world_button_title_placeholder 0x7f0d007f
int string settings_boost_performance 0x7f0d004e
int string settings_credits 0x7f0d004f
int string settings_music 0x7f0d0050
int string settings_reset 0x7f0d0051
int string settings_show_fps 0x7f0d0052
int string settings_sounds 0x7f0d0053
int string short_menu_continue 0x7f0d0054
int string short_menu_exit 0x7f0d0055
int string start_screen_finish_world_1 0x7f0d0056
int string start_screen_gain_90_ep 0x7f0d0057
int string start_screen_play 0x7f0d0058
int string start_screen_to_gl_test_screen 0x7f0d0059
int string start_screen_unlock_all_levels 0x7f0d005a
int string status_bar_notification_info_overflow 0x7f0d005b
int string task_collect_energy_format_d 0x7f0d005c
int string task_collect_energy_progress_format_ddd 0x7f0d005d
int string task_collect_stars_format_d 0x7f0d005e
int string task_collect_stars_progress_format_ddd 0x7f0d005f
int string task_complete_world_format_d 0x7f0d0060
int string task_empty 0x7f0d0061
int string tool_description_bomb 0x7f0d0062
int string tool_description_locked_format_d 0x7f0d0063
int string tool_description_magnet 0x7f0d0064
int string tool_description_power_mushroom 0x7f0d0065
int string tool_description_ramp 0x7f0d0066
int string tool_description_spring 0x7f0d0067
int string tool_description_stasis 0x7f0d0068
int string tool_level_format_d 0x7f0d0069
int string tool_name_bomb 0x7f0d006a
int string tool_name_locked 0x7f0d006b
int string tool_name_magnet 0x7f0d006c
int string tool_name_power_mushroom 0x7f0d006d
int string tool_name_ramp 0x7f0d006e
int string tool_name_spring 0x7f0d006f
int string tool_name_stasis 0x7f0d0070
int string topbar_level_format_d 0x7f0d0071
int string topbar_level_placeholder 0x7f0d0072
int string tutorial_leveled_up_to_toolshop 0x7f0d0073
int string tutorial_place_ramp_air 0x7f0d0074
int string tutorial_place_ramp_air_2 0x7f0d0075
int string tutorial_place_ramp_gap 0x7f0d0076
int string tutorial_place_ramp_obstacle 0x7f0d0077
int string tutorial_place_tools 0x7f0d0078
int string tutorial_placeholder 0x7f0d0079
int string tutorial_spring_equipped 0x7f0d007a
int string tutorial_switch_tools_switch 0x7f0d007b
int string tutorial_switch_tools_two_neccessary 0x7f0d007c
int string tutorial_welcome 0x7f0d007d
int string unlock_message_placeholder 0x7f0d007e
int string world_button_count_format_dd 0x7f0d007f
int string world_button_progress_placeholder 0x7f0d0080
int string world_button_title_placeholder 0x7f0d0081
int style AlertDialog_AppCompat 0x7f0e0000
int style AlertDialog_AppCompat_Light 0x7f0e0001
int style Animation_AppCompat_Dialog 0x7f0e0002

View File

@ -4,8 +4,8 @@ ADDED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\Androi
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml:2:1-28:12
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml:2:1-28:12
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml:2:1-28:12
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\cd1b4326e553e1450693e41a7d2a2378\AndroidManifest.xml:17:1-24:12
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\68d3d050c1785dea090a9bf78cc08c64\AndroidManifest.xml:17:1-24:12
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\d874715e6054e786cbcfdf9c2b37e7ce\AndroidManifest.xml:17:1-24:12
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\73b2b88e0673fce2821db6e163719bff\AndroidManifest.xml:17:1-24:12
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml:2:1-28:12
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml:2:1-28:12
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml:2:1-28:12
@ -31,10 +31,10 @@ ADDED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\Androi
ADDED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml:7:9-32
application
ADDED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml:9:5-26:19
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\cd1b4326e553e1450693e41a7d2a2378\AndroidManifest.xml:22:5-20
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\cd1b4326e553e1450693e41a7d2a2378\AndroidManifest.xml:22:5-20
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\68d3d050c1785dea090a9bf78cc08c64\AndroidManifest.xml:22:5-20
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\68d3d050c1785dea090a9bf78cc08c64\AndroidManifest.xml:22:5-20
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\d874715e6054e786cbcfdf9c2b37e7ce\AndroidManifest.xml:22:5-20
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\d874715e6054e786cbcfdf9c2b37e7ce\AndroidManifest.xml:22:5-20
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\73b2b88e0673fce2821db6e163719bff\AndroidManifest.xml:22:5-20
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\73b2b88e0673fce2821db6e163719bff\AndroidManifest.xml:22:5-20
android:supportsRtl
ADDED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml:13:9-35
android:label
@ -67,10 +67,10 @@ uses-sdk
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml reason: use-sdk injection requested
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\cd1b4326e553e1450693e41a7d2a2378\AndroidManifest.xml:20:5-43
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\cd1b4326e553e1450693e41a7d2a2378\AndroidManifest.xml:20:5-43
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\68d3d050c1785dea090a9bf78cc08c64\AndroidManifest.xml:20:5-43
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\68d3d050c1785dea090a9bf78cc08c64\AndroidManifest.xml:20:5-43
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\d874715e6054e786cbcfdf9c2b37e7ce\AndroidManifest.xml:20:5-43
MERGED from [com.android.support:appcompat-v7:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\appcompat-v7-23.1.1.aar\d874715e6054e786cbcfdf9c2b37e7ce\AndroidManifest.xml:20:5-43
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\73b2b88e0673fce2821db6e163719bff\AndroidManifest.xml:20:5-43
MERGED from [com.android.support:support-v4:23.1.1] C:\Users\Julian\.gradle\caches\transforms-1\files-1.1\support-v4-23.1.1.aar\73b2b88e0673fce2821db6e163719bff\AndroidManifest.xml:20:5-43
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml
INJECTED from C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\AndroidManifest.xml
android:targetSdkVersion

View File

@ -662,7 +662,7 @@
<moveComponent length="2.191" rotation="90.0" startOffset="0.0" direction="1.0" speed="1.0" hasPlayerXSpeed="false" triggerDistance="3.0"/>
</obstacleData>
<obstacleData floating="false" moving="true" deadly="true" leftEdge="26.371086" rightEdge="26.702087" height="0.331" y="-0.43450004">
<moveComponent length="2.062" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.907" hasPlayerXSpeed="false" triggerDistance="0.571"/>
<moveComponent length="2.062" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.955" hasPlayerXSpeed="false" triggerDistance="0.571"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="25.832417" rightEdge="26.647415" height="0.255" y="0.48000008">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
@ -678,49 +678,338 @@
</stars>
<energy x="4.343331" y="-0.53999984"/>
</level>
<level packId="2" id="10" goalX="6.2266636" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="2" id="10" goalX="30.120028" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="-0.7938335" width="4.412333"/>
<tileData x="4.0304985" width="4.3923306"/>
<tileData x="-0.91900015" width="4.1619997"/>
<tileData x="3.8839147" width="2.5318303"/>
<tileData x="8.451764" width="4.029869"/>
<tileData x="21.516073" width="2.0987587"/>
<tileData x="26.103561" width="4.4182224"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="1.6133318" width="9.226664"/>
<tileData x="13.560013" width="33.120026"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-2.7500002" rightEdge="0.9699998" height="1.439" y="0.36000007">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="1.4381661" rightEdge="1.7951663" height="0.369" y="-0.8666664">
<moveComponent length="1.778" rotation="0.0" startOffset="0.0" direction="1.0" speed="1.0" hasPlayerXSpeed="false" triggerDistance="-0.122"/>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="1.2514997" rightEdge="1.6084998" height="0.369" y="-0.933333">
<moveComponent length="1.881" rotation="47.12" startOffset="0.0" direction="1.0" speed="1.0" hasPlayerXSpeed="true" triggerDistance="-0.286"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.304832" rightEdge="4.521832" height="0.5" y="0.14000002">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="3.0781646" rightEdge="5.2951646" height="0.268" y="0.2533333">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.0373316" rightEdge="5.0693316" height="1.07" y="1.3666667">
<obstacleData floating="true" moving="false" deadly="false" leftEdge="2.5639982" rightEdge="5.595998" height="1.07" y="1.3733333">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="7.097163" rightEdge="8.956162" height="0.242" y="0.13333328">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="5.1649957" rightEdge="5.9549956" height="0.217" y="-0.87333304">
<moveComponent length="1.624" rotation="43.351" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.51"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="7.222502" rightEdge="7.4775023" height="0.217" y="-0.1266667">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="7.5723352" rightEdge="7.954335" height="0.229" y="-0.13333343">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="8.0515175" rightEdge="8.688517" height="0.204" y="-0.113333344">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="6.390167" rightEdge="8.683168" height="0.5" y="0.96000004">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="3.1693308" rightEdge="3.5773308" height="0.28" y="-0.08000002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="3.6724973" rightEdge="4.207497" height="0.115" y="-0.19333337">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="4.2481637" rightEdge="4.605164" height="0.306" y="-0.23333333">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="4.70583" rightEdge="4.96083" height="0.229" y="-0.13333338">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="9.58702" rightEdge="10.453019" height="0.5" y="-0.35000002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="true" leftEdge="9.85485" rightEdge="10.21185" height="0.471" y="0.15999986">
<moveComponent length="1.418" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.702" hasPlayerXSpeed="false" triggerDistance="0.551"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="10.536688" rightEdge="11.036688" height="0.5" y="-0.9066665">
<moveComponent length="8.866" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.286"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="11.69586" rightEdge="11.950859" height="0.395" y="-0.37333325">
<moveComponent length="1.134" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.601" hasPlayerXSpeed="false" triggerDistance="0.531"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="12.566045" rightEdge="13.254045" height="0.255" y="-0.006666649">
<moveComponent length="2.036" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.265"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="13.443692" rightEdge="13.749692" height="0.357" y="-0.3466666">
<moveComponent length="1.108" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.611" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="true" leftEdge="15.324541" rightEdge="15.65554" height="0.382" y="-0.066666625">
<moveComponent length="0.979" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.409" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="17.453363" rightEdge="17.953363" height="0.166" y="-0.22">
<moveComponent length="1.778" rotation="58.429" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.246"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.362484" rightEdge="20.897484" height="0.981" y="0.37666652">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="26.145893" rightEdge="26.553894" height="0.306" y="-0.44700003">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="27.00655" rightEdge="27.50655" height="0.331" y="-0.43450004">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="27.553202" rightEdge="28.053202" height="0.573" y="-0.31350002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="28.113201" rightEdge="28.613201" height="0.701" y="-0.13333334">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="28.837671" rightEdge="29.168673" height="0.318" y="0.8133331">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="29.30467" rightEdge="29.941671" height="0.382" y="0.5799999">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="28.783506" rightEdge="29.089506" height="0.5" y="-0.48">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="29.231342" rightEdge="29.58834" height="0.28" y="-0.80666643">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList"/>
<stars class="java.util.ArrayList">
<positionData x="13.233373" y="-0.3533333"/>
<positionData x="19.786663" y="0.5666666"/>
<positionData x="26.836557" y="-0.4199999"/>
</stars>
<energy x="8.076671" y="-0.4333333"/>
</level>
<level packId="2" id="11" goalX="3.0" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="2" id="11" goalX="35.000088" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
<tileData x="1.9945903" width="9.989181"/>
<tileData x="9.964941" width="2.28152"/>
<tileData x="16.182203" width="3.909007"/>
<tileData x="28.5862" width="0.89899826"/>
<tileData x="33.97028" width="8.519159"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
<tileData x="16.000044" width="38.000088"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList"/>
<stars class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.7078334" rightEdge="2.0388334" height="0.268" y="-0.46600002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.6304982" rightEdge="3.0894983" height="0.28" y="-0.46000004">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="5.343664" rightEdge="5.9296646" height="0.268" y="-0.46600002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="true" leftEdge="6.4500103" rightEdge="6.73001" height="0.497" y="-0.35150003">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="6.7693443" rightEdge="8.017344" height="0.242" y="-0.35333326">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="10.603366" rightEdge="11.103366" height="0.268" y="-0.46600002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="11.996707" rightEdge="12.496707" height="0.5" y="-0.35000002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="12.564209" rightEdge="13.609209" height="0.153" y="-0.2701668">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.403713" rightEdge="14.129713" height="0.5" y="-1.1466665">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="16.76672" rightEdge="17.26672" height="0.65" y="-0.27500004">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="16.780052" rightEdge="17.280052" height="0.5" y="0.8266664">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="17.435705" rightEdge="19.397707" height="0.166" y="-0.517">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="18.202517" rightEdge="19.017515" height="0.5" y="-1.0999999">
<moveComponent length="8.866" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.408"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.416666" rightEdge="20.916666" height="0.624" y="-0.28800002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.998339" rightEdge="22.348337" height="0.382" y="-0.17999999">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="22.428656" rightEdge="24.364656" height="0.178" y="0.37333322">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="22.362144" rightEdge="24.451145" height="0.102" y="-0.5266666">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="22.41331" rightEdge="22.693308" height="0.255" y="0.026666686">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="23.65248" rightEdge="24.187479" height="0.268" y="0.08666666">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="22.968142" rightEdge="23.32514" height="0.166" y="0.093333334">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="24.313643" rightEdge="24.619642" height="0.306" y="-0.10666666">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="24.734808" rightEdge="25.091806" height="0.306" y="-0.4199999">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="24.84031" rightEdge="25.146309" height="0.28" y="0.07333332">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="25.271952" rightEdge="26.367952" height="0.242" y="0.37333333">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="26.483599" rightEdge="26.789598" height="0.293" y="0.17333329">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="26.892263" rightEdge="27.274263" height="0.471" y="0.31333333">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="26.166286" rightEdge="29.020287" height="0.191" y="-0.50450003">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="31.871197" rightEdge="32.635197" height="0.331" y="-0.43450004">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="33.287567" rightEdge="33.46557" height="0.369" y="-0.073333316">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="33.516895" rightEdge="34.382893" height="0.293" y="0.07333334">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="34.44654" rightEdge="34.72654" height="0.611" y="0.046666637">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="true" leftEdge="33.89656" rightEdge="34.39656" height="0.382" y="-0.40900004">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="6.196677" y="-0.43999985"/>
<positionData x="13.046714" y="-0.71333295"/>
<positionData x="27.066572" y="0.8799999"/>
</stars>
<energy x="23.376633" y="-0.25999996"/>
</level>
<level packId="2" id="12" goalX="3.0" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<level packId="2" id="12" goalX="34.973343" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
<tileData x="-2.8544993" width="0.29100132"/>
<tileData x="9.445511" width="4.3930206"/>
<tileData x="20.777142" width="8.438255"/>
<tileData x="30.988874" width="5.277218"/>
<tileData x="36.450974" width="4.170971"/>
</terrainTiles>
<ceilingTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/>
<tileData x="15.986671" width="37.973343"/>
</ceilingTiles>
<obstacles class="java.util.ArrayList"/>
<stars class="java.util.ArrayList"/>
<obstacles class="java.util.ArrayList">
<obstacleData floating="false" moving="false" deadly="false" leftEdge="4.134166" rightEdge="5.179166" height="0.42" y="-0.39000005">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="-1.1766669" rightEdge="-0.67666686" height="0.5" y="-1.1333332">
<moveComponent length="7.655" rotation="90.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.388"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="0.9554981" rightEdge="3.044498" height="0.357" y="-0.6666667">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="true" leftEdge="5.3111653" rightEdge="5.6421657" height="0.446" y="-0.6866662">
<moveComponent length="1.469" rotation="0.0" startOffset="0.0" direction="1.0" speed="1.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="5.7270026" rightEdge="6.593003" height="0.357" y="-0.26000005">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="12.343367" rightEdge="12.843367" height="1.592" y="0.19599998">
<moveComponent length="3.351" rotation="90.0" startOffset="0.619" direction="-1.0" speed="0.803" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="true" deadly="false" leftEdge="14.51005" rightEdge="15.01005" height="1.592" y="0.20933332">
<moveComponent length="2.397" rotation="90.0" startOffset="0.202" direction="1.0" speed="0.146" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.766024" rightEdge="12.454023" height="0.5" y="-1.1466668">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="13.187208" rightEdge="14.206207" height="0.5" y="-1.0266666">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="14.567542" rightEdge="15.612542" height="0.5" y="-1.1866665">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="15.75938" rightEdge="16.44738" height="0.395" y="-1.0066664">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="21.480015" rightEdge="22.600014" height="0.611" y="-0.29450002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="22.640993" rightEdge="24.958994" height="0.879" y="-0.16050002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="26.439932" rightEdge="26.939932" height="0.5" y="0.086666666">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="30.913702" rightEdge="31.372702" height="0.357" y="0.29333326">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="32.54335" rightEdge="32.97635" height="0.357" y="0.19333328">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="30.929989" rightEdge="31.362988" height="0.217" y="-0.49150002">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="33.04563" rightEdge="33.300636" height="0.268" y="0.123333335">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="33.360973" rightEdge="33.691975" height="0.331" y="0.12666667">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="33.746468" rightEdge="34.026466" height="0.357" y="0.04">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="34.076473" rightEdge="34.576473" height="0.382" y="0.08666667">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.062815" rightEdge="21.463816" height="0.369" y="-0.41550004">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="25.614729" rightEdge="27.831728" height="0.5" y="-1.0999999">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="28.178843" rightEdge="28.840841" height="0.255" y="0.2799999">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="false" leftEdge="29.589344" rightEdge="30.150345" height="0.318" y="0.31333324">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="29.083157" rightEdge="29.363155" height="0.28" y="0.22666661">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="27.069157" rightEdge="27.477158" height="0.306" y="0.14666665">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
<obstacleData floating="true" moving="false" deadly="true" leftEdge="27.686817" rightEdge="27.992817" height="0.369" y="0.15999998">
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
</obstacleData>
</obstacles>
<stars class="java.util.ArrayList">
<positionData x="4.6733313" y="-0.73333293"/>
<positionData x="14.096695" y="0.21999995"/>
<positionData x="34.306538" y="0.44000018"/>
</stars>
<energy x="26.693165" y="0.54666674"/>
</level>
</levels>
</levelPack>

View File

@ -34,12 +34,13 @@ public class Obstacle extends Entity {
super.setToTerrain(terrainEdge);
if (moveComponent != null && moving) {
moveComponent.init(super.getPosition());
moveProgress = moveComponent.getStartOffset();
moveDirection = moveComponent.getDirection();
moveProgress = moveComponent.getStartOffset();
//Constant player speed assumed
float timeTillPlayerReachesTrigger = player.getSpeed() * ((moveComponent
.getLeftmostPosition() - super.getWidth() / 2 - moveComponent
.getTriggerDistance()) - player.getRightEdge());
float triggerX = super.getPosition().getX() - super.getWidth() / 2 - moveComponent
.getTriggerDistance();
float timeTillPlayerReachesTrigger = player.getSpeed() * (triggerX - player
.getRightEdge());
moveDirection *= -1;
moveWithMoveComponent(timeTillPlayerReachesTrigger * 1000 * 1000, player.getSpeed());
moveDirection *= -1;

View File

@ -74,10 +74,6 @@ public class MoveComponent {
speed /= TRANSITION_VALUE;
}
public float getLeftmostPosition() {
return triangleWidth >= 0 ? position.x : position.x + triangleWidth;
}
public Vector getMovementVector(float moveDirection) {
return new Vector(triangleWidth, triangleHeight).normalize()
.mul(moveDirection * getSpeed() * TRANSITION_VALUE);

View File

@ -33,7 +33,8 @@ public class SoundManager {
public final Sound dieSound;
public final Sound collectStarSound;
public final Sound collectEnergySound;
public final Sound countdownSound;
public final Sound countdownSoundSingle;
public final Sound countdownSoundLast;
public final Sound explosionSound;
public final Sound fireworkSound;
public final Sound stasisSound;
@ -59,7 +60,8 @@ public class SoundManager {
dieSound = new Sound(loadSound(R.raw.sound_die));
collectStarSound = new Sound(loadSound(R.raw.sound_collect_star), .7f);
collectEnergySound = new Sound(loadSound(R.raw.sound_collect_energy));
countdownSound = new Sound(loadSound(R.raw.sound_countdown));
countdownSoundSingle = new Sound(loadSound(R.raw.sound_countdown_single), .9f);
countdownSoundLast = new Sound(loadSound(R.raw.sound_countdown_last), .8f);
explosionSound = new Sound(loadSound(R.raw.sound_explosion), 2);
fireworkSound = new Sound(loadSound(R.raw.sound_firework));
stasisSound = new Sound(loadSound(R.raw.sound_stasis), 1.3f, true);

View File

@ -36,11 +36,17 @@ public class Countdown {
public void update(float delta) {
if (running.get()) {
time += delta;
if (time >= 1000 && currentSeconds == 0)
onNextSecondInUiThread(1);
if (time >= 2000 && currentSeconds == 1)
onNextSecondInUiThread(2);
if (time >= 1000 && currentSeconds == 0) {
currentSeconds = 1;
onNextSecondInUiThread(currentSeconds, true);
}
if (time >= 2000 && currentSeconds == 1) {
currentSeconds = 2;
onNextSecondInUiThread(currentSeconds, true);
}
if (time >= 3000 && currentSeconds == 2) {
currentSeconds = 3;
gameActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
@ -58,7 +64,7 @@ public class Countdown {
running.set(true);
textView.setVisibility(View.VISIBLE);
soundStream = gameActivity.getSoundManager()
.playSound(gameActivity.getSoundManager().countdownSound);
.playSound(gameActivity.getSoundManager().countdownSoundSingle);
}
public void stop() {
@ -70,14 +76,22 @@ public class Countdown {
private void reset() {
time = 0;
onNextSecondInUiThread(0);
currentSeconds = 0;
onNextSecondInUiThread(0, false);
}
private void onNextSecondInUiThread(final int second) {
private void onNextSecondInUiThread(final int second, final boolean playSound) {
gameActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
currentSeconds = second;
if(playSound){
if(second == 2)
soundStream = gameActivity.getSoundManager()
.playSound(gameActivity.getSoundManager().countdownSoundLast);
else
soundStream = gameActivity.getSoundManager()
.playSound(gameActivity.getSoundManager().countdownSoundSingle);
}
textView.setText((3 - second) + "");
int color = R.color.countdown1;
if (second == 1)

View File

@ -107,14 +107,14 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="Show FPS"
android:text="@string/settings_show_fps"
android:textSize="20sp"/>
<CheckBox
android:id="@+id/settings_performance_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Boost performance"
android:text="@string/settings_boost_performance"
android:textSize="20sp"/>
</LinearLayout>

Binary file not shown.

Binary file not shown.

View File

@ -75,4 +75,6 @@
<string name="credits_testers_title">TESTER</string>
<string name="credits_music_title">MUSIK</string>
<string name="settings_music">Musik</string>
<string name="settings_show_fps">Fps anzeigen</string>
<string name="settings_boost_performance">Leistung erhöhen</string>
</resources>

View File

@ -4,6 +4,8 @@
<string name="placeholder_textview">I\'m a text!</string>
<string name="placeholder_number" translatable="false">997.5</string>
<string name="settings_show_fps">Show Fps</string>
<string name="settings_boost_performance">Boost performance</string>
<string name="game_bomb_error_message">Set the bomb on an obstacle</string>
<string name="game_playerprogress_placeholder" translatable="false">0.0m</string>
<string name="game_playerprogress_format_f" translatable="false">%.1fm</string>
@ -111,7 +113,7 @@
<string name="credits_testers_title">TESTERS</string>
<string name="credits_testers" translatable="false">Tester1\nTester2\nTester3\nTester4</string>
<string name="credits_sounds_title" translatable="false">SOUNDS</string>
<string name="credits_sounds" translatable="false">„Fruit-collected“, „Glocken-good“, „Carillon-02-a“, „Carillon-02-b“,„Fireball-02“, „Fruit-appearance“, „Voltage-hum“ (noiseforfun.com)</string>
<string name="credits_sounds" translatable="false">„Fruit-collected“, „Glocken-good“, „Carillon-02-a“, „Carillon-02-b“, „Fireball-02“, „Fruit-appearance“, „Voltage-hum“ (noiseforfun.com)</string>
<string name="credits_music_title">MUSIC</string>
<string name="credits_music" translatable="false">\"Balloon Game\", \"Bit Shift\", \"Digital Lemonade\"\nKevin MacLeod (incompetech.com)\nLicensed under Creative Commons: By Attribution 3.0\nhttp://creativecommons.org/licenses/by/3.0/</string>
</resources>

View File

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