Different distribution of safed user data

New currency (Energy) -> once each level
Levelpacks are shown by their names in WorldsScreen and also ordered by their id
Stars and Energy don't have their sizes safed in levelpacks because they are static
Different Ramp size and Spring effect
Lv up can be shown on every Screen
If clicked on Tool-Bounty on lv-up screen, transfer to Toolshop
This commit is contained in:
= 2017-02-19 15:05:43 +01:00
parent aea336d850
commit 0bad3e064c
98 changed files with 1662 additions and 1110 deletions

View File

@ -456,10 +456,10 @@ public final class R {
public static final int abc_textfield_search_activated_mtrl_alpha = 0x7f020042; public static final int abc_textfield_search_activated_mtrl_alpha = 0x7f020042;
public static final int abc_textfield_search_default_mtrl_alpha = 0x7f020043; public static final int abc_textfield_search_default_mtrl_alpha = 0x7f020043;
public static final int abc_textfield_search_material = 0x7f020044; public static final int abc_textfield_search_material = 0x7f020044;
public static final int notification_template_icon_bg = 0x7f020074; public static final int notification_template_icon_bg = 0x7f020070;
} }
public static final class id { public static final class id {
public static final int action0 = 0x7f0d006b; public static final int action0 = 0x7f0d006a;
public static final int action_bar = 0x7f0d0041; public static final int action_bar = 0x7f0d0041;
public static final int action_bar_activity_content = 0x7f0d0000; public static final int action_bar_activity_content = 0x7f0d0000;
public static final int action_bar_container = 0x7f0d0040; public static final int action_bar_container = 0x7f0d0040;
@ -468,7 +468,7 @@ public final class R {
public static final int action_bar_subtitle = 0x7f0d0022; public static final int action_bar_subtitle = 0x7f0d0022;
public static final int action_bar_title = 0x7f0d0021; public static final int action_bar_title = 0x7f0d0021;
public static final int action_context_bar = 0x7f0d0042; public static final int action_context_bar = 0x7f0d0042;
public static final int action_divider = 0x7f0d006f; public static final int action_divider = 0x7f0d006e;
public static final int action_menu_divider = 0x7f0d0002; public static final int action_menu_divider = 0x7f0d0002;
public static final int action_menu_presenter = 0x7f0d0003; public static final int action_menu_presenter = 0x7f0d0003;
public static final int action_mode_bar = 0x7f0d003e; public static final int action_mode_bar = 0x7f0d003e;
@ -479,9 +479,9 @@ public final class R {
public static final int always = 0x7f0d001b; public static final int always = 0x7f0d001b;
public static final int beginning = 0x7f0d0018; public static final int beginning = 0x7f0d0018;
public static final int buttonPanel = 0x7f0d002b; public static final int buttonPanel = 0x7f0d002b;
public static final int cancel_action = 0x7f0d006c; public static final int cancel_action = 0x7f0d006b;
public static final int checkbox = 0x7f0d0039; public static final int checkbox = 0x7f0d0039;
public static final int chronometer = 0x7f0d0072; public static final int chronometer = 0x7f0d0071;
public static final int collapseActionView = 0x7f0d001c; public static final int collapseActionView = 0x7f0d001c;
public static final int contentPanel = 0x7f0d0031; public static final int contentPanel = 0x7f0d0031;
public static final int custom = 0x7f0d0037; public static final int custom = 0x7f0d0037;
@ -491,7 +491,7 @@ public final class R {
public static final int disableHome = 0x7f0d000c; public static final int disableHome = 0x7f0d000c;
public static final int edit_query = 0x7f0d0043; public static final int edit_query = 0x7f0d0043;
public static final int end = 0x7f0d0019; public static final int end = 0x7f0d0019;
public static final int end_padder = 0x7f0d0077; public static final int end_padder = 0x7f0d0076;
public static final int expand_activities_button = 0x7f0d0025; public static final int expand_activities_button = 0x7f0d0025;
public static final int expanded_menu = 0x7f0d0038; public static final int expanded_menu = 0x7f0d0038;
public static final int home = 0x7f0d0004; public static final int home = 0x7f0d0004;
@ -499,12 +499,12 @@ public final class R {
public static final int icon = 0x7f0d0029; public static final int icon = 0x7f0d0029;
public static final int ifRoom = 0x7f0d001d; public static final int ifRoom = 0x7f0d001d;
public static final int image = 0x7f0d0026; public static final int image = 0x7f0d0026;
public static final int info = 0x7f0d0076; public static final int info = 0x7f0d0075;
public static final int line1 = 0x7f0d0070; public static final int line1 = 0x7f0d006f;
public static final int line3 = 0x7f0d0074; public static final int line3 = 0x7f0d0073;
public static final int listMode = 0x7f0d0009; public static final int listMode = 0x7f0d0009;
public static final int list_item = 0x7f0d0028; public static final int list_item = 0x7f0d0028;
public static final int media_actions = 0x7f0d006e; public static final int media_actions = 0x7f0d006d;
public static final int middle = 0x7f0d001a; public static final int middle = 0x7f0d001a;
public static final int multiply = 0x7f0d0013; public static final int multiply = 0x7f0d0013;
public static final int never = 0x7f0d001e; public static final int never = 0x7f0d001e;
@ -538,13 +538,13 @@ public final class R {
public static final int src_atop = 0x7f0d0015; public static final int src_atop = 0x7f0d0015;
public static final int src_in = 0x7f0d0016; public static final int src_in = 0x7f0d0016;
public static final int src_over = 0x7f0d0017; public static final int src_over = 0x7f0d0017;
public static final int status_bar_latest_event_content = 0x7f0d006d; public static final int status_bar_latest_event_content = 0x7f0d006c;
public static final int submit_area = 0x7f0d004c; public static final int submit_area = 0x7f0d004c;
public static final int tabMode = 0x7f0d000b; public static final int tabMode = 0x7f0d000b;
public static final int text = 0x7f0d0075; public static final int text = 0x7f0d0074;
public static final int text2 = 0x7f0d0073; public static final int text2 = 0x7f0d0072;
public static final int textSpacerNoButtons = 0x7f0d0034; public static final int textSpacerNoButtons = 0x7f0d0034;
public static final int time = 0x7f0d0071; public static final int time = 0x7f0d0070;
public static final int title = 0x7f0d002a; public static final int title = 0x7f0d002a;
public static final int title_template = 0x7f0d002f; public static final int title_template = 0x7f0d002f;
public static final int topPanel = 0x7f0d002e; public static final int topPanel = 0x7f0d002e;

View File

@ -1628,44 +1628,40 @@ containing a value of this type.
public static final int guis_sound_on=0x7f02004f; public static final int guis_sound_on=0x7f02004f;
public static final int lock_locked=0x7f020050; public static final int lock_locked=0x7f020050;
public static final int lock_unlocked=0x7f020051; public static final int lock_unlocked=0x7f020051;
public static final int notification_template_icon_bg=0x7f020074; public static final int notification_template_icon_bg=0x7f020070;
public static final int obstacle=0x7f020052; public static final int obstacles_cave=0x7f020052;
public static final int obstacles_cave=0x7f020053; public static final int obstacles_grass=0x7f020053;
public static final int obstacles_grass=0x7f020054; public static final int obstacles_mountains=0x7f020054;
public static final int obstacles_mountains=0x7f020055; public static final int playershapes_ball=0x7f020055;
public static final int playershapes_ball=0x7f020056; public static final int previews_grass=0x7f020056;
public static final int previews_grass=0x7f020057; public static final int purple=0x7f020057;
public static final int purple=0x7f020058; public static final int ramp=0x7f020058;
public static final int ramp=0x7f020059; public static final int rampbutton=0x7f020059;
public static final int rampbutton=0x7f02005a; public static final int splitter=0x7f02005a;
public static final int splitter=0x7f02005b; public static final int star=0x7f02005b;
public static final int star=0x7f02005c; public static final int star_empty=0x7f02005c;
public static final int star_empty=0x7f02005d; public static final int star_icon=0x7f02005d;
public static final int star_icon=0x7f02005e; public static final int terrain_c_grass=0x7f02005e;
public static final int stars_0=0x7f02005f; public static final int terrain_t_grass=0x7f02005f;
public static final int stars_1=0x7f020060; public static final int tools_bomb=0x7f020060;
public static final int stars_2=0x7f020061; public static final int tools_bombbutton=0x7f020061;
public static final int stars_3=0x7f020062; public static final int tools_emptybutton=0x7f020062;
public static final int terrain_t_grass=0x7f020063; public static final int tools_lockedbutton=0x7f020063;
public static final int tools_bomb=0x7f020064; public static final int tools_magnet=0x7f020064;
public static final int tools_bombbutton=0x7f020065; public static final int tools_magnetbutton=0x7f020065;
public static final int tools_emptybutton=0x7f020066; public static final int tools_spring=0x7f020066;
public static final int tools_lockedbutton=0x7f020067; public static final int tools_springbutton=0x7f020067;
public static final int tools_magnet=0x7f020068; public static final int tools_unlockedbutton=0x7f020068;
public static final int tools_magnetbutton=0x7f020069; public static final int xml_custom_button=0x7f020069;
public static final int tools_spring=0x7f02006a; public static final int xml_levelbutton_background=0x7f02006a;
public static final int tools_springbutton=0x7f02006b; public static final int xml_sound_toggle=0x7f02006b;
public static final int tools_unlockedbutton=0x7f02006c; public static final int xml_tool_slot_background=0x7f02006c;
public static final int xml_custom_button=0x7f02006d; public static final int xml_toolprogressbarlayers=0x7f02006d;
public static final int xml_levelbutton_background=0x7f02006e; public static final int xml_unlock_message_background=0x7f02006e;
public static final int xml_sound_toggle=0x7f02006f; public static final int xml_worldbutton_background=0x7f02006f;
public static final int xml_tool_slot_background=0x7f020070;
public static final int xml_toolprogressbarlayers=0x7f020071;
public static final int xml_unlock_message_background=0x7f020072;
public static final int xml_worldbutton_background=0x7f020073;
} }
public static final class id { public static final class id {
public static final int action0=0x7f0d006b; public static final int action0=0x7f0d006a;
public static final int action_bar=0x7f0d0041; public static final int action_bar=0x7f0d0041;
public static final int action_bar_activity_content=0x7f0d0000; public static final int action_bar_activity_content=0x7f0d0000;
public static final int action_bar_container=0x7f0d0040; public static final int action_bar_container=0x7f0d0040;
@ -1674,7 +1670,7 @@ containing a value of this type.
public static final int action_bar_subtitle=0x7f0d0022; public static final int action_bar_subtitle=0x7f0d0022;
public static final int action_bar_title=0x7f0d0021; public static final int action_bar_title=0x7f0d0021;
public static final int action_context_bar=0x7f0d0042; public static final int action_context_bar=0x7f0d0042;
public static final int action_divider=0x7f0d006f; public static final int action_divider=0x7f0d006e;
public static final int action_menu_divider=0x7f0d0002; public static final int action_menu_divider=0x7f0d0002;
public static final int action_menu_presenter=0x7f0d0003; public static final int action_menu_presenter=0x7f0d0003;
public static final int action_mode_bar=0x7f0d003e; public static final int action_mode_bar=0x7f0d003e;
@ -1686,9 +1682,9 @@ containing a value of this type.
public static final int beginning=0x7f0d0018; public static final int beginning=0x7f0d0018;
public static final int button3=0x7f0d007f; public static final int button3=0x7f0d007f;
public static final int buttonPanel=0x7f0d002b; public static final int buttonPanel=0x7f0d002b;
public static final int cancel_action=0x7f0d006c; public static final int cancel_action=0x7f0d006b;
public static final int checkbox=0x7f0d0039; public static final int checkbox=0x7f0d0039;
public static final int chronometer=0x7f0d0072; public static final int chronometer=0x7f0d0071;
public static final int collapseActionView=0x7f0d001c; public static final int collapseActionView=0x7f0d001c;
public static final int contentPanel=0x7f0d0031; public static final int contentPanel=0x7f0d0031;
public static final int custom=0x7f0d0037; public static final int custom=0x7f0d0037;
@ -1698,12 +1694,11 @@ containing a value of this type.
public static final int disableHome=0x7f0d000c; public static final int disableHome=0x7f0d000c;
public static final int edit_query=0x7f0d0043; public static final int edit_query=0x7f0d0043;
public static final int end=0x7f0d0019; public static final int end=0x7f0d0019;
public static final int end_padder=0x7f0d0077; public static final int end_padder=0x7f0d0076;
public static final int expand_activities_button=0x7f0d0025; public static final int expand_activities_button=0x7f0d0025;
public static final int expanded_menu=0x7f0d0038; public static final int expanded_menu=0x7f0d0038;
public static final int game_countdown=0x7f0d0058; public static final int game_countdown=0x7f0d0057;
public static final int game_fps=0x7f0d0054; public static final int game_fps=0x7f0d0054;
public static final int game_levelup=0x7f0d0057;
public static final int game_message=0x7f0d0056; public static final int game_message=0x7f0d0056;
public static final int game_pausebutton=0x7f0d0050; public static final int game_pausebutton=0x7f0d0050;
public static final int game_playerprogress=0x7f0d0052; public static final int game_playerprogress=0x7f0d0052;
@ -1712,35 +1707,35 @@ containing a value of this type.
public static final int game_toolbuttonbar=0x7f0d0051; public static final int game_toolbuttonbar=0x7f0d0051;
public static final int home=0x7f0d0004; public static final int home=0x7f0d0004;
public static final int homeAsUp=0x7f0d000d; public static final int homeAsUp=0x7f0d000d;
public static final int horizontalScrollView=0x7f0d005f; public static final int horizontalScrollView=0x7f0d005e;
public static final int icon=0x7f0d0029; public static final int icon=0x7f0d0029;
public static final int ifRoom=0x7f0d001d; public static final int ifRoom=0x7f0d001d;
public static final int image=0x7f0d0026; public static final int image=0x7f0d0026;
public static final int imageView=0x7f0d0065; public static final int imageView=0x7f0d0064;
public static final int imageView2=0x7f0d00a4; public static final int imageView2=0x7f0d00a4;
public static final int imageView3=0x7f0d00a2; public static final int imageView3=0x7f0d00a2;
public static final int info=0x7f0d0076; public static final int info=0x7f0d0075;
public static final int levelbutton_lock=0x7f0d005d; public static final int levelbutton_lock=0x7f0d005c;
public static final int levelbutton_star1=0x7f0d005a; public static final int levelbutton_star1=0x7f0d0059;
public static final int levelbutton_star2=0x7f0d005b; public static final int levelbutton_star2=0x7f0d005a;
public static final int levelbutton_star3=0x7f0d005c; public static final int levelbutton_star3=0x7f0d005b;
public static final int levelbutton_textview=0x7f0d0059; public static final int levelbutton_textview=0x7f0d0058;
public static final int levels_bottomRow=0x7f0d0061; public static final int levels_bottomRow=0x7f0d0060;
public static final int levels_topRow=0x7f0d0060; public static final int levels_topRow=0x7f0d005f;
public static final int levels_topbar=0x7f0d005e; public static final int levels_topbar=0x7f0d005d;
public static final int levelup_level=0x7f0d0063; public static final int levelup_level=0x7f0d0062;
public static final int levelup_mainlayout=0x7f0d0062; public static final int levelup_mainlayout=0x7f0d0061;
public static final int levelup_text=0x7f0d0064; public static final int levelup_text=0x7f0d0063;
public static final int levelup_unlocklist=0x7f0d0066; public static final int levelup_unlocklist=0x7f0d0065;
public static final int line1=0x7f0d0070; public static final int line1=0x7f0d006f;
public static final int line3=0x7f0d0074; public static final int line3=0x7f0d0073;
public static final int listMode=0x7f0d0009; public static final int listMode=0x7f0d0009;
public static final int list_item=0x7f0d0028; public static final int list_item=0x7f0d0028;
public static final int media_actions=0x7f0d006e; public static final int media_actions=0x7f0d006d;
public static final int message_exitbutton=0x7f0d0069; public static final int message_exitbutton=0x7f0d0068;
public static final int message_leftbutton=0x7f0d0068; public static final int message_leftbutton=0x7f0d0067;
public static final int message_title=0x7f0d0067; public static final int message_title=0x7f0d0066;
public static final int message_tryagainbutton=0x7f0d006a; public static final int message_tryagainbutton=0x7f0d0069;
public static final int middle=0x7f0d001a; public static final int middle=0x7f0d001a;
public static final int multiply=0x7f0d0013; public static final int multiply=0x7f0d0013;
public static final int never=0x7f0d001e; public static final int never=0x7f0d001e;
@ -1766,10 +1761,10 @@ containing a value of this type.
public static final int search_voice_btn=0x7f0d004e; public static final int search_voice_btn=0x7f0d004e;
public static final int select_dialog_listview=0x7f0d004f; public static final int select_dialog_listview=0x7f0d004f;
public static final int shortcut=0x7f0d003a; public static final int shortcut=0x7f0d003a;
public static final int shortmenu_continue=0x7f0d0079; public static final int shortmenu_continue=0x7f0d0078;
public static final int shortmenu_exit=0x7f0d007b; public static final int shortmenu_exit=0x7f0d007a;
public static final int shortmenu_restart=0x7f0d007a; public static final int shortmenu_restart=0x7f0d0079;
public static final int shortmenu_topbar=0x7f0d0078; public static final int shortmenu_topbar=0x7f0d0077;
public static final int showCustom=0x7f0d000f; public static final int showCustom=0x7f0d000f;
public static final int showHome=0x7f0d0010; public static final int showHome=0x7f0d0010;
public static final int showTitle=0x7f0d0011; public static final int showTitle=0x7f0d0011;
@ -1779,15 +1774,16 @@ containing a value of this type.
public static final int src_in=0x7f0d0016; public static final int src_in=0x7f0d0016;
public static final int src_over=0x7f0d0017; public static final int src_over=0x7f0d0017;
public static final int startscreen_comingsoon=0x7f0d007d; public static final int startscreen_comingsoon=0x7f0d007d;
public static final int startscreen_maxcheat=0x7f0d007e;
public static final int startscreen_play=0x7f0d007c; public static final int startscreen_play=0x7f0d007c;
public static final int startscreen_sound=0x7f0d007e; public static final int startscreen_sound=0x7f0d007b;
public static final int status_bar_latest_event_content=0x7f0d006d; public static final int status_bar_latest_event_content=0x7f0d006c;
public static final int submit_area=0x7f0d004c; public static final int submit_area=0x7f0d004c;
public static final int tabMode=0x7f0d000b; public static final int tabMode=0x7f0d000b;
public static final int text=0x7f0d0075; public static final int text=0x7f0d0074;
public static final int text2=0x7f0d0073; public static final int text2=0x7f0d0072;
public static final int textSpacerNoButtons=0x7f0d0034; public static final int textSpacerNoButtons=0x7f0d0034;
public static final int time=0x7f0d0071; public static final int time=0x7f0d0070;
public static final int title=0x7f0d002a; public static final int title=0x7f0d002a;
public static final int title_template=0x7f0d002f; public static final int title_template=0x7f0d002f;
public static final int toolProgressBar=0x7f0d0085; public static final int toolProgressBar=0x7f0d0085;

View File

@ -1,7 +1,7 @@
<levelPack> <levelPack id="0">
<world>GRASSLANDS</world> <theme>GRASSLANDS</theme>
<levels class="java.util.ArrayList"> <levels class="java.util.ArrayList">
<level number="1" goalX="22.606565" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="1" goalX="22.606565" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="0.5854988" width="7.1709976"/> <tileData x="0.5854988" width="7.1709976"/>
<tileData x="10.153494" width="10.408993"/> <tileData x="10.153494" width="10.408993"/>
@ -15,12 +15,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="22.166656" rightEdge="22.666656" height="0.639" y="-0.28050002"/> <obstacleData floating="false" moving="false" deadly="false" leftEdge="22.166656" rightEdge="22.666656" height="0.639" y="-0.28050002"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="11.159975" y="-0.15999995" width="0.25" height="0.25"/> <positionData x="11.159975" y="-0.15999995"/>
<starData index="2" x="15.106676" y="-0.14000002" width="0.25" height="0.25"/> <positionData x="15.106676" y="-0.14000002"/>
<starData index="3" x="22.043303" y="-0.20666662" width="0.25" height="0.25"/> <positionData x="22.043303" y="-0.20666662"/>
</stars> </stars>
</level> </level>
<level number="2" goalX="22.366613" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="2" goalX="22.366613" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="0.9448314" width="7.8896627"/> <tileData x="0.9448314" width="7.8896627"/>
<tileData x="8.345928" width="4.4445295"/> <tileData x="8.345928" width="4.4445295"/>
@ -42,12 +42,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.123379" rightEdge="20.623379" 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> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="10.94335" y="-0.61999965" width="0.25" height="0.25"/> <positionData x="10.94335" y="-0.61999965"/>
<starData index="2" x="15.7367" y="0.3199999" width="0.25" height="0.25"/> <positionData x="15.7367" y="0.3199999"/>
<starData index="3" x="18.893328" y="-0.12666662" width="0.25" height="0.25"/> <positionData x="18.893328" y="-0.12666662"/>
</stars> </stars>
</level> </level>
<level number="3" goalX="19.200012" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="3" goalX="19.200012" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="-0.4151678" width="5.1696644"/> <tileData x="-0.4151678" width="5.1696644"/>
<tileData x="7.1337633" width="8.020197"/> <tileData x="7.1337633" width="8.020197"/>
@ -63,12 +63,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="18.396694" rightEdge="18.896694" height="0.789" y="-0.20550004"/> <obstacleData floating="false" moving="false" deadly="false" leftEdge="18.396694" rightEdge="18.896694" height="0.789" y="-0.20550004"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="2.6399994" y="0.10666669" width="0.25" height="0.25"/> <positionData x="2.6399994" y="0.10666669"/>
<starData index="2" x="8.793346" y="-0.4733331" width="0.25" height="0.25"/> <positionData x="8.793346" y="-0.4733331"/>
<starData index="3" x="12.253348" y="-0.13333318" width="0.25" height="0.25"/> <positionData x="12.253348" y="-0.13333318"/>
</stars> </stars>
</level> </level>
<level number="4" goalX="23.933224" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="4" goalX="23.933224" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="6.06402" width="18.12804"/> <tileData x="6.06402" width="18.12804"/>
<tileData x="19.269924" width="3.0757751"/> <tileData x="19.269924" width="3.0757751"/>
@ -87,12 +87,12 @@
<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="5.79467" rightEdge="8.37867" height="0.544" y="-0.328"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="11.560022" y="-0.26000002" width="0.25" height="0.25"/> <positionData x="11.560022" y="-0.26000002"/>
<starData index="2" x="16.310017" y="0.80666655" width="0.25" height="0.25"/> <positionData x="16.310017" y="0.80666655"/>
<starData index="3" x="21.9833" y="-0.099999994" width="0.25" height="0.25"/> <positionData x="21.9833" y="-0.099999994"/>
</stars> </stars>
</level> </level>
<level number="5" goalX="16.249996" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="5" goalX="16.249996" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="1.9915047" width="9.983009"/> <tileData x="1.9915047" width="9.983009"/>
<tileData x="12.045149" width="7.65627"/> <tileData x="12.045149" width="7.65627"/>
@ -105,12 +105,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.29672" rightEdge="15.79672" height="1.539" y="0.1695"/> <obstacleData floating="false" moving="false" deadly="false" leftEdge="15.29672" rightEdge="15.79672" height="1.539" y="0.1695"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="2.5799987" y="0.62" width="0.25" height="0.25"/> <positionData x="2.5799987" y="0.62"/>
<starData index="2" x="7.5566673" y="0.26000008" width="0.25" height="0.25"/> <positionData x="7.5566673" y="0.26000008"/>
<starData index="3" x="11.85002" y="-0.4533334" width="0.25" height="0.25"/> <positionData x="11.85002" y="-0.4533334"/>
</stars> </stars>
</level> </level>
<level number="6" goalX="27.539873" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="6" goalX="27.539873" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="0.4867487" width="6.9734974"/> <tileData x="0.4867487" width="6.9734974"/>
<tileData x="7.8615937" width="5.390193"/> <tileData x="7.8615937" width="5.390193"/>
@ -135,12 +135,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="24.34991" rightEdge="24.84991" 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> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="4.586666" y="-0.5866665" width="0.25" height="0.25"/> <positionData x="4.586666" y="-0.5866665"/>
<starData index="2" x="10.696706" y="-0.46666694" width="0.25" height="0.25"/> <positionData x="10.696706" y="-0.46666694"/>
<starData index="3" x="20.64665" y="0.39999995" width="0.25" height="0.25"/> <positionData x="20.64665" y="0.39999995"/>
</stars> </stars>
</level> </level>
<level number="7" goalX="25.866587" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="7" goalX="25.866587" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="2.1916704" width="10.383341"/> <tileData x="2.1916704" width="10.383341"/>
<tileData x="11.639271" width="7.31187"/> <tileData x="11.639271" width="7.31187"/>
@ -166,12 +166,12 @@
<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="24.1271" rightEdge="24.886099" height="0.694" y="-0.25300002"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="6.6800065" y="-0.38666666" width="0.25" height="0.25"/> <positionData x="6.6800065" y="-0.38666666"/>
<starData index="2" x="13.066695" y="0.48666692" width="0.25" height="0.25"/> <positionData x="13.066695" y="0.48666692"/>
<starData index="3" x="20.679989" y="0.85333335" width="0.25" height="0.25"/> <positionData x="20.679989" y="0.85333335"/>
</stars> </stars>
</level> </level>
<level number="8" goalX="17.896662" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="8" goalX="17.896662" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="-2.0766673" width="1.8466654"/> <tileData x="-2.0766673" width="1.8466654"/>
<tileData x="2.5266657" width="0.7200012"/> <tileData x="2.5266657" width="0.7200012"/>
@ -192,10 +192,94 @@
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-1.0233328" rightEdge="1.9766672" height="0.136" y="-0.86666656"/> <obstacleData floating="true" moving="false" deadly="false" leftEdge="-1.0233328" rightEdge="1.9766672" height="0.136" y="-0.86666656"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="2.543333" y="0.3933335" width="0.25" height="0.25"/> <positionData x="2.543333" y="0.3933335"/>
<starData index="2" x="14.12338" y="-0.79999965" width="0.25" height="0.25"/> <positionData x="14.12338" y="-0.79999965"/>
<starData index="3" x="17.523336" y="0.4799996" width="0.25" height="0.25"/> <positionData x="17.523336" y="0.4799996"/>
</stars> </stars>
</level> </level>
<level packId="0" 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"/>
</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 packId="0" id="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 packId="0" 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="0" 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>
<stars class="java.util.ArrayList"/>
</level>
</levels> </levels>
</levelPack> </levelPack>

View File

@ -1,7 +1,7 @@
<levelPack> <levelPack id="1">
<world>TESTCAVE</world> <theme>TESTCAVE</theme>
<levels class="java.util.ArrayList"> <levels class="java.util.ArrayList">
<level number="1" goalX="33.663338" startSpeed="0.6" endSpeed="0.6" terrainEdge="-0.979" ceilingEdge="1.0"> <level packId="1" id="1" goalX="33.663338" startSpeed="0.6" endSpeed="0.6" terrainEdge="-0.979" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="15.331669" width="36.663338"/> <tileData x="15.331669" width="36.663338"/>
</terrainTiles> </terrainTiles>
@ -24,7 +24,7 @@
</obstacles> </obstacles>
<stars class="java.util.ArrayList"/> <stars class="java.util.ArrayList"/>
</level> </level>
<level number="2" goalX="13.38005" startSpeed="0.5" endSpeed="0.6" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="1" id="2" goalX="13.38005" startSpeed="0.5" endSpeed="0.6" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="2.2557545" width="10.511509"/> <tileData x="2.2557545" width="10.511509"/>
<tileData x="8.660347" width="0.8236685"/> <tileData x="8.660347" width="0.8236685"/>
@ -51,12 +51,12 @@
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.386221" rightEdge="13.067221" height="0.34" y="0.07999999"/> <obstacleData floating="true" moving="false" deadly="false" leftEdge="11.386221" rightEdge="13.067221" height="0.34" y="0.07999999"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="3.0633316" y="-0.43333337" width="0.25" height="0.25"/> <positionData x="3.0633316" y="-0.43333337"/>
<starData index="2" x="9.686677" y="-0.76000005" width="0.25" height="0.25"/> <positionData x="9.686677" y="-0.76000005"/>
<starData index="3" x="13.110031" y="0.8466663" width="0.25" height="0.25"/> <positionData x="13.110031" y="0.8466663"/>
</stars> </stars>
</level> </level>
<level number="3" goalX="16.630037" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="0.692"> <level packId="1" id="3" goalX="16.630037" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="0.692">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="6.8150187" width="19.630037"/> <tileData x="6.8150187" width="19.630037"/>
</terrainTiles> </terrainTiles>
@ -80,7 +80,7 @@
</obstacles> </obstacles>
<stars class="java.util.ArrayList"/> <stars class="java.util.ArrayList"/>
</level> </level>
<level number="4" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="1" id="4" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/> <tileData x="0.0" width="6.0"/>
</terrainTiles> </terrainTiles>
@ -97,5 +97,15 @@
</obstacles> </obstacles>
<stars class="java.util.ArrayList"/> <stars class="java.util.ArrayList"/>
</level> </level>
<level packId="1" 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> </levels>
</levelPack> </levelPack>

View File

@ -67,10 +67,6 @@
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\lock_unlocked.png", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\lock_unlocked.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\lock_unlocked.png" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\lock_unlocked.png"
}, },
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\obstacle.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\obstacle.png"
},
{ {
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_springbutton.png", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_springbutton.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_springbutton.png" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_springbutton.png"
@ -91,10 +87,6 @@
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\goal.png", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\goal.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\goal.png" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\goal.png"
}, },
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\stars_2.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\stars_2.png"
},
{ {
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\obstacles_mountains.png", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\obstacles_mountains.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\obstacles_mountains.png" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\obstacles_mountains.png"
@ -103,14 +95,14 @@
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_btn_colored_material.xml", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_btn_colored_material.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\res\\drawable\\abc_btn_colored_material.xml" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\res\\drawable\\abc_btn_colored_material.xml"
}, },
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\lock_locked.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\lock_locked.png"
},
{ {
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\xml_toolprogressbarlayers.xml", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\xml_toolprogressbarlayers.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\xml_toolprogressbarlayers.xml" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\xml_toolprogressbarlayers.xml"
}, },
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\lock_locked.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\lock_locked.png"
},
{ {
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\backgrounds_menu_levelup.png", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\backgrounds_menu_levelup.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\backgrounds_menu_levelup.png" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\backgrounds_menu_levelup.png"
@ -128,12 +120,12 @@
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_lockedbutton.png" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_lockedbutton.png"
}, },
{ {
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_magnet.png", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\terrain_c_grass.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_magnet.png" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\terrain_c_grass.png"
}, },
{ {
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\stars_1.png", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_magnet.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\stars_1.png" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_magnet.png"
}, },
{ {
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\playershapes_ball.png", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\playershapes_ball.png",
@ -203,10 +195,6 @@
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_cab_background_top_material.xml", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_cab_background_top_material.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\res\\drawable\\abc_cab_background_top_material.xml" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\res\\drawable\\abc_cab_background_top_material.xml"
}, },
{
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\stars_3.png",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\stars_3.png"
},
{ {
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_text_cursor_material.xml", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_text_cursor_material.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\res\\drawable\\abc_text_cursor_material.xml" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\res\\drawable\\abc_text_cursor_material.xml"
@ -220,17 +208,13 @@
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\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\\stars_0.png", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_switch_thumb_material.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\stars_0.png" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\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", "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_list_selector_holo_light.xml",
"source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\res\\drawable\\abc_list_selector_holo_light.xml" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\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\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\23.1.1\\res\\drawable\\abc_switch_thumb_material.xml"
},
{ {
"merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_bombbutton.png", "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" "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_bombbutton.png"

View File

@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="23.1.1"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\build\intermediates\exploded-aar\com.android.support\support-v4\23.1.1\assets"/></dataSet><dataSet config="23.1.1"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.1.1\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="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/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="23.1.1"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\build\intermediates\exploded-aar\com.android.support\support-v4\23.1.1\assets"/></dataSet><dataSet config="23.1.1"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.1.1\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/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/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"/><file name="levelpacks/Beginning.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Beginning.xml"/><file name="levelpacks/Icy Mountains.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Icy Mountains.xml"/><file name="levelpacks/Grasslands.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Grasslands.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>

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -73,15 +73,6 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:visibility="invisible"/> android:visibility="invisible"/>
<include
android:id="@+id/game_levelup"
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@layout/levelup_message"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="invisible"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@ -1,41 +1,51 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:orientation="vertical">
<Button
android:id="@+id/startscreen_play"
android:layout_width="110dp"
android:layout_height="110dp"
android:text="Play"
android:background="@drawable/playershapes_ball"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="44dp"
android:textSize="25sp" />
<Button
android:id="@+id/startscreen_comingsoon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Coming Soon"
style="@style/customButton"
android:layout_alignBottom="@+id/startscreen_sound"
android:layout_toLeftOf="@+id/startscreen_play"
android:layout_toStartOf="@+id/startscreen_play" />
<ToggleButton <ToggleButton
android:id="@+id/startscreen_sound" android:id="@+id/startscreen_sound"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/startscreen_play"
android:layout_marginTop="26dp"
android:layout_toEndOf="@+id/startscreen_play"
android:layout_toRightOf="@+id/startscreen_play"
android:background="@drawable/xml_sound_toggle" android:background="@drawable/xml_sound_toggle"
android:textOff="" android:textOff=""
android:textOn="" android:textOn="" />
android:layout_below="@+id/startscreen_play"
android:layout_toRightOf="@+id/startscreen_play"
android:layout_toEndOf="@+id/startscreen_play"
android:layout_marginTop="26dp" />
<Button
android:id="@+id/startscreen_play"
android:layout_width="110dp"
android:layout_height="110dp"
android:layout_marginTop="40dp"
android:background="@drawable/playershapes_ball"
android:text="Play"
android:textSize="25sp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:id="@+id/startscreen_comingsoon"
style="@style/customButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Level Up"
android:layout_alignTop="@+id/startscreen_play"
android:layout_toRightOf="@+id/startscreen_sound"
android:layout_toEndOf="@+id/startscreen_sound" />
<Button
android:id="@+id/startscreen_maxcheat"
style="@style/customButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lv to 100"
android:layout_below="@+id/startscreen_play"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="48dp"
android:layout_marginStart="48dp" />
</RelativeLayout> </RelativeLayout>

View File

@ -476,42 +476,38 @@ int drawable guis_sound_off 0x7f02004e
int drawable guis_sound_on 0x7f02004f int drawable guis_sound_on 0x7f02004f
int drawable lock_locked 0x7f020050 int drawable lock_locked 0x7f020050
int drawable lock_unlocked 0x7f020051 int drawable lock_unlocked 0x7f020051
int drawable notification_template_icon_bg 0x7f020074 int drawable notification_template_icon_bg 0x7f020070
int drawable obstacle 0x7f020052 int drawable obstacles_cave 0x7f020052
int drawable obstacles_cave 0x7f020053 int drawable obstacles_grass 0x7f020053
int drawable obstacles_grass 0x7f020054 int drawable obstacles_mountains 0x7f020054
int drawable obstacles_mountains 0x7f020055 int drawable playershapes_ball 0x7f020055
int drawable playershapes_ball 0x7f020056 int drawable previews_grass 0x7f020056
int drawable previews_grass 0x7f020057 int drawable purple 0x7f020057
int drawable purple 0x7f020058 int drawable ramp 0x7f020058
int drawable ramp 0x7f020059 int drawable rampbutton 0x7f020059
int drawable rampbutton 0x7f02005a int drawable splitter 0x7f02005a
int drawable splitter 0x7f02005b int drawable star 0x7f02005b
int drawable star 0x7f02005c int drawable star_empty 0x7f02005c
int drawable star_empty 0x7f02005d int drawable star_icon 0x7f02005d
int drawable star_icon 0x7f02005e int drawable terrain_c_grass 0x7f02005e
int drawable stars_0 0x7f02005f int drawable terrain_t_grass 0x7f02005f
int drawable stars_1 0x7f020060 int drawable tools_bomb 0x7f020060
int drawable stars_2 0x7f020061 int drawable tools_bombbutton 0x7f020061
int drawable stars_3 0x7f020062 int drawable tools_emptybutton 0x7f020062
int drawable terrain_t_grass 0x7f020063 int drawable tools_lockedbutton 0x7f020063
int drawable tools_bomb 0x7f020064 int drawable tools_magnet 0x7f020064
int drawable tools_bombbutton 0x7f020065 int drawable tools_magnetbutton 0x7f020065
int drawable tools_emptybutton 0x7f020066 int drawable tools_spring 0x7f020066
int drawable tools_lockedbutton 0x7f020067 int drawable tools_springbutton 0x7f020067
int drawable tools_magnet 0x7f020068 int drawable tools_unlockedbutton 0x7f020068
int drawable tools_magnetbutton 0x7f020069 int drawable xml_custom_button 0x7f020069
int drawable tools_spring 0x7f02006a int drawable xml_levelbutton_background 0x7f02006a
int drawable tools_springbutton 0x7f02006b int drawable xml_sound_toggle 0x7f02006b
int drawable tools_unlockedbutton 0x7f02006c int drawable xml_tool_slot_background 0x7f02006c
int drawable xml_custom_button 0x7f02006d int drawable xml_toolprogressbarlayers 0x7f02006d
int drawable xml_levelbutton_background 0x7f02006e int drawable xml_unlock_message_background 0x7f02006e
int drawable xml_sound_toggle 0x7f02006f int drawable xml_worldbutton_background 0x7f02006f
int drawable xml_tool_slot_background 0x7f020070 int id action0 0x7f0d006a
int drawable xml_toolprogressbarlayers 0x7f020071
int drawable xml_unlock_message_background 0x7f020072
int drawable xml_worldbutton_background 0x7f020073
int id action0 0x7f0d006b
int id action_bar 0x7f0d0041 int id action_bar 0x7f0d0041
int id action_bar_activity_content 0x7f0d0000 int id action_bar_activity_content 0x7f0d0000
int id action_bar_container 0x7f0d0040 int id action_bar_container 0x7f0d0040
@ -520,7 +516,7 @@ int id action_bar_spinner 0x7f0d0001
int id action_bar_subtitle 0x7f0d0022 int id action_bar_subtitle 0x7f0d0022
int id action_bar_title 0x7f0d0021 int id action_bar_title 0x7f0d0021
int id action_context_bar 0x7f0d0042 int id action_context_bar 0x7f0d0042
int id action_divider 0x7f0d006f int id action_divider 0x7f0d006e
int id action_menu_divider 0x7f0d0002 int id action_menu_divider 0x7f0d0002
int id action_menu_presenter 0x7f0d0003 int id action_menu_presenter 0x7f0d0003
int id action_mode_bar 0x7f0d003e int id action_mode_bar 0x7f0d003e
@ -532,9 +528,9 @@ int id always 0x7f0d001b
int id beginning 0x7f0d0018 int id beginning 0x7f0d0018
int id button3 0x7f0d007f int id button3 0x7f0d007f
int id buttonPanel 0x7f0d002b int id buttonPanel 0x7f0d002b
int id cancel_action 0x7f0d006c int id cancel_action 0x7f0d006b
int id checkbox 0x7f0d0039 int id checkbox 0x7f0d0039
int id chronometer 0x7f0d0072 int id chronometer 0x7f0d0071
int id collapseActionView 0x7f0d001c int id collapseActionView 0x7f0d001c
int id contentPanel 0x7f0d0031 int id contentPanel 0x7f0d0031
int id custom 0x7f0d0037 int id custom 0x7f0d0037
@ -544,12 +540,11 @@ int id default_activity_button 0x7f0d0027
int id disableHome 0x7f0d000c int id disableHome 0x7f0d000c
int id edit_query 0x7f0d0043 int id edit_query 0x7f0d0043
int id end 0x7f0d0019 int id end 0x7f0d0019
int id end_padder 0x7f0d0077 int id end_padder 0x7f0d0076
int id expand_activities_button 0x7f0d0025 int id expand_activities_button 0x7f0d0025
int id expanded_menu 0x7f0d0038 int id expanded_menu 0x7f0d0038
int id game_countdown 0x7f0d0058 int id game_countdown 0x7f0d0057
int id game_fps 0x7f0d0054 int id game_fps 0x7f0d0054
int id game_levelup 0x7f0d0057
int id game_message 0x7f0d0056 int id game_message 0x7f0d0056
int id game_pausebutton 0x7f0d0050 int id game_pausebutton 0x7f0d0050
int id game_playerprogress 0x7f0d0052 int id game_playerprogress 0x7f0d0052
@ -558,35 +553,35 @@ int id game_shortmenu 0x7f0d0055
int id game_toolbuttonbar 0x7f0d0051 int id game_toolbuttonbar 0x7f0d0051
int id home 0x7f0d0004 int id home 0x7f0d0004
int id homeAsUp 0x7f0d000d int id homeAsUp 0x7f0d000d
int id horizontalScrollView 0x7f0d005f int id horizontalScrollView 0x7f0d005e
int id icon 0x7f0d0029 int id icon 0x7f0d0029
int id ifRoom 0x7f0d001d int id ifRoom 0x7f0d001d
int id image 0x7f0d0026 int id image 0x7f0d0026
int id imageView 0x7f0d0065 int id imageView 0x7f0d0064
int id imageView2 0x7f0d00a4 int id imageView2 0x7f0d00a4
int id imageView3 0x7f0d00a2 int id imageView3 0x7f0d00a2
int id info 0x7f0d0076 int id info 0x7f0d0075
int id levelbutton_lock 0x7f0d005d int id levelbutton_lock 0x7f0d005c
int id levelbutton_star1 0x7f0d005a int id levelbutton_star1 0x7f0d0059
int id levelbutton_star2 0x7f0d005b int id levelbutton_star2 0x7f0d005a
int id levelbutton_star3 0x7f0d005c int id levelbutton_star3 0x7f0d005b
int id levelbutton_textview 0x7f0d0059 int id levelbutton_textview 0x7f0d0058
int id levels_bottomRow 0x7f0d0061 int id levels_bottomRow 0x7f0d0060
int id levels_topRow 0x7f0d0060 int id levels_topRow 0x7f0d005f
int id levels_topbar 0x7f0d005e int id levels_topbar 0x7f0d005d
int id levelup_level 0x7f0d0063 int id levelup_level 0x7f0d0062
int id levelup_mainlayout 0x7f0d0062 int id levelup_mainlayout 0x7f0d0061
int id levelup_text 0x7f0d0064 int id levelup_text 0x7f0d0063
int id levelup_unlocklist 0x7f0d0066 int id levelup_unlocklist 0x7f0d0065
int id line1 0x7f0d0070 int id line1 0x7f0d006f
int id line3 0x7f0d0074 int id line3 0x7f0d0073
int id listMode 0x7f0d0009 int id listMode 0x7f0d0009
int id list_item 0x7f0d0028 int id list_item 0x7f0d0028
int id media_actions 0x7f0d006e int id media_actions 0x7f0d006d
int id message_exitbutton 0x7f0d0069 int id message_exitbutton 0x7f0d0068
int id message_leftbutton 0x7f0d0068 int id message_leftbutton 0x7f0d0067
int id message_title 0x7f0d0067 int id message_title 0x7f0d0066
int id message_tryagainbutton 0x7f0d006a int id message_tryagainbutton 0x7f0d0069
int id middle 0x7f0d001a int id middle 0x7f0d001a
int id multiply 0x7f0d0013 int id multiply 0x7f0d0013
int id never 0x7f0d001e int id never 0x7f0d001e
@ -612,10 +607,10 @@ int id search_src_text 0x7f0d004a
int id search_voice_btn 0x7f0d004e int id search_voice_btn 0x7f0d004e
int id select_dialog_listview 0x7f0d004f int id select_dialog_listview 0x7f0d004f
int id shortcut 0x7f0d003a int id shortcut 0x7f0d003a
int id shortmenu_continue 0x7f0d0079 int id shortmenu_continue 0x7f0d0078
int id shortmenu_exit 0x7f0d007b int id shortmenu_exit 0x7f0d007a
int id shortmenu_restart 0x7f0d007a int id shortmenu_restart 0x7f0d0079
int id shortmenu_topbar 0x7f0d0078 int id shortmenu_topbar 0x7f0d0077
int id showCustom 0x7f0d000f int id showCustom 0x7f0d000f
int id showHome 0x7f0d0010 int id showHome 0x7f0d0010
int id showTitle 0x7f0d0011 int id showTitle 0x7f0d0011
@ -625,15 +620,16 @@ int id src_atop 0x7f0d0015
int id src_in 0x7f0d0016 int id src_in 0x7f0d0016
int id src_over 0x7f0d0017 int id src_over 0x7f0d0017
int id startscreen_comingsoon 0x7f0d007d int id startscreen_comingsoon 0x7f0d007d
int id startscreen_maxcheat 0x7f0d007e
int id startscreen_play 0x7f0d007c int id startscreen_play 0x7f0d007c
int id startscreen_sound 0x7f0d007e int id startscreen_sound 0x7f0d007b
int id status_bar_latest_event_content 0x7f0d006d int id status_bar_latest_event_content 0x7f0d006c
int id submit_area 0x7f0d004c int id submit_area 0x7f0d004c
int id tabMode 0x7f0d000b int id tabMode 0x7f0d000b
int id text 0x7f0d0075 int id text 0x7f0d0074
int id text2 0x7f0d0073 int id text2 0x7f0d0072
int id textSpacerNoButtons 0x7f0d0034 int id textSpacerNoButtons 0x7f0d0034
int id time 0x7f0d0071 int id time 0x7f0d0070
int id title 0x7f0d002a int id title 0x7f0d002a
int id title_template 0x7f0d002f int id title_template 0x7f0d002f
int id toolProgressBar 0x7f0d0085 int id toolProgressBar 0x7f0d0085

View File

@ -0,0 +1,285 @@
<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

@ -0,0 +1,57 @@
<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,7 +1,7 @@
<levelPack> <levelPack id="0">
<world>GRASSLANDS</world> <theme>GRASSLANDS</theme>
<levels class="java.util.ArrayList"> <levels class="java.util.ArrayList">
<level number="1" goalX="22.606565" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="1" goalX="22.606565" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="0.5854988" width="7.1709976"/> <tileData x="0.5854988" width="7.1709976"/>
<tileData x="10.153494" width="10.408993"/> <tileData x="10.153494" width="10.408993"/>
@ -15,12 +15,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="22.166656" rightEdge="22.666656" height="0.639" y="-0.28050002"/> <obstacleData floating="false" moving="false" deadly="false" leftEdge="22.166656" rightEdge="22.666656" height="0.639" y="-0.28050002"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="11.159975" y="-0.15999995" width="0.25" height="0.25"/> <positionData x="11.159975" y="-0.15999995"/>
<starData index="2" x="15.106676" y="-0.14000002" width="0.25" height="0.25"/> <positionData x="15.106676" y="-0.14000002"/>
<starData index="3" x="22.043303" y="-0.20666662" width="0.25" height="0.25"/> <positionData x="22.043303" y="-0.20666662"/>
</stars> </stars>
</level> </level>
<level number="2" goalX="22.366613" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="2" goalX="22.366613" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="0.9448314" width="7.8896627"/> <tileData x="0.9448314" width="7.8896627"/>
<tileData x="8.345928" width="4.4445295"/> <tileData x="8.345928" width="4.4445295"/>
@ -42,12 +42,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="20.123379" rightEdge="20.623379" 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> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="10.94335" y="-0.61999965" width="0.25" height="0.25"/> <positionData x="10.94335" y="-0.61999965"/>
<starData index="2" x="15.7367" y="0.3199999" width="0.25" height="0.25"/> <positionData x="15.7367" y="0.3199999"/>
<starData index="3" x="18.893328" y="-0.12666662" width="0.25" height="0.25"/> <positionData x="18.893328" y="-0.12666662"/>
</stars> </stars>
</level> </level>
<level number="3" goalX="19.200012" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="3" goalX="19.200012" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="-0.4151678" width="5.1696644"/> <tileData x="-0.4151678" width="5.1696644"/>
<tileData x="7.1337633" width="8.020197"/> <tileData x="7.1337633" width="8.020197"/>
@ -63,12 +63,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="18.396694" rightEdge="18.896694" height="0.789" y="-0.20550004"/> <obstacleData floating="false" moving="false" deadly="false" leftEdge="18.396694" rightEdge="18.896694" height="0.789" y="-0.20550004"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="2.6399994" y="0.10666669" width="0.25" height="0.25"/> <positionData x="2.6399994" y="0.10666669"/>
<starData index="2" x="8.793346" y="-0.4733331" width="0.25" height="0.25"/> <positionData x="8.793346" y="-0.4733331"/>
<starData index="3" x="12.253348" y="-0.13333318" width="0.25" height="0.25"/> <positionData x="12.253348" y="-0.13333318"/>
</stars> </stars>
</level> </level>
<level number="4" goalX="23.933224" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="4" goalX="23.933224" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="6.06402" width="18.12804"/> <tileData x="6.06402" width="18.12804"/>
<tileData x="19.269924" width="3.0757751"/> <tileData x="19.269924" width="3.0757751"/>
@ -87,12 +87,12 @@
<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="5.79467" rightEdge="8.37867" height="0.544" y="-0.328"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="11.560022" y="-0.26000002" width="0.25" height="0.25"/> <positionData x="11.560022" y="-0.26000002"/>
<starData index="2" x="16.310017" y="0.80666655" width="0.25" height="0.25"/> <positionData x="16.310017" y="0.80666655"/>
<starData index="3" x="21.9833" y="-0.099999994" width="0.25" height="0.25"/> <positionData x="21.9833" y="-0.099999994"/>
</stars> </stars>
</level> </level>
<level number="5" goalX="16.249996" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="5" goalX="16.249996" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="1.9915047" width="9.983009"/> <tileData x="1.9915047" width="9.983009"/>
<tileData x="12.045149" width="7.65627"/> <tileData x="12.045149" width="7.65627"/>
@ -105,12 +105,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="15.29672" rightEdge="15.79672" height="1.539" y="0.1695"/> <obstacleData floating="false" moving="false" deadly="false" leftEdge="15.29672" rightEdge="15.79672" height="1.539" y="0.1695"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="2.5799987" y="0.62" width="0.25" height="0.25"/> <positionData x="2.5799987" y="0.62"/>
<starData index="2" x="7.5566673" y="0.26000008" width="0.25" height="0.25"/> <positionData x="7.5566673" y="0.26000008"/>
<starData index="3" x="11.85002" y="-0.4533334" width="0.25" height="0.25"/> <positionData x="11.85002" y="-0.4533334"/>
</stars> </stars>
</level> </level>
<level number="6" goalX="27.539873" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="6" goalX="27.539873" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="0.4867487" width="6.9734974"/> <tileData x="0.4867487" width="6.9734974"/>
<tileData x="7.8615937" width="5.390193"/> <tileData x="7.8615937" width="5.390193"/>
@ -135,12 +135,12 @@
<obstacleData floating="false" moving="false" deadly="false" leftEdge="24.34991" rightEdge="24.84991" 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> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="4.586666" y="-0.5866665" width="0.25" height="0.25"/> <positionData x="4.586666" y="-0.5866665"/>
<starData index="2" x="10.696706" y="-0.46666694" width="0.25" height="0.25"/> <positionData x="10.696706" y="-0.46666694"/>
<starData index="3" x="20.64665" y="0.39999995" width="0.25" height="0.25"/> <positionData x="20.64665" y="0.39999995"/>
</stars> </stars>
</level> </level>
<level number="7" goalX="25.866587" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="7" goalX="25.866587" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="2.1916704" width="10.383341"/> <tileData x="2.1916704" width="10.383341"/>
<tileData x="11.639271" width="7.31187"/> <tileData x="11.639271" width="7.31187"/>
@ -166,12 +166,12 @@
<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="24.1271" rightEdge="24.886099" height="0.694" y="-0.25300002"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="6.6800065" y="-0.38666666" width="0.25" height="0.25"/> <positionData x="6.6800065" y="-0.38666666"/>
<starData index="2" x="13.066695" y="0.48666692" width="0.25" height="0.25"/> <positionData x="13.066695" y="0.48666692"/>
<starData index="3" x="20.679989" y="0.85333335" width="0.25" height="0.25"/> <positionData x="20.679989" y="0.85333335"/>
</stars> </stars>
</level> </level>
<level number="8" goalX="17.896662" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="0" id="8" goalX="17.896662" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="-2.0766673" width="1.8466654"/> <tileData x="-2.0766673" width="1.8466654"/>
<tileData x="2.5266657" width="0.7200012"/> <tileData x="2.5266657" width="0.7200012"/>
@ -192,10 +192,94 @@
<obstacleData floating="true" moving="false" deadly="false" leftEdge="-1.0233328" rightEdge="1.9766672" height="0.136" y="-0.86666656"/> <obstacleData floating="true" moving="false" deadly="false" leftEdge="-1.0233328" rightEdge="1.9766672" height="0.136" y="-0.86666656"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="2.543333" y="0.3933335" width="0.25" height="0.25"/> <positionData x="2.543333" y="0.3933335"/>
<starData index="2" x="14.12338" y="-0.79999965" width="0.25" height="0.25"/> <positionData x="14.12338" y="-0.79999965"/>
<starData index="3" x="17.523336" y="0.4799996" width="0.25" height="0.25"/> <positionData x="17.523336" y="0.4799996"/>
</stars> </stars>
</level> </level>
<level packId="0" 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"/>
</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 packId="0" id="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 packId="0" 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="0" 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>
<stars class="java.util.ArrayList"/>
</level>
</levels> </levels>
</levelPack> </levelPack>

View File

@ -1,7 +1,7 @@
<levelPack> <levelPack id="1">
<world>TESTCAVE</world> <theme>TESTCAVE</theme>
<levels class="java.util.ArrayList"> <levels class="java.util.ArrayList">
<level number="1" goalX="33.663338" startSpeed="0.6" endSpeed="0.6" terrainEdge="-0.979" ceilingEdge="1.0"> <level packId="1" id="1" goalX="33.663338" startSpeed="0.6" endSpeed="0.6" terrainEdge="-0.979" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="15.331669" width="36.663338"/> <tileData x="15.331669" width="36.663338"/>
</terrainTiles> </terrainTiles>
@ -24,7 +24,7 @@
</obstacles> </obstacles>
<stars class="java.util.ArrayList"/> <stars class="java.util.ArrayList"/>
</level> </level>
<level number="2" goalX="13.38005" startSpeed="0.5" endSpeed="0.6" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="1" id="2" goalX="13.38005" startSpeed="0.5" endSpeed="0.6" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="2.2557545" width="10.511509"/> <tileData x="2.2557545" width="10.511509"/>
<tileData x="8.660347" width="0.8236685"/> <tileData x="8.660347" width="0.8236685"/>
@ -51,12 +51,12 @@
<obstacleData floating="true" moving="false" deadly="false" leftEdge="11.386221" rightEdge="13.067221" height="0.34" y="0.07999999"/> <obstacleData floating="true" moving="false" deadly="false" leftEdge="11.386221" rightEdge="13.067221" height="0.34" y="0.07999999"/>
</obstacles> </obstacles>
<stars class="java.util.ArrayList"> <stars class="java.util.ArrayList">
<starData index="1" x="3.0633316" y="-0.43333337" width="0.25" height="0.25"/> <positionData x="3.0633316" y="-0.43333337"/>
<starData index="2" x="9.686677" y="-0.76000005" width="0.25" height="0.25"/> <positionData x="9.686677" y="-0.76000005"/>
<starData index="3" x="13.110031" y="0.8466663" width="0.25" height="0.25"/> <positionData x="13.110031" y="0.8466663"/>
</stars> </stars>
</level> </level>
<level number="3" goalX="16.630037" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="0.692"> <level packId="1" id="3" goalX="16.630037" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="0.692">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="6.8150187" width="19.630037"/> <tileData x="6.8150187" width="19.630037"/>
</terrainTiles> </terrainTiles>
@ -80,7 +80,7 @@
</obstacles> </obstacles>
<stars class="java.util.ArrayList"/> <stars class="java.util.ArrayList"/>
</level> </level>
<level number="4" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0"> <level packId="1" id="4" goalX="3.0" startSpeed="0.0" endSpeed="0.0" terrainEdge="-0.6" ceilingEdge="1.0">
<terrainTiles class="java.util.ArrayList"> <terrainTiles class="java.util.ArrayList">
<tileData x="0.0" width="6.0"/> <tileData x="0.0" width="6.0"/>
</terrainTiles> </terrainTiles>
@ -97,5 +97,15 @@
</obstacles> </obstacles>
<stars class="java.util.ArrayList"/> <stars class="java.util.ArrayList"/>
</level> </level>
<level packId="1" 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> </levels>
</levelPack> </levelPack>

View File

@ -0,0 +1,14 @@
package com.example.julian.endlessroll.entities;
import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.entities.textures.Texture;
import com.example.julian.endlessroll.levels.PositionData;
public class Energy extends Entity {
private final static float SIZE = 0.3f;
public Energy(Texture texture, PositionData data) {
super(texture, new Vector(data.getX(), data.getY()), SIZE, SIZE);
}
}

View File

@ -9,6 +9,7 @@ import com.example.julian.endlessroll.entities.textures.Texture;
*/ */
public class Entity extends Quad { public class Entity extends Quad {
private int textureAtlasIndex;
private Texture texture; private Texture texture;
private Vector movement; private Vector movement;
private float rotation; private float rotation;
@ -82,4 +83,12 @@ public class Entity extends Quad {
public DestroyEffect getDestroyEffect() { public DestroyEffect getDestroyEffect() {
return destroyEffect; return destroyEffect;
} }
public void setTextureAtlasIndex(int textureAtlasIndex) {
this.textureAtlasIndex = textureAtlasIndex;
}
public int getTextureAtlasIndex() {
return textureAtlasIndex;
}
} }

View File

@ -3,7 +3,7 @@ package com.example.julian.endlessroll.entities;
import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.levels.MoveComponent; import com.example.julian.endlessroll.levels.MoveComponent;
import com.example.julian.endlessroll.levels.ObstacleData; import com.example.julian.endlessroll.levels.ObstacleData;
import com.example.julian.endlessroll.levels.worlds.World; import com.example.julian.endlessroll.levels.worlds.Theme;
import java.util.Random; import java.util.Random;
@ -23,8 +23,8 @@ public class Obstacle extends Entity {
private float moveProgress; private float moveProgress;
public Obstacle(World world, ObstacleData data, float terrainEdge) { public Obstacle(Theme theme, ObstacleData data, float terrainEdge) {
super(world.getObstacleTexture(), new Vector(data.getX(), data.getY()), data.getWidth(), data.getHeight()); super(theme.getObstacleTexture(), new Vector(data.getX(), data.getY()), data.getWidth(), data.getHeight());
this.deadly = data.isDeadly(); this.deadly = data.isDeadly();
this.floating = data.isFloating(); this.floating = data.isFloating();
this.moving = data.isMoving(); this.moving = data.isMoving();
@ -73,14 +73,14 @@ public class Obstacle extends Entity {
} }
private void setTextureAtlasIndex() { private void setTextureAtlasIndex() {
if (deadly)
super.setTextureAtlasIndex(2);
if (floating)
super.setTextureAtlasIndex(0);
if (deadly && floating) if (deadly && floating)
super.getTexture().setAtlasIndex(1); super.setTextureAtlasIndex(1);
else if (deadly) if (!deadly && !floating)
super.getTexture().setAtlasIndex(2); super.setTextureAtlasIndex(3);
else if (floating)
super.getTexture().setAtlasIndex(0);
else
super.getTexture().setAtlasIndex(3);
} }
public boolean isMoving() { public boolean isMoving() {

View File

@ -1,7 +1,5 @@
package com.example.julian.endlessroll.entities; package com.example.julian.endlessroll.entities;
import android.util.Log;
import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.entities.textures.Texture; import com.example.julian.endlessroll.entities.textures.Texture;
import com.example.julian.endlessroll.main.GameLog; import com.example.julian.endlessroll.main.GameLog;

View File

@ -2,15 +2,16 @@ package com.example.julian.endlessroll.entities;
import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.entities.textures.Texture; import com.example.julian.endlessroll.entities.textures.Texture;
import com.example.julian.endlessroll.levels.StarData; import com.example.julian.endlessroll.levels.PositionData;
public class Star extends Entity { public class Star extends Entity {
private final static float SIZE = 0.25f;
private int index; private int index;
public Star(Texture texture, StarData starData) { public Star(int index, Texture texture, PositionData data) {
super(texture, new Vector(starData.getX(), starData.getY()), starData.getWidth(), starData.getHeight()); super(texture, new Vector(data.getX(), data.getY()), SIZE, SIZE);
this.index = starData.getIndex(); this.index = index;
} }
public int getIndex() { public int getIndex() {

View File

@ -1,6 +1,5 @@
package com.example.julian.endlessroll.entities; package com.example.julian.endlessroll.entities;
import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.main.GameLog; import com.example.julian.endlessroll.main.GameLog;
/** /**

View File

@ -1,5 +1,6 @@
package com.example.julian.endlessroll.entities.collision; package com.example.julian.endlessroll.entities.collision;
import com.example.julian.endlessroll.entities.Energy;
import com.example.julian.endlessroll.entities.Obstacle; import com.example.julian.endlessroll.entities.Obstacle;
import com.example.julian.endlessroll.entities.Player; import com.example.julian.endlessroll.entities.Player;
import com.example.julian.endlessroll.entities.Star; import com.example.julian.endlessroll.entities.Star;
@ -38,6 +39,8 @@ public class CollisionManager {
checkToolCollision(data.getToolCollisionData()); checkToolCollision(data.getToolCollisionData());
if (data.isStarCollision()) if (data.isStarCollision())
game.onStarCollision((Star) data.getStarCollisionData().getEntity()); game.onStarCollision((Star) data.getStarCollisionData().getEntity());
if (data.isEnergyCollision())
game.onEnergyCollision((Energy) data.getEnergyCollisionData().getEntity());
} }
private void checkTerrainCollision(EntityCollisionData data) { private void checkTerrainCollision(EntityCollisionData data) {

View File

@ -10,13 +10,15 @@ public class PlayerCollisionData {
private ObstacleCollisionData obstacleCollision; private ObstacleCollisionData obstacleCollision;
private ToolCollisionData toolCollision; private ToolCollisionData toolCollision;
private EntityCollisionData starCollision; private EntityCollisionData starCollision;
private EntityCollisionData energyCollision;
public PlayerCollisionData(EntityCollisionData terrainCollision, EntityCollisionData ceilingCollision, ObstacleCollisionData obstacleCollision, ToolCollisionData toolCollision, EntityCollisionData starCollision) { public PlayerCollisionData(EntityCollisionData terrainCollision, EntityCollisionData ceilingCollision, ObstacleCollisionData obstacleCollision, ToolCollisionData toolCollision, EntityCollisionData starCollision, EntityCollisionData energyCollision) {
this.terrainCollision = terrainCollision; this.terrainCollision = terrainCollision;
this.ceilingCollision = ceilingCollision; this.ceilingCollision = ceilingCollision;
this.obstacleCollision = obstacleCollision; this.obstacleCollision = obstacleCollision;
this.toolCollision = toolCollision; this.toolCollision = toolCollision;
this.starCollision = starCollision; this.starCollision = starCollision;
this.energyCollision = energyCollision;
} }
public boolean isTerrainCollision() { public boolean isTerrainCollision() {
@ -58,4 +60,12 @@ public class PlayerCollisionData {
public EntityCollisionData getStarCollisionData() { public EntityCollisionData getStarCollisionData() {
return starCollision; return starCollision;
} }
public boolean isEnergyCollision() {
return energyCollision.isCollision();
}
public EntityCollisionData getEnergyCollisionData() {
return energyCollision;
}
} }

View File

@ -1,7 +1,6 @@
package com.example.julian.endlessroll.entities.particles.attributes.attributeValues; package com.example.julian.endlessroll.entities.particles.attributes.attributeValues;
import com.example.julian.endlessroll.data.Color; import com.example.julian.endlessroll.data.Color;
import com.example.julian.endlessroll.main.GameLog;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -8,7 +8,6 @@ public class Texture {
private int id; private int id;
private int atlasWidth; private int atlasWidth;
private int atlasHeight; private int atlasHeight;
private int atlasIndex;
public Texture(int id, int atlasWidth, int atlasHeight) { public Texture(int id, int atlasWidth, int atlasHeight) {
this.id = id; this.id = id;
@ -34,11 +33,4 @@ public class Texture {
return atlasHeight; return atlasHeight;
} }
public int getAtlasIndex() {
return atlasIndex;
}
public void setAtlasIndex(int atlasIndex) {
this.atlasIndex = atlasIndex;
}
} }

View File

@ -5,10 +5,7 @@ import android.support.annotation.DrawableRes;
import com.example.julian.endlessroll.R; import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.entities.tools.ToolType; import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.levels.worlds.World; import com.example.julian.endlessroll.levels.worlds.Theme;
import java.util.HashMap;
import java.util.Map;
/** /**
* Created by Julian on 05.12.2015. * Created by Julian on 05.12.2015.
@ -31,7 +28,7 @@ public class TexturePack {
star = loadTexture(R.drawable.star); star = loadTexture(R.drawable.star);
ToolType.loadAllToolTextures(this); ToolType.loadAllToolTextures(this);
World.loadAllSpecificTextures(this); Theme.loadAllSpecificTextures(this);
} }
public Texture loadTexture(@DrawableRes int id) { public Texture loadTexture(@DrawableRes int id) {

View File

@ -1,7 +1,6 @@
package com.example.julian.endlessroll.entities.tileLists; package com.example.julian.endlessroll.entities.tileLists;
import com.example.julian.endlessroll.entities.textures.Texture; import com.example.julian.endlessroll.entities.textures.Texture;
import com.example.julian.endlessroll.entities.textures.TexturePack;
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class Ceiling extends TileList { public class Ceiling extends TileList {

View File

@ -1,7 +1,6 @@
package com.example.julian.endlessroll.entities.tileLists; package com.example.julian.endlessroll.entities.tileLists;
import com.example.julian.endlessroll.entities.textures.Texture; import com.example.julian.endlessroll.entities.textures.Texture;
import com.example.julian.endlessroll.entities.textures.TexturePack;
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class Terrain extends TileList { public class Terrain extends TileList {

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

View File

@ -13,7 +13,7 @@ public class Ramp extends Tool {
public Ramp(Vector position) { public Ramp(Vector position) {
super(ToolType.RAMP, position, .4f, .4f, true, true); super(ToolType.RAMP, position, .4f, .35f, true, true);
animation.setLooping(true); animation.setLooping(true);
} }

View File

@ -29,7 +29,7 @@ public class Spring extends Tool {
public void onPlayerCollision(Player player) { public void onPlayerCollision(Player player) {
if (!hasYetCollided) { if (!hasYetCollided) {
hasYetCollided = true; hasYetCollided = true;
player.getMovement().y = .0024f; player.getMovement().y = .0022f;
} }
} }

View File

@ -28,7 +28,7 @@ public abstract class Tool extends Entity {
public void update(Timer timer) { public void update(Timer timer) {
animation.update(timer); animation.update(timer);
super.getTexture().setAtlasIndex(animation.getCurrentTexIndex()); super.setTextureAtlasIndex(animation.getCurrentTexIndex());
} }
public abstract void onPlayerCollision(Player player); public abstract void onPlayerCollision(Player player);

View File

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

View File

@ -3,27 +3,17 @@ package com.example.julian.endlessroll.entities.tools;
import com.example.julian.endlessroll.levels.levelup.LevelUpBounties; import com.example.julian.endlessroll.levels.levelup.LevelUpBounties;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
/** /**
* Created by Julian on 15.07.2016. * Created by Julian on 15.07.2016.
*/ */
public class ToolSlotSettings extends ArrayList<ToolSlot> { public class ToolSlotSettings extends ArrayList<ToolSlot> {
public ToolSlotSettings() { public ToolSlotSettings(String slot1, String slot2, String slot3, String slot4, int slotsLocked) throws Exception {
this(new ToolSlot(ToolType.RAMP, false), new ToolSlot(ToolType.NONE, true), new ToolSlot(ToolType.NONE, true), new ToolSlot(ToolType.NONE, true)); super.add(new ToolSlot(ToolType.valueOf(slot1), false));
} super.add(new ToolSlot(ToolType.valueOf(slot2), slotsLocked < 3));
super.add(new ToolSlot(ToolType.valueOf(slot3), slotsLocked < 2));
public ToolSlotSettings(ToolSlot slot1, ToolSlot slot2, ToolSlot slot3, ToolSlot slot4) { super.add(new ToolSlot(ToolType.valueOf(slot4), slotsLocked < 1));
super(4);
super.add(slot1);
super.add(slot2);
super.add(slot3);
super.add(slot4);
}
public ToolSlotSettings(List<ToolSlot> list) {
super(list);
} }
public void reset() { public void reset() {
@ -42,9 +32,17 @@ public class ToolSlotSettings extends ArrayList<ToolSlot> {
} }
} }
public void unlockSlotsIfLevelReached(int level, LevelUpBounties levelUpBounties) { public void unlockSlotsIfLevelReached(LevelUpBounties levelUpBounties) {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++)
super.get(i).setLocked(!levelUpBounties.isToolSlotUnlockedAtLevel(i, level)); super.get(i).setLocked(levelUpBounties.isToolSlotLocked(i));
} }
public int getLockedSlotCount() {
for (int i = super.size() - 1; i > 0; i--) {
if (!super.get(i).isLocked())
return i + 1;
} }
return 0;
}
} }

View File

@ -1,6 +1,7 @@
package com.example.julian.endlessroll.levels; package com.example.julian.endlessroll.levels;
import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList; import org.simpleframework.xml.ElementList;
import java.util.List; import java.util.List;
@ -11,7 +12,9 @@ import java.util.List;
public class Level { public class Level {
@Attribute @Attribute
private int number; private int packId;
@Attribute
private int id;
@Attribute @Attribute
private float goalX; private float goalX;
@Attribute @Attribute
@ -29,16 +32,21 @@ public class Level {
@ElementList @ElementList
private List<ObstacleData> obstacles; private List<ObstacleData> obstacles;
@ElementList @ElementList
private List<StarData> stars; private List<PositionData> stars;
@Element(required = false)
private PositionData energy;
private boolean completed; private boolean finished;
private boolean unlocked; private boolean locked;
private boolean firstStarCollected; private boolean[] collectedStars = {false, false, false};
private boolean secondStarCollected; private boolean energyCollected;
private boolean thirdStarCollected;
public int getNumber() { public int getPackId() {
return number; return packId;
}
public int getId() {
return id;
} }
public float getGoalX() { public float getGoalX() {
@ -73,67 +81,67 @@ public class Level {
return obstacles; return obstacles;
} }
public List<StarData> getStars() { public List<PositionData> getStars() {
return stars; return stars;
} }
public boolean isUnlocked() { public PositionData getEnergyData() {
return unlocked; return energy;
} }
public void setUnlocked(boolean unlocked) { public boolean isLocked() {
this.unlocked = unlocked; return locked;
} }
public boolean isCompleted() { public void setLocked(boolean locked) {
return completed; this.locked = locked;
} }
public void setCompleted(boolean completed) { public boolean isFinished() {
this.completed = completed; return finished;
} }
public boolean isFirstStarCollected() { public void setFinished(boolean finished) {
return firstStarCollected; this.finished = finished;
} }
public boolean isSecondStarCollected() { public boolean isStarCollected(int index) {
return secondStarCollected; return collectedStars[index];
}
public boolean isThirdStarCollected() {
return thirdStarCollected;
} }
public void setStarCollected(int index, boolean collected) { public void setStarCollected(int index, boolean collected) {
if(index == 1) collectedStars[index] = collected;
firstStarCollected = collected;
else if(index == 2)
secondStarCollected = collected;
else if(index == 3)
thirdStarCollected = collected;
} }
public String getCollectedStars(){ public String getCollectedStarCodeForSQL() {
String code = ""; String code = "";
code+= firstStarCollected?"1":""; for (int i = 0; i < 3; i++)
code+= secondStarCollected?"2":""; code += collectedStars[i] ? (i + 1) + "" : "";
code+= thirdStarCollected?"3":"";
return code; return code;
} }
public void setCollectedStars(String code){ public void setCollectedStarsFromSQL(String code) {
firstStarCollected = code.contains("1"); for (int i = 0; i < 3; i++)
secondStarCollected = code.contains("2"); collectedStars[i] = code.contains((i + 1) + "");
thirdStarCollected = code.contains("3"); }
public boolean[] getCollectedStars() {
return collectedStars;
}
public boolean isEnergyCollected() {
return energyCollected;
}
public void setEnergyCollected(boolean collected) {
this.energyCollected = collected;
} }
public void reset() { public void reset() {
completed = false; finished = false;
unlocked = false; locked = false;
firstStarCollected = false; collectedStars = new boolean[]{false, false, false};
secondStarCollected = false; energyCollected = false;
thirdStarCollected = false;
} }
} }

View File

@ -20,26 +20,22 @@ public class LevelManager extends ArrayList<LevelPack> {
for (String asset : assets) { for (String asset : assets) {
try { try {
LevelPack pack = loadLevelPack(context, "levelpacks/" + asset); LevelPack pack = loadLevelPack(context, "levelpacks/" + asset);
pack.setName(asset.split(".xml")[0]);
dataStorageHandler.readLevelProgress(pack); dataStorageHandler.readLevelProgress(pack);
dataStorageHandler.readLevelPackLocked(pack); dataStorageHandler.readLevelPackLocked(pack);
pack.tryToUnlockFirstLevel(); pack.tryToUnlockFirstLevel();
if (pack.getWorld().getIndex() == 0) if (pack.getId() == 0)
pack.setLocked(false); pack.setLocked(false);
super.add(pack); super.add(pack);
} catch (Exception e) { } catch (Exception e) {
GameLog.e(e); GameLog.e(e);
} }
sort();
} }
sortPacks();
} }
private void sort() { private void sortPacks(){
Collections.sort(this, new Comparator<LevelPack>() { Collections.sort(this, packComparator);
@Override
public int compare(LevelPack lhs, LevelPack rhs) {
return lhs.getWorld().getIndex() - rhs.getWorld().getIndex();
}
});
} }
private LevelPack loadLevelPack(Context context, String name) throws Exception { private LevelPack loadLevelPack(Context context, String name) throws Exception {
@ -52,14 +48,31 @@ public class LevelManager extends ArrayList<LevelPack> {
} }
} }
public LevelPack getNextLevelPack(LevelPack currentPack) {
int searchedId = currentPack.getId() + 1;
for (LevelPack pack : this) {
if (pack.getId() == searchedId)
return pack;
}
return null;
}
public void reset() { public void reset() {
for (LevelPack pack : this) { for (LevelPack pack : this) {
pack.reset(); pack.reset();
if (pack.getWorld().getIndex() != 0) if (pack.getId() == 0)
pack.setLocked(true); pack.setLocked(false);
} }
} }
private Comparator<LevelPack> packComparator = new Comparator<LevelPack>() {
@Override
public int compare(LevelPack lhs, LevelPack rhs) {
return lhs.getId() - rhs.getId();
}
};
//CHEAT
public void unlockAllPacks() { public void unlockAllPacks() {
for (LevelPack levelPack : this) for (LevelPack levelPack : this)
levelPack.setLocked(false); levelPack.setLocked(false);
@ -68,17 +81,8 @@ public class LevelManager extends ArrayList<LevelPack> {
public void unlockAllLevels() { public void unlockAllLevels() {
for (LevelPack levelPack : this) { for (LevelPack levelPack : this) {
for (Level level : levelPack.getLevels()) for (Level level : levelPack.getLevels())
level.setUnlocked(true); level.setLocked(false);
} }
} }
public LevelPack nextLevelPack(LevelPack old) {
int oldId = old.getWorld().getIndex();
for (LevelPack pack : this) {
if (pack.getWorld().getIndex() == oldId + 1)
return pack;
}
return null;
}
} }

View File

@ -1,6 +1,6 @@
package com.example.julian.endlessroll.levels; package com.example.julian.endlessroll.levels;
import com.example.julian.endlessroll.levels.worlds.World; import com.example.julian.endlessroll.levels.worlds.Theme;
import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element; import org.simpleframework.xml.Element;
@ -15,28 +15,48 @@ import java.util.List;
@Root @Root
public class LevelPack { public class LevelPack {
@Attribute
private int id;
@Element @Element
private World world; private Theme theme;
@ElementList @ElementList
private List<Level> levels; private List<Level> levels;
private String name;
private boolean locked; private boolean locked;
public int getId() {
return id;
}
public List<Level> getLevels() { public List<Level> getLevels() {
return levels; return levels;
} }
public int getUnlockedLevels(){ public Theme getTheme() {
return theme;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getFinishedLevelCount() {
int count = 0; int count = 0;
for (Level level : levels) for (Level level : levels)
if(level.isUnlocked()) if (level.isFinished())
count++; count++;
return count; return count;
} }
public int getCollectedStars(){ public int getCollectedStarCount() {
int count = 0; int count = 0;
for (Level level : levels) for (Level level : levels)
count += level.getCollectedStars().length(); count += level.getCollectedStarCodeForSQL().length();
return count; return count;
} }
@ -44,41 +64,31 @@ public class LevelPack {
return levels.size() * 3; return levels.size() * 3;
} }
public World getWorld() {
return world;
}
public void tryToUnlockFirstLevel() { public void tryToUnlockFirstLevel() {
try { Level firstLevel = getLevel(0);
levels.get(0).setUnlocked(true); if (firstLevel != null)
} catch (Exception e) { firstLevel.setLocked(false);
}
} }
public Level getLevel(int number) { public Level getLevel(int id) {
for (Level level : levels) for (Level level : levels)
if (level.getNumber() == number) if (level.getId() == id)
return level; return level;
return null; return null;
} }
public Level getNextLevel(Level currentLevel) { public Level getNextLevel(Level currentLevel) {
if (isLastLevel(currentLevel)) { return getLevel(currentLevel.getId() + 1);
return null;
}
int index = levels.indexOf(currentLevel);
return levels.get(index + 1);
} }
public boolean isLastLevel(Level level) { public boolean isLastLevel(Level level) {
int index = levels.indexOf(level); return getNextLevel(level) == null;
return levels.size() == index + 1;
} }
public void reset() { public void reset() {
for(Level level : levels){ for (Level level : levels)
level.reset(); level.reset();
} setLocked(true);
tryToUnlockFirstLevel(); tryToUnlockFirstLevel();
} }

View File

@ -0,0 +1,23 @@
package com.example.julian.endlessroll.levels;
import org.simpleframework.xml.Attribute;
/**
* Created by Julian on 27.01.2017.
*/
public class PositionData {
@Attribute
private float x;
@Attribute
private float y;
public float getX() {
return x;
}
public float getY() {
return y;
}
}

View File

@ -1,37 +0,0 @@
package com.example.julian.endlessroll.levels;
import org.simpleframework.xml.Attribute;
public class StarData {
@Attribute
private int index;
@Attribute
private float x;
@Attribute
private float y;
@Attribute
private float width;
@Attribute
private float height;
public int getIndex() {
return index;
}
public float getX() {
return x;
}
public float getY() {
return y;
}
public float getWidth() {
return width;
}
public float getHeight() {
return height;
}
}

View File

@ -1,71 +1,50 @@
package com.example.julian.endlessroll.levels.levelup; package com.example.julian.endlessroll.levels.levelup;
import android.content.Context;
import com.example.julian.endlessroll.entities.tools.ToolType; import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.views.BountyMessage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Created by Julian on 17.07.2016. * Created by Julian on 17.07.2016.
*/ */
public class LevelUpBounties extends HashMap<Integer, List<LevelUpBounties.Bounty>> { public class LevelUpBounties extends HashMap<Integer, LevelBounty> {
public interface Bounty { private List<ToolType> unlockedTools = new ArrayList<>();
BountyMessage createMessage(Context context); private int unlockedToolSlots;
public LevelUpBounties(int level) {
super.put(1, new LevelBounty(0, 0, ToolType.RAMP, true));
super.put(2, new LevelBounty(5, 0, ToolType.SPRING, false));
super.put(3, new LevelBounty(6, 0, ToolType.MAGNET, true));
super.put(4, new LevelBounty(7, 0, ToolType.BOMB, true));
super.put(5, new LevelBounty(8, 0, ToolType.NONE, false));
loadAllForLevel(level);
} }
private Map<ToolBounty, Integer> allToolBounties = new HashMap<>(); public void loadAllForLevel(int level) {
private List<Integer> allToolSlotLevels = new ArrayList<>(); unlockedTools.clear();
unlockedToolSlots = 0;
public LevelUpBounties() { for (int i = level; i > 0; i--)
addBounties(1, new ToolBounty(ToolType.RAMP), new ToolSlotBounty()); loadBounty(super.get(i));
addBounties(2, new StarBounty(5), new ToolBounty(ToolType.SPRING));
addBounties(3, new StarBounty(6), new ToolBounty(ToolType.MAGNET), new ToolSlotBounty());
addBounties(4, new StarBounty(7), new ToolBounty(ToolType.BOMB), new ToolSlotBounty());
addBounties(5, new StarBounty(8), new ToolSlotBounty());
} }
private void addBounties(int unlockLevel, Bounty... bounties) { private void loadBounty(LevelBounty bounty) {
List<Bounty> list = new ArrayList<>(); if (bounty != null) {
for (Bounty bounty : bounties) { if (bounty.getToolType() != ToolType.NONE)
list.add(bounty); unlockedTools.add(bounty.getToolType());
if (bounty instanceof ToolBounty) if (bounty.isToolSlot())
allToolBounties.put((ToolBounty) bounty, unlockLevel); unlockedToolSlots++;
else if (bounty instanceof ToolSlotBounty)
allToolSlotLevels.add(unlockLevel);
} }
super.put(unlockLevel, list);
} }
public boolean isToolAlreadyUnlockedAtLevel(int level, ToolType toolType) { public boolean isToolLocked(ToolType tool) {
for (ToolBounty bounty : allToolBounties.keySet()) return !unlockedTools.contains(tool);
if (bounty.getToolType() == toolType && allToolBounties.get(bounty) <= level)
return true;
return false;
} }
public boolean isToolSlotUnlockedAtLevel(int toolSlotIndex, int level) { public boolean isToolSlotLocked(int index) {
return allToolSlotLevels.get(toolSlotIndex) <= level; return index >= unlockedToolSlots;
} }
public int getBountyStarsAtLevel(int level) {
for (Bounty bounty : this.get(level)) {
if (bounty instanceof StarBounty)
return ((StarBounty) bounty).getStarCount();
}
return 0;
}
@Override
public List<Bounty> get(Object key) {
List<Bounty> list = super.get(key);
if (list == null)
return new ArrayList<>();
return list;
}
} }

View File

@ -1,26 +0,0 @@
package com.example.julian.endlessroll.levels.levelup;
import android.content.Context;
import com.example.julian.endlessroll.views.BountyMessage;
/**
* Created by Julian on 17.07.2016.
*/
public class StarBounty implements LevelUpBounties.Bounty {
private int starCount;
public StarBounty(int starCount) {
this.starCount = starCount;
}
public int getStarCount() {
return starCount;
}
@Override
public BountyMessage createMessage(Context context) {
return new BountyMessage(context, starCount);
}
}

View File

@ -1,27 +0,0 @@
package com.example.julian.endlessroll.levels.levelup;
import android.content.Context;
import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.views.BountyMessage;
/**
* Created by Julian on 17.07.2016.
*/
public class ToolBounty implements LevelUpBounties.Bounty {
private ToolType toolType;
public ToolBounty(ToolType toolType) {
this.toolType = toolType;
}
public ToolType getToolType() {
return toolType;
}
@Override
public BountyMessage createMessage(Context context) {
return new BountyMessage(context, toolType);
}
}

View File

@ -1,16 +0,0 @@
package com.example.julian.endlessroll.levels.levelup;
import android.content.Context;
import com.example.julian.endlessroll.views.BountyMessage;
/**
* Created by Julian on 17.07.2016.
*/
public class ToolSlotBounty implements LevelUpBounties.Bounty {
@Override
public BountyMessage createMessage(Context context) {
return new BountyMessage(context);
}
}

View File

@ -10,13 +10,12 @@ import com.example.julian.endlessroll.entities.textures.TexturePack;
* Created by Julian on 14.11.2016. * Created by Julian on 14.11.2016.
*/ */
public enum World { public enum Theme {
GRASSLANDS(0, "Grasslands", R.drawable.previews_grass, R.drawable.backgrounds_game_grass, R.drawable.terrain_t_grass, R.drawable.obstacles_grass), 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(1, "Testcave", R.drawable.previews_grass, R.drawable.backgrounds_game_cave, R.drawable.terrain_t_grass, R.drawable.obstacles_cave), 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),
ICY_MOUNTAINS(2, "Icy Mountains", R.drawable.previews_grass, R.drawable.backgrounds_game_mountains, R.drawable.terrain_t_grass, R.drawable.obstacles_mountains); ICY_MOUNTAINS("Icy Mountains", R.drawable.previews_grass, R.drawable.backgrounds_game_mountains, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_mountains);
private int index;
private String name; private String name;
@DrawableRes @DrawableRes
private int previewId; private int previewId;
@ -25,36 +24,36 @@ public enum World {
@DrawableRes @DrawableRes
private int terrainId; private int terrainId;
@DrawableRes @DrawableRes
private int ceilingId;
@DrawableRes
private int obstacleId; private int obstacleId;
private Texture background; private Texture background;
private Texture terrain; private Texture terrain;
private Texture ceiling;
private Texture obstacle; private Texture obstacle;
World(int index, String name, @DrawableRes int previewId, @DrawableRes int backgroundId, @DrawableRes int terrainId, @DrawableRes int obstacleId) { Theme(String name, @DrawableRes int previewId, @DrawableRes int backgroundId, @DrawableRes int terrainId, @DrawableRes int ceilingId, @DrawableRes int obstacleId) {
this.index = index;
this.name = name; this.name = name;
this.previewId = previewId; this.previewId = previewId;
this.backgroundId = backgroundId; this.backgroundId = backgroundId;
this.terrainId = terrainId; this.terrainId = terrainId;
this.ceilingId = ceilingId;
this.obstacleId = obstacleId; this.obstacleId = obstacleId;
} }
public static void loadAllSpecificTextures(TexturePack texturePack) { public static void loadAllSpecificTextures(TexturePack texturePack) {
for(World world : values()) for (Theme theme : values())
world.loadSpecificTextures(texturePack); theme.loadSpecificTextures(texturePack);
} }
private void loadSpecificTextures(TexturePack texturePack) { private void loadSpecificTextures(TexturePack texturePack) {
background = texturePack.loadTexture(backgroundId); background = texturePack.loadTexture(backgroundId);
terrain = texturePack.loadTexture(terrainId); terrain = texturePack.loadTexture(terrainId);
ceiling = texturePack.loadTexture(ceilingId);
obstacle = texturePack.loadAtlas(obstacleId, 2, 2); obstacle = texturePack.loadAtlas(obstacleId, 2, 2);
} }
public int getIndex() {
return index;
}
public String getName() { public String getName() {
return name; return name;
} }
@ -71,6 +70,10 @@ public enum World {
return terrain; return terrain;
} }
public Texture getCeilingTexture() {
return ceiling;
}
public Texture getObstacleTexture() { public Texture getObstacleTexture() {
return obstacle; return obstacle;
} }

View File

@ -4,8 +4,8 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import com.example.julian.endlessroll.entities.tools.ToolSlot;
import com.example.julian.endlessroll.entities.tools.ToolSlotSettings; import com.example.julian.endlessroll.entities.tools.ToolSlotSettings;
import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.levels.Level; import com.example.julian.endlessroll.levels.Level;
import com.example.julian.endlessroll.levels.LevelPack; import com.example.julian.endlessroll.levels.LevelPack;
import com.example.julian.endlessroll.main.game.User; import com.example.julian.endlessroll.main.game.User;
@ -18,9 +18,15 @@ public class DataStorageHandler {
private final String PREFERENCES_NAME = "GamePreferences"; private final String PREFERENCES_NAME = "GamePreferences";
private final String SOUND_ON = "Sound"; private final String SOUND_ON = "Sound";
private final String USER_STARS = "Stars"; private final String USER_EP = "EP";
private final String USER_LEVEL = "Level"; private final String USER_LEVEL = "Level";
private final String USER_LEVEL_PROGRESS = "LevelProgress"; private final String USER_STARS = "Stars";
private final String USER_ENERGY = "Energy";
private final String USER_TOOL_1 = "Tool1";
private final String USER_TOOL_2 = "Tool2";
private final String USER_TOOL_3 = "Tool3";
private final String USER_TOOL_4 = "Tool4";
private final String USER_TOOLS_LOCKED = "ToolsLocked";
private SharedPreferences preferences; private SharedPreferences preferences;
private MyDatabase database; private MyDatabase database;
@ -40,32 +46,37 @@ public class DataStorageHandler {
editor.apply(); editor.apply();
} }
public User readUserData() { public User readUserData(User.LvUpListener lvUpListener) throws Exception {
int stars = preferences.getInt(USER_STARS, 0); int ep = preferences.getInt(USER_EP, 0);
int level = preferences.getInt(USER_LEVEL, 1); int level = preferences.getInt(USER_LEVEL, 1);
int levelProgress = preferences.getInt(USER_LEVEL_PROGRESS, 0); int stars = preferences.getInt(USER_STARS, 0);
//TODO: Default Tooltypes to NONE int energy = preferences.getInt(USER_ENERGY, 0);
database.open(); int toolsLocked = preferences.getInt(USER_TOOLS_LOCKED, 3);
ToolSlotSettings toolSlotSettings = database.readToolSlotSettings(); String tool1 = preferences.getString(USER_TOOL_1, ToolType.RAMP.name());
database.close(); String tool2 = preferences.getString(USER_TOOL_2, ToolType.NONE.name());
return new User(stars, level, levelProgress, toolSlotSettings); String tool3 = preferences.getString(USER_TOOL_3, ToolType.NONE.name());
String tool4 = preferences.getString(USER_TOOL_4, ToolType.NONE.name());
ToolSlotSettings toolSlotSettings = new ToolSlotSettings(tool1, tool2, tool3, tool4, toolsLocked);
return new User(lvUpListener, ep, level, stars, energy, toolSlotSettings);
} }
public void writeUserData(User user) { public void writeUserData(User user) {
SharedPreferences.Editor editor = preferences.edit(); SharedPreferences.Editor editor = preferences.edit();
editor.putInt(USER_STARS, user.getStarCount()); editor.putInt(USER_EP, user.getEp());
editor.putInt(USER_LEVEL, user.getLevel()); editor.putInt(USER_LEVEL, user.getLevel());
editor.putInt(USER_LEVEL_PROGRESS, user.getLevelProgress()); editor.putInt(USER_STARS, user.getStarCount());
editor.putInt(USER_ENERGY, user.getEnergyCount());
editor.putString(USER_TOOL_1, user.getToolSlotSettings().get(0).getToolType().name());
editor.putString(USER_TOOL_2, user.getToolSlotSettings().get(1).getToolType().name());
editor.putString(USER_TOOL_3, user.getToolSlotSettings().get(2).getToolType().name());
editor.putString(USER_TOOL_4, user.getToolSlotSettings().get(3).getToolType().name());
editor.putInt(USER_TOOLS_LOCKED, user.getToolSlotSettings().getLockedSlotCount());
editor.apply(); editor.apply();
database.open();
for (ToolSlot toolSlot : user.getToolSlotSettings())
database.writeToolSlot(user.getToolSlotSettings().indexOf(toolSlot), toolSlot);
database.close();
} }
public void writeLevelProgress(int levelpackNumber, Level level) { public void writeLevelProgress(Level level) {
database.open(); database.open();
database.writeLevelProgress(levelpackNumber, level); database.writeLevelProgress(level);
database.close(); database.close();
} }
@ -83,9 +94,8 @@ public class DataStorageHandler {
public void readLevelProgress(LevelPack levelPack) { public void readLevelProgress(LevelPack levelPack) {
database.open(); database.open();
for (Level level : levelPack.getLevels()) { for (Level level : levelPack.getLevels())
database.readLevelProgress(levelPack.getWorld().getIndex(), level); database.readLevelProgress(level);
}
database.close(); database.close();
} }

View File

@ -25,12 +25,13 @@ import com.example.julian.endlessroll.main.screens.ToolShopScreen;
import com.example.julian.endlessroll.main.screens.WorldsScreen; import com.example.julian.endlessroll.main.screens.WorldsScreen;
import com.example.julian.endlessroll.rendering.renderer.GameRenderer; import com.example.julian.endlessroll.rendering.renderer.GameRenderer;
import com.example.julian.endlessroll.sounds.SoundManager; import com.example.julian.endlessroll.sounds.SoundManager;
import com.example.julian.endlessroll.views.LevelupMessage;
import com.example.julian.endlessroll.views.TopBarData; import com.example.julian.endlessroll.views.TopBarData;
/** /**
* Created by Julian on 06.02.2016. * Created by Julian on 06.02.2016.
*/ */
public class GameActivity extends Activity implements ExceptionHandler { public class GameActivity extends Activity implements ExceptionHandler, User.LvUpListener {
private DataStorageHandler dataStorageHandler; private DataStorageHandler dataStorageHandler;
private LevelManager levelManager; private LevelManager levelManager;
@ -45,6 +46,8 @@ public class GameActivity extends Activity implements ExceptionHandler {
private ToolShopScreen toolShopScreen; private ToolShopScreen toolShopScreen;
private GameScreen gameScreen; private GameScreen gameScreen;
private LevelupMessage levelupMessage;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
try { try {
@ -58,7 +61,7 @@ public class GameActivity extends Activity implements ExceptionHandler {
dataStorageHandler = new DataStorageHandler(this); dataStorageHandler = new DataStorageHandler(this);
dataStorageHandler.readBoughtTools(); dataStorageHandler.readBoughtTools();
user = dataStorageHandler.readUserData(); user = dataStorageHandler.readUserData(this);
soundManager = new SoundManager(this); soundManager = new SoundManager(this);
soundManager.setSoundOn(dataStorageHandler.readIsSoundOn()); soundManager.setSoundOn(dataStorageHandler.readIsSoundOn());
soundManager.backgroundMusic.getPlayer().setLooping(true); soundManager.backgroundMusic.getPlayer().setLooping(true);
@ -74,10 +77,14 @@ public class GameActivity extends Activity implements ExceptionHandler {
toolShopScreen = new ToolShopScreen(topBarData); toolShopScreen = new ToolShopScreen(topBarData);
gameScreen = new GameScreen(topBarData, glSurfaceView); gameScreen = new GameScreen(topBarData, glSurfaceView);
levelupMessage = new LevelupMessage(this, typeface, user);
flipper = new ScreenFlipper(this, startScreen, worldsScreen, levelsScreen, gameScreen, toolShopScreen); flipper = new ScreenFlipper(this, startScreen, worldsScreen, levelsScreen, gameScreen, toolShopScreen);
RelativeLayout relativeLayout = new RelativeLayout(this); RelativeLayout relativeLayout = new RelativeLayout(this);
relativeLayout.addView(glSurfaceView); relativeLayout.addView(glSurfaceView);
relativeLayout.addView(flipper); relativeLayout.addView(flipper);
relativeLayout.addView(levelupMessage.getLayout());
//TODO: add Tutorial
setContentView(relativeLayout); setContentView(relativeLayout);
} catch (Exception e) { } catch (Exception e) {
onException(e); onException(e);
@ -98,6 +105,10 @@ public class GameActivity extends Activity implements ExceptionHandler {
toolShopScreen.setCaller(caller); toolShopScreen.setCaller(caller);
} }
public Screen.ScreenType getCurrentScreenType() {
return flipper.getCurrentScreen().getType();
}
public void selectWorld(LevelPack levelPack) { public void selectWorld(LevelPack levelPack) {
levelsScreen.createList(levelPack); levelsScreen.createList(levelPack);
} }
@ -112,6 +123,16 @@ public class GameActivity extends Activity implements ExceptionHandler {
}); });
} }
@Override
public void onLvUp(final int level) {
runOnUiThread(new Runnable() {
@Override
public void run() {
levelupMessage.show(level);
}
});
}
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
try { try {
@ -168,5 +189,4 @@ public class GameActivity extends Activity implements ExceptionHandler {
ConfigurationInfo info = am.getDeviceConfigurationInfo(); ConfigurationInfo info = am.getDeviceConfigurationInfo();
return info.reqGlEsVersion >= 0x20000; return info.reqGlEsVersion >= 0x20000;
} }
} }

View File

@ -2,6 +2,8 @@ package com.example.julian.endlessroll.main;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import com.example.julian.endlessroll.main.screens.Screen;
/** /**
* Created by Julian on 08.12.2015. * Created by Julian on 08.12.2015.
*/ */
@ -9,7 +11,7 @@ public interface GameHandler extends ExceptionHandler {
void startInUiThread(Runnable runnable); void startInUiThread(Runnable runnable);
void toLevelsScreen(); void toScreen(Screen.ScreenType screen);
RelativeLayout getRootLayout(); RelativeLayout getRootLayout();

View File

@ -3,8 +3,8 @@ package com.example.julian.endlessroll.main;
import android.content.Context; import android.content.Context;
import android.opengl.GLSurfaceView; import android.opengl.GLSurfaceView;
import com.example.julian.endlessroll.rendering.renderer.GameRenderer;
import com.example.julian.endlessroll.rendering.Rendering; import com.example.julian.endlessroll.rendering.Rendering;
import com.example.julian.endlessroll.rendering.renderer.GameRenderer;
/** /**
* Created by Julian on 30.07.2016. * Created by Julian on 30.07.2016.

View File

@ -5,6 +5,7 @@ import android.view.View;
import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.entities.DestroyEffect; import com.example.julian.endlessroll.entities.DestroyEffect;
import com.example.julian.endlessroll.entities.Energy;
import com.example.julian.endlessroll.entities.Player; import com.example.julian.endlessroll.entities.Player;
import com.example.julian.endlessroll.entities.Star; import com.example.julian.endlessroll.entities.Star;
import com.example.julian.endlessroll.entities.collision.CollisionManager; import com.example.julian.endlessroll.entities.collision.CollisionManager;
@ -18,6 +19,7 @@ import com.example.julian.endlessroll.levels.levelup.LevelUpBounties;
import com.example.julian.endlessroll.main.DataStorageHandler; import com.example.julian.endlessroll.main.DataStorageHandler;
import com.example.julian.endlessroll.main.GameHandler; import com.example.julian.endlessroll.main.GameHandler;
import com.example.julian.endlessroll.main.GameLog; import com.example.julian.endlessroll.main.GameLog;
import com.example.julian.endlessroll.main.screens.Screen;
import com.example.julian.endlessroll.rendering.Rendering; import com.example.julian.endlessroll.rendering.Rendering;
import com.example.julian.endlessroll.sounds.SoundManager; import com.example.julian.endlessroll.sounds.SoundManager;
import com.example.julian.endlessroll.views.MessageType; import com.example.julian.endlessroll.views.MessageType;
@ -53,6 +55,7 @@ public class Game extends Rendering<GameScene> {
private Level level; private Level level;
private List<Integer> collectedStars = new ArrayList<>(); private List<Integer> collectedStars = new ArrayList<>();
private boolean energyCollected;
public Game(GameHandler handler, TopBarData topBarData) throws Exception { public Game(GameHandler handler, TopBarData topBarData) throws Exception {
super(topBarData.getGameActivity()); super(topBarData.getGameActivity());
@ -60,7 +63,7 @@ public class Game extends Rendering<GameScene> {
this.user = topBarData.getUser(); this.user = topBarData.getUser();
this.levelManager = topBarData.getLevelManager(); this.levelManager = topBarData.getLevelManager();
this.sounds = topBarData.getSoundManager(); this.sounds = topBarData.getSoundManager();
levelUpBounties = new LevelUpBounties(); levelUpBounties = new LevelUpBounties(0);
physics = new Physics(); physics = new Physics();
collisionManager = new CollisionManager(this); collisionManager = new CollisionManager(this);
particleSystem = new ParticleSystem(getContext()); particleSystem = new ParticleSystem(getContext());
@ -95,7 +98,7 @@ public class Game extends Rendering<GameScene> {
if (scene != null) { if (scene != null) {
collectedStars.clear(); collectedStars.clear();
particleSystem.deleteAllSources(); particleSystem.deleteAllSources();
scene.loadLevel(level, levelPack.getWorld()); scene.loadLevel(level, levelPack.getTheme());
player = scene.getPlayer(); player = scene.getPlayer();
if (viewManager.isScreenSizeSet()) if (viewManager.isScreenSizeSet())
viewManager.resetViews(); viewManager.resetViews();
@ -141,7 +144,7 @@ public class Game extends Rendering<GameScene> {
onGoalReached(); onGoalReached();
return; return;
} }
physics.applyGravity(scene); physics.applyGravity(scene, timer);
scene.update(timer); scene.update(timer);
collisionManager.update(physics, scene); collisionManager.update(physics, scene);
break; break;
@ -183,7 +186,7 @@ public class Game extends Rendering<GameScene> {
} }
public void toLevelsScreen() { public void toLevelsScreen() {
handler.toLevelsScreen(); handler.toScreen(Screen.ScreenType.LEVELS);
} }
public void setCurrentTool(ToolType toolType) { public void setCurrentTool(ToolType toolType) {
@ -219,9 +222,9 @@ public class Game extends Rendering<GameScene> {
private void onGoalReached() { private void onGoalReached() {
gameState = GameState.LEVEL_FINISHED; gameState = GameState.LEVEL_FINISHED;
if (!level.isCompleted()) if (!level.isFinished())
user.gainLvUpExp(); user.gainLvFinishedEp();
level.setCompleted(true); level.setFinished(true);
for (int i = 1; i <= 3; i++) { for (int i = 1; i <= 3; i++) {
if (collectedStars.contains(i)) { if (collectedStars.contains(i)) {
@ -230,22 +233,18 @@ public class Game extends Rendering<GameScene> {
} }
} }
if (user.isShowLevelUp()) { level.setEnergyCollected(true);
user.levelUpShown(); user.increaseEnergyCount();
viewManager.showLevelUp(user.getLevel());
user.getToolSlotSettings().unlockSlotsIfLevelReached(user.getLevel(), levelUpBounties);
user.increaseStarCount(levelUpBounties.getBountyStarsAtLevel(user.getLevel()));
viewManager.resetViews();
}
viewManager.showMessage(levelPack.isLastLevel(level), MessageType.WIN); viewManager.showMessage(levelPack.isLastLevel(level), MessageType.WIN);
dataStorageHandler.writeLevelProgress(levelPack.getWorld().getIndex(), level); dataStorageHandler.writeLevelProgress(level);
Level nextLevel = levelPack.getNextLevel(level); Level nextLevel = levelPack.getNextLevel(level);
if (nextLevel != null) { if (nextLevel != null) {
nextLevel.setUnlocked(true); nextLevel.setLocked(false);
dataStorageHandler.writeLevelProgress(levelPack.getWorld().getIndex(), nextLevel); dataStorageHandler.writeLevelProgress(nextLevel);
} else { } else {
LevelPack nextLevelPack = levelManager.nextLevelPack(levelPack); LevelPack nextLevelPack = levelManager.getNextLevelPack(levelPack);
if (nextLevelPack != null) { if (nextLevelPack != null) {
nextLevelPack.setLocked(false); nextLevelPack.setLocked(false);
dataStorageHandler.writeLevelPackLocked(nextLevelPack); dataStorageHandler.writeLevelPackLocked(nextLevelPack);
@ -259,6 +258,11 @@ public class Game extends Rendering<GameScene> {
collectedStars.add(star.getIndex()); collectedStars.add(star.getIndex());
} }
public void onEnergyCollision(Energy energy){
scene.onEnergyCollision(energy);
energyCollected = true;
}
@Override @Override
public void onException(Exception e) { public void onException(Exception e) {
handler.onException(e); handler.onException(e);

View File

@ -2,6 +2,7 @@ package com.example.julian.endlessroll.main.game;
import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.entities.DestroyEffect; import com.example.julian.endlessroll.entities.DestroyEffect;
import com.example.julian.endlessroll.entities.Energy;
import com.example.julian.endlessroll.entities.Entity; import com.example.julian.endlessroll.entities.Entity;
import com.example.julian.endlessroll.entities.Goal; import com.example.julian.endlessroll.entities.Goal;
import com.example.julian.endlessroll.entities.Obstacle; import com.example.julian.endlessroll.entities.Obstacle;
@ -14,8 +15,8 @@ import com.example.julian.endlessroll.entities.tools.Tool;
import com.example.julian.endlessroll.entities.tools.ToolType; import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.levels.Level; import com.example.julian.endlessroll.levels.Level;
import com.example.julian.endlessroll.levels.ObstacleData; import com.example.julian.endlessroll.levels.ObstacleData;
import com.example.julian.endlessroll.levels.StarData; import com.example.julian.endlessroll.levels.PositionData;
import com.example.julian.endlessroll.levels.worlds.World; import com.example.julian.endlessroll.levels.worlds.Theme;
import com.example.julian.endlessroll.main.GameLog; import com.example.julian.endlessroll.main.GameLog;
import java.util.ArrayList; import java.util.ArrayList;
@ -28,7 +29,7 @@ import java.util.List;
*/ */
public class GameScene extends Scene { public class GameScene extends Scene {
private World currentWorld; private Theme currentTheme;
private CollisionDetector collisionDetector; private CollisionDetector collisionDetector;
private Goal goal; private Goal goal;
@ -36,6 +37,7 @@ public class GameScene extends Scene {
private List<Obstacle> obstacles = Collections.synchronizedList(new ArrayList<Obstacle>()); private List<Obstacle> obstacles = Collections.synchronizedList(new ArrayList<Obstacle>());
private List<Star> stars = Collections.synchronizedList(new ArrayList<Star>()); private List<Star> stars = Collections.synchronizedList(new ArrayList<Star>());
private List<Tool> tools = Collections.synchronizedList(new ArrayList<Tool>()); private List<Tool> tools = Collections.synchronizedList(new ArrayList<Tool>());
private Energy energy;
public GameScene(TexturePack texturePack, ParticleSystem particleSystem) throws Exception { public GameScene(TexturePack texturePack, ParticleSystem particleSystem) throws Exception {
super(texturePack, particleSystem); super(texturePack, particleSystem);
@ -44,35 +46,41 @@ public class GameScene extends Scene {
goal = new Goal(textures.goal); goal = new Goal(textures.goal);
} }
public void loadLevel(Level level, World world) throws Exception { public void loadLevel(Level level, Theme theme) throws Exception {
this.currentWorld = world; this.currentTheme = theme;
reset(); reset();
background.changeTexture(world.getBackgroundTexture()); background.changeTexture(theme.getBackgroundTexture());
terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles()); terrain.loadData(theme, level.getTerrainEdge(), level.getTerrainTiles());
ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles()); ceiling.loadData(theme, level.getCeilingEdge(), level.getCeilingTiles());
super.add(goal); super.add(goal);
player.init(terrain.getEdge(), level.getStartSpeed(), level.getEndSpeed()); player.init(terrain.getEdge(), level.getStartSpeed(), level.getEndSpeed());
super.add(player); super.add(player);
tryToAddEnergy(level);
for (ObstacleData data : level.getObstacles()) for (ObstacleData data : level.getObstacles())
addObstacle(data); addObstacle(data);
for (StarData data : level.getStars()) { for (int i = 0; i < level.getStars().size(); i++) {
if (data.getIndex() == 1 && level.isFirstStarCollected()) if (level.isStarCollected(i))
continue; continue;
if (data.getIndex() == 2 && level.isSecondStarCollected()) addStar(i, level.getStars().get(i));
continue;
if (data.getIndex() == 3 && level.isThirdStarCollected())
continue;
addStar(data);
} }
goalX = level.getGoalX(); goalX = level.getGoalX();
goal.setGoalX(goalX); goal.setGoalX(goalX);
GameLog.d("Level " + level.getNumber() + " successfully loaded"); GameLog.d("Level " + level.getId() + " successfully loaded");
}
private void tryToAddEnergy(Level level){
PositionData data = level.getEnergyData();
if(data != null && !level.isEnergyCollected()) {
energy = new Energy(textures.player, data);
super.add(energy);
}
} }
private void reset() { private void reset() {
super.clear(); super.clear();
obstacles.clear(); obstacles.clear();
tools.clear(); tools.clear();
energy = null;
cameraX = 0; cameraX = 0;
background.resetPosition(); background.resetPosition();
} }
@ -90,14 +98,18 @@ public class GameScene extends Scene {
} }
} }
public void onEnergyCollision(Energy energy){
energy.destroy(DestroyEffect.STAR_EXPLOSION);
}
public void addObstacle(ObstacleData data) { public void addObstacle(ObstacleData data) {
Obstacle obstacle = new Obstacle(currentWorld, data, terrain.getEdge()); Obstacle obstacle = new Obstacle(currentTheme, data, terrain.getEdge());
super.add(obstacle); super.add(obstacle);
obstacles.add(obstacle); obstacles.add(obstacle);
} }
public void addStar(StarData data) { public void addStar(int index, PositionData data) {
Star star = new Star(textures.star, data); Star star = new Star(index, textures.star, data);
super.add(star); super.add(star);
stars.add(star); stars.add(star);
} }
@ -152,6 +164,14 @@ public class GameScene extends Scene {
return stars; return stars;
} }
public Energy getEnergy() {
return energy;
}
public boolean hasEnergy(){
return energy != null;
}
public float getGoalX() { public float getGoalX() {
return goalX; return goalX;
} }

View File

@ -5,15 +5,15 @@ import android.support.annotation.Nullable;
import com.example.julian.endlessroll.entities.Entity; import com.example.julian.endlessroll.entities.Entity;
import com.example.julian.endlessroll.entities.Obstacle; import com.example.julian.endlessroll.entities.Obstacle;
import com.example.julian.endlessroll.entities.Star; import com.example.julian.endlessroll.entities.Star;
import com.example.julian.endlessroll.entities.tileLists.Ceiling;
import com.example.julian.endlessroll.entities.tileLists.Terrain;
import com.example.julian.endlessroll.entities.tileLists.Tile;
import com.example.julian.endlessroll.entities.collision.CollisionDetector; import com.example.julian.endlessroll.entities.collision.CollisionDetector;
import com.example.julian.endlessroll.entities.collision.collisionData.EntityCollisionData; import com.example.julian.endlessroll.entities.collision.collisionData.EntityCollisionData;
import com.example.julian.endlessroll.entities.collision.collisionData.ObstacleCollisionData; import com.example.julian.endlessroll.entities.collision.collisionData.ObstacleCollisionData;
import com.example.julian.endlessroll.entities.collision.collisionData.PlayerCollisionData; import com.example.julian.endlessroll.entities.collision.collisionData.PlayerCollisionData;
import com.example.julian.endlessroll.entities.collision.collisionData.ToolCollisionData; import com.example.julian.endlessroll.entities.collision.collisionData.ToolCollisionData;
import com.example.julian.endlessroll.entities.collision.geometry.Circle; import com.example.julian.endlessroll.entities.collision.geometry.Circle;
import com.example.julian.endlessroll.entities.tileLists.Ceiling;
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.Bomb;
import com.example.julian.endlessroll.entities.tools.Tool; import com.example.julian.endlessroll.entities.tools.Tool;
import com.example.julian.endlessroll.main.GameLog; import com.example.julian.endlessroll.main.GameLog;
@ -28,15 +28,18 @@ import java.util.Map;
*/ */
public class Physics { public class Physics {
public final float GRAVITY_FORCE = .00004f; public final float GRAVITY_FORCE = .0000025f;
private CollisionDetector detector; private CollisionDetector detector;
public Physics() { public Physics() {
detector = new CollisionDetector(); detector = new CollisionDetector();
} }
public void applyGravity(GameScene scene) { public void applyGravity(GameScene scene, Timer timer) {
scene.getPlayer().getMovement().y -= GRAVITY_FORCE; float gravity = GRAVITY_FORCE * timer.getFrameTime();
GameLog.i("FrameTime: " + timer.getFrameTime());
scene.getPlayer().getMovement().y -= gravity;
synchronized (scene.getTools()) { synchronized (scene.getTools()) {
for (Tool tool : scene.getTools()) { for (Tool tool : scene.getTools()) {
if (tool.isFloating()) if (tool.isFloating())
@ -66,13 +69,14 @@ public class Physics {
} }
if (tool.getBottomEdge() > orientingHeight) { if (tool.getBottomEdge() > orientingHeight) {
tool.getMovement().y -= GRAVITY_FORCE * 2; tool.getMovement().y -= gravity * 2;
} else { } else {
tool.getMovement().y = 0; tool.getMovement().y = 0;
tool.setToTerrain(orientingHeight); tool.setToTerrain(orientingHeight);
} }
} }
}} }
}
@Nullable @Nullable
private Obstacle getObstacleToolIsOver(Entity tool, List<Obstacle> obstacles) { private Obstacle getObstacleToolIsOver(Entity tool, List<Obstacle> obstacles) {
@ -83,7 +87,8 @@ public class Physics {
boolean obstacleVertexInToolEdge = (obstacle.getLeftEdge() >= tool.getLeftEdge() && obstacle.getLeftEdge() <= tool.getRightEdge()) || (obstacle.getRightEdge() <= tool.getRightEdge() && obstacle.getRightEdge() >= tool.getLeftEdge()); boolean obstacleVertexInToolEdge = (obstacle.getLeftEdge() >= tool.getLeftEdge() && obstacle.getLeftEdge() <= tool.getRightEdge()) || (obstacle.getRightEdge() <= tool.getRightEdge() && obstacle.getRightEdge() >= tool.getLeftEdge());
if (toolVertexInObstacleEdge || obstacleVertexInToolEdge) if (toolVertexInObstacleEdge || obstacleVertexInToolEdge)
isOver.put(obstacle.getTopEdge(), obstacle); isOver.put(obstacle.getTopEdge(), obstacle);
}} }
}
float max = -100; float max = -100;
for (float height : isOver.keySet()) { for (float height : isOver.keySet()) {
if (isOver.get(height).getBottomEdge() < tool.getTopEdge()) { if (isOver.get(height).getBottomEdge() < tool.getTopEdge()) {
@ -112,7 +117,8 @@ public class Physics {
ObstacleCollisionData obstacleData = playerCollidesWithObstacle(scene); ObstacleCollisionData obstacleData = playerCollidesWithObstacle(scene);
ToolCollisionData toolData = playerCollidesWithTool(scene); ToolCollisionData toolData = playerCollidesWithTool(scene);
EntityCollisionData starData = playerCollidesWithStar(scene); EntityCollisionData starData = playerCollidesWithStar(scene);
return new PlayerCollisionData(terrainData, ceilingData, obstacleData, toolData, starData); EntityCollisionData energyData = playerCollidesWithEnergy(scene);
return new PlayerCollisionData(terrainData, ceilingData, obstacleData, toolData, starData, energyData);
} }
private EntityCollisionData playerCollidesWithTerrain(GameScene scene) { private EntityCollisionData playerCollidesWithTerrain(GameScene scene) {
@ -142,7 +148,8 @@ public class Physics {
EntityCollisionData data = detector.playerEntityCollision(scene.getPlayer(), obstacle); EntityCollisionData data = detector.playerEntityCollision(scene.getPlayer(), obstacle);
if (data.isCollision()) if (data.isCollision())
collisions.add(data); collisions.add(data);
}} }
}
return new ObstacleCollisionData(collisions); return new ObstacleCollisionData(collisions);
} }
@ -153,7 +160,8 @@ public class Physics {
for (Tool tool : scene.getTools()) { for (Tool tool : scene.getTools()) {
if (detector.circleToolCollision(circle, tool.getCollisionBounds())) if (detector.circleToolCollision(circle, tool.getCollisionBounds()))
tools.add(tool); tools.add(tool);
}} }
}
return new ToolCollisionData(tools); return new ToolCollisionData(tools);
} }
@ -163,7 +171,16 @@ public class Physics {
EntityCollisionData data = detector.playerEntityCollision(scene.getPlayer(), star); EntityCollisionData data = detector.playerEntityCollision(scene.getPlayer(), star);
if (data.isCollision()) if (data.isCollision())
return data; return data;
}} }
}
return new EntityCollisionData(null, null);
}
private EntityCollisionData playerCollidesWithEnergy(GameScene scene) {
if (scene.hasEnergy()) {
EntityCollisionData data = detector.playerEntityCollision(scene.getPlayer(), scene.getEnergy());
return data;
} else
return new EntityCollisionData(null, null); return new EntityCollisionData(null, null);
} }
} }

View File

@ -10,7 +10,7 @@ import com.example.julian.endlessroll.entities.particles.ParticleSystem;
import com.example.julian.endlessroll.entities.textures.TexturePack; import com.example.julian.endlessroll.entities.textures.TexturePack;
import com.example.julian.endlessroll.entities.tileLists.Ceiling; import com.example.julian.endlessroll.entities.tileLists.Ceiling;
import com.example.julian.endlessroll.entities.tileLists.Terrain; import com.example.julian.endlessroll.entities.tileLists.Terrain;
import com.example.julian.endlessroll.levels.worlds.World; import com.example.julian.endlessroll.levels.worlds.Theme;
import java.util.Iterator; import java.util.Iterator;
@ -35,9 +35,9 @@ public abstract class Scene extends SynchronizedArrayList<Entity> {
this.particleSystem = particleSystem; this.particleSystem = particleSystem;
setTexturePack(texturePack); setTexturePack(texturePack);
playerArrow = new Entity(textures.playerArrow, new Vector(0, 0.9f), .2f, .2f); playerArrow = new Entity(textures.playerArrow, new Vector(0, 0.9f), .2f, .2f);
background = new Background(World.GRASSLANDS.getBackgroundTexture()); background = new Background(Theme.GRASSLANDS.getBackgroundTexture());
terrain = new Terrain(World.GRASSLANDS.getTerrainTexture()); terrain = new Terrain(Theme.GRASSLANDS.getTerrainTexture());
ceiling = new Ceiling(World.GRASSLANDS.getTerrainTexture()); ceiling = new Ceiling(Theme.GRASSLANDS.getTerrainTexture());
player = new Player(textures.player); player = new Player(textures.player);
} }

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.Entity;
import com.example.julian.endlessroll.entities.particles.ParticleSystem; import com.example.julian.endlessroll.entities.particles.ParticleSystem;
import com.example.julian.endlessroll.entities.textures.TexturePack; import com.example.julian.endlessroll.entities.textures.TexturePack;
import com.example.julian.endlessroll.levels.worlds.World; import com.example.julian.endlessroll.levels.worlds.Theme;
public class StartScene extends Scene { public class StartScene extends Scene {
public StartScene(TexturePack texturePack, ParticleSystem particleSystem) { public StartScene(TexturePack texturePack, ParticleSystem particleSystem) {
super(texturePack, particleSystem); super(texturePack, particleSystem);
terrain.createEndless(World.ICY_MOUNTAINS, -.8f); terrain.createEndless(Theme.ICY_MOUNTAINS, -.8f);
player.init(terrain.getEdge(), 0.5f, 0.5f); player.init(terrain.getEdge(), 0.5f, 0.5f);
super.add(player); super.add(player);
} }

View File

@ -1,89 +1,119 @@
package com.example.julian.endlessroll.main.game; package com.example.julian.endlessroll.main.game;
import com.example.julian.endlessroll.entities.tools.ToolSlotSettings; import com.example.julian.endlessroll.entities.tools.ToolSlotSettings;
import com.example.julian.endlessroll.levels.levelup.LevelBounty;
import com.example.julian.endlessroll.levels.levelup.LevelUpBounties;
/** /**
* Created by Julian on 10.07.2016. * Created by Julian on 10.07.2016.
*/ */
public class User { public class User {
private final int LV_UP_EXP = 25; public interface LvUpListener {
private final int STAR_EXP = 2; public void onLvUp(int level);
private int starCount; }
private final int LV_DONE_EP = 25;
private final int STAR_EP = 4;
private final int ENERGY_EP = 13;
//MAX EP IN ONE LEVEL: 50 (25 + 3*4 + 13)
private LvUpListener lvUpListener;
private int ep;
private int level; private int level;
private int levelProgress; private int starCount;
private boolean showLevelUp = false; private int energyCount;
private ToolSlotSettings toolSlotSettings; private ToolSlotSettings toolSlotSettings;
public User(int starCount, int level, int levelProgress, ToolSlotSettings toolSlotSettings) { private LevelUpBounties levelUpBounties;
this.starCount = starCount;
public User(LvUpListener lvUpListener, int ep, int level, int starCount, int energyCount, ToolSlotSettings toolSlotSettings) {
this.lvUpListener = lvUpListener;
this.ep = ep;
this.level = level; this.level = level;
this.levelProgress = levelProgress; this.starCount = starCount;
this.energyCount = energyCount;
this.toolSlotSettings = toolSlotSettings; this.toolSlotSettings = toolSlotSettings;
levelUpBounties = new LevelUpBounties(level);
} }
public void clearData() { public void clearData() {
starCount = 0; ep = 0;
level = 1; level = 1;
levelProgress = 0; starCount = 0;
showLevelUp = false; energyCount = 0;
toolSlotSettings.reset(); toolSlotSettings.reset();
} }
public void increaseStarCount() { public void increaseStarCount() {
increaseStarCount(1); increaseStarCount(1);
gainExp(STAR_EXP);
} }
public void increaseStarCount(int starCount) { public void increaseStarCount(int starCount) {
this.starCount += starCount; this.starCount += starCount;
gainEp(STAR_EP * starCount);
} }
public void decreaseStarCount(int count){ public void increaseEnergyCount() {
this.starCount-=count; increaseEnergyCount(1);
} }
public void gainLvUpExp() { public void increaseEnergyCount(int energyCount) {
gainExp(LV_UP_EXP); this.energyCount += energyCount;
gainEp(ENERGY_EP * energyCount);
} }
private void gainExp(int amount) { public void gainLvFinishedEp() {
levelProgress += amount; gainEp(LV_DONE_EP);
if (levelProgress >= 100) { }
levelProgress -= 100;
public void gainEp(int amount) {
ep += amount;
if (ep >= 100) {
ep -= 100;
levelUp(); levelUp();
} }
} }
private void levelUp() { private void levelUp() {
level++; level++;
showLevelUp = true; levelUpBounties.loadAllForLevel(level);
toolSlotSettings.unlockSlotsIfLevelReached(levelUpBounties);
LevelBounty bounty = levelUpBounties.get(level);
if (bounty != null) {
increaseStarCount(bounty.getStarCount());
increaseEnergyCount(bounty.getEnergyCount());
}
lvUpListener.onLvUp(level);
} }
public int getStarCount() { public int getEp() {
return starCount; return ep;
} }
public int getLevel() { public int getLevel() {
return level; return level;
} }
public int getLevelProgress() { public int getStarCount() {
return levelProgress; return starCount;
} }
public boolean isShowLevelUp() { public int getEnergyCount() {
return showLevelUp; return energyCount;
}
public void levelUpShown() {
showLevelUp = false;
} }
public ToolSlotSettings getToolSlotSettings() { public ToolSlotSettings getToolSlotSettings() {
return toolSlotSettings; return toolSlotSettings;
} }
public LevelUpBounties getLevelUpBounties() {
return levelUpBounties;
}
//CHEAT
public void setLevel(int level) { public void setLevel(int level) {
this.level = level; this.level = level;
} }

View File

@ -47,6 +47,10 @@ public class GameScreen extends GLScreen<RelativeLayout> {
game.startGame(levelPack, level); game.startGame(levelPack, level);
} }
public GameHandler getGameViewHandler() {
return gameViewHandler;
}
private GameHandler gameViewHandler = new GameHandler() { private GameHandler gameViewHandler = new GameHandler() {
@Override @Override
@ -55,9 +59,9 @@ public class GameScreen extends GLScreen<RelativeLayout> {
} }
@Override @Override
public void toLevelsScreen() { public void toScreen(ScreenType screen) {
glView.setCurrentRendering(null); glView.setCurrentRendering(null);
activity.flipToScreen(ScreenType.LEVELS); activity.flipToScreen(screen);
} }
@Override @Override

View File

@ -52,9 +52,9 @@ public class LevelsScreen extends Screen<LinearLayout> implements View.OnClickLi
} }
private void createButton(Context context, Level level, int levelCount) { private void createButton(Context context, Level level, int levelCount) {
int levelNumber = level.getNumber(); int levelNumber = level.getId();
LevelButton button = new LevelButton(context, typeface, this, levelNumber, !level.isUnlocked()); LevelButton button = new LevelButton(context, typeface, this, levelNumber, level.isLocked());
button.showCollectedStars(level.isFirstStarCollected(), level.isSecondStarCollected(), level.isThirdStarCollected()); button.showCollectedStars(level.getCollectedStars());
levelButtons.put(levelNumber, button); levelButtons.put(levelNumber, button);
int halfLevelCount = levelCount / 2; int halfLevelCount = levelCount / 2;
if (levelCount % 2 == 1) if (levelCount % 2 == 1)

View File

@ -11,7 +11,7 @@ import android.view.ViewGroup;
public abstract class Screen<V extends ViewGroup> { public abstract class Screen<V extends ViewGroup> {
public enum ScreenType { public enum ScreenType {
START(0), WORLDS(1), LEVELS(2), GAME(3), TOOL_SHOP(4); NONE(-1), START(0), WORLDS(1), LEVELS(2), GAME(3), TOOL_SHOP(4);
private int inFlipperPosition; private int inFlipperPosition;

View File

@ -1,6 +1,7 @@
package com.example.julian.endlessroll.main.screens; package com.example.julian.endlessroll.main.screens;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.support.annotation.IdRes;
import android.view.View; import android.view.View;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
import android.widget.Button; import android.widget.Button;
@ -27,7 +28,8 @@ public class StartScreen extends GLScreen<RelativeLayout> implements View.OnClic
private Rendering rendering; private Rendering rendering;
private Button play; private Button play;
private Button comingSoon; private Button lvUp;
private Button lv100;
private ToggleButton soundToggle; private ToggleButton soundToggle;
public StartScreen(GameActivity activity, MyGlSurfaceView glSurfaceView, SoundManager soundManager, LevelManager levelManager, User user, Typeface typeface) throws Exception { public StartScreen(GameActivity activity, MyGlSurfaceView glSurfaceView, SoundManager soundManager, LevelManager levelManager, User user, Typeface typeface) throws Exception {
@ -37,13 +39,10 @@ public class StartScreen extends GLScreen<RelativeLayout> implements View.OnClic
this.levelManager = levelManager; this.levelManager = levelManager;
this.user = user; this.user = user;
play = (Button) layout.findViewById(R.id.startscreen_play); play = createButton(R.id.startscreen_play, typeface);
play.setTypeface(typeface);
play.setOnClickListener(this);
play.startAnimation(AnimationUtils.loadAnimation(activity, R.anim.rotate)); play.startAnimation(AnimationUtils.loadAnimation(activity, R.anim.rotate));
comingSoon = (Button) layout.findViewById(R.id.startscreen_comingsoon); lvUp = createButton(R.id.startscreen_comingsoon, typeface);
comingSoon.setTypeface(typeface); lv100 = createButton(R.id.startscreen_maxcheat, typeface);
comingSoon.setOnClickListener(this);
soundToggle = (ToggleButton) layout.findViewById(R.id.startscreen_sound); soundToggle = (ToggleButton) layout.findViewById(R.id.startscreen_sound);
soundToggle.setTypeface(typeface); soundToggle.setTypeface(typeface);
soundToggle.setOnClickListener(this); soundToggle.setOnClickListener(this);
@ -53,6 +52,13 @@ public class StartScreen extends GLScreen<RelativeLayout> implements View.OnClic
glView.addRendering(rendering); glView.addRendering(rendering);
} }
private Button createButton(@IdRes int id, Typeface typeface) {
Button button = (Button) layout.findViewById(id);
button.setTypeface(typeface);
button.setOnClickListener(this);
return button;
}
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
glView.setCurrentRendering(rendering); glView.setCurrentRendering(rendering);
@ -72,12 +78,14 @@ public class StartScreen extends GLScreen<RelativeLayout> implements View.OnClic
glView.setCurrentRendering(null); glView.setCurrentRendering(null);
} else if (v.equals(soundToggle)) { } else if (v.equals(soundToggle)) {
soundManager.setSoundOn(soundToggle.isChecked()); soundManager.setSoundOn(soundToggle.isChecked());
} else if (v.equals(comingSoon)) { } else if (v.equals(lv100)) {
user.setLevel(100); //user.setLevel(100);
user.setStarCount(100); // user.setStarCount(100);
levelManager.unlockAllLevels(); levelManager.unlockAllLevels();
levelManager.unlockAllPacks(); levelManager.unlockAllPacks();
user.gainEp(75);
} else if (v.equals(lvUp)) {
user.gainEp(100);
} }
} }

View File

@ -32,7 +32,8 @@ public class StartScreenRendering extends Rendering<StartScene> {
scene.setTexturePack(texturePack); scene.setTexturePack(texturePack);
try { try {
particleSystem.loadTextures(); particleSystem.loadTextures();
}catch (Exception e){} } catch (Exception e) {
}
return scene; return scene;
} }

View File

@ -1,6 +1,5 @@
package com.example.julian.endlessroll.main.screens; package com.example.julian.endlessroll.main.screens;
import android.view.DragEvent;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -12,7 +11,6 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import com.example.julian.endlessroll.R; import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.entities.tools.ToolSlot;
import com.example.julian.endlessroll.entities.tools.ToolSlotSettings; import com.example.julian.endlessroll.entities.tools.ToolSlotSettings;
import com.example.julian.endlessroll.entities.tools.ToolType; import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.levels.levelup.LevelUpBounties; import com.example.julian.endlessroll.levels.levelup.LevelUpBounties;
@ -51,7 +49,7 @@ public class ToolShopScreen extends Screen<RelativeLayout> implements View.OnCli
public ToolShopScreen(TopBarData topBarData) { public ToolShopScreen(TopBarData topBarData) {
super(ScreenType.TOOL_SHOP, topBarData.getGameActivity(), R.layout.toolshop); super(ScreenType.TOOL_SHOP, topBarData.getGameActivity(), R.layout.toolshop);
this.levelUpBounties = new LevelUpBounties(); this.levelUpBounties = new LevelUpBounties(0);
this.activity = topBarData.getGameActivity(); this.activity = topBarData.getGameActivity();
this.user = topBarData.getUser(); this.user = topBarData.getUser();
this.slotSettings = user.getToolSlotSettings(); this.slotSettings = user.getToolSlotSettings();
@ -113,14 +111,15 @@ public class ToolShopScreen extends Screen<RelativeLayout> implements View.OnCli
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
topBar.update(); topBar.update();
slotSettings.unlockSlotsIfLevelReached(user.getLevel(), levelUpBounties); levelUpBounties.loadAllForLevel(user.getLevel());
slotSettings.unlockSlotsIfLevelReached(levelUpBounties);
toolSlot1.setImageResource(slotSettings.get(0).getDrawable()); toolSlot1.setImageResource(slotSettings.get(0).getDrawable());
toolSlot2.setImageResource(slotSettings.get(1).getDrawable()); toolSlot2.setImageResource(slotSettings.get(1).getDrawable());
toolSlot3.setImageResource(slotSettings.get(2).getDrawable()); toolSlot3.setImageResource(slotSettings.get(2).getDrawable());
toolSlot4.setImageResource(slotSettings.get(3).getDrawable()); toolSlot4.setImageResource(slotSettings.get(3).getDrawable());
for (ToolOfferSlot slot : toolOfferSlots) { for (ToolOfferSlot slot : toolOfferSlots) {
slot.updateIsBought(); slot.updateIsBought();
boolean locked = !levelUpBounties.isToolAlreadyUnlockedAtLevel(user.getLevel(), slot.getToolType()); boolean locked = levelUpBounties.isToolLocked(slot.getToolType());
slot.setLocked(locked); slot.setLocked(locked);
if (slot.getToolType() == ToolType.RAMP) if (slot.getToolType() == ToolType.RAMP)
slot.buy(); slot.buy();
@ -140,7 +139,7 @@ public class ToolShopScreen extends Screen<RelativeLayout> implements View.OnCli
} else if (v.equals(priceButton)) { } else if (v.equals(priceButton)) {
int costs = selectedToolOfferSlot.getToolType().getCosts(); int costs = selectedToolOfferSlot.getToolType().getCosts();
topBar.showStarcountDecrease(-costs); topBar.showStarcountDecrease(-costs);
user.decreaseStarCount(costs); user.increaseStarCount(-costs);
selectedToolOfferSlot.buy(); selectedToolOfferSlot.buy();
priceButton.setVisibility(View.INVISIBLE); priceButton.setVisibility(View.INVISIBLE);
topBar.update(); topBar.update();

View File

@ -130,7 +130,7 @@ public class GameRenderer implements GLSurfaceView.Renderer {
gl.glBindTexture(GL10.GL_TEXTURE_2D, entity.getTexture().getId()); gl.glBindTexture(GL10.GL_TEXTURE_2D, entity.getTexture().getId());
entityShader.loadTransformationMatrix(matrixCreator, entity); entityShader.loadTransformationMatrix(matrixCreator, entity);
entityShader.loadAlpha(entity.getAlpha()); entityShader.loadAlpha(entity.getAlpha());
entityShader.loadTextureAtlasInfos(entity.getTexture()); entityShader.loadTextureAtlasInfos(entity.getTexture(), entity.getTextureAtlasIndex());
quad.draw(); quad.draw();
} }

View File

@ -60,7 +60,8 @@ public class ParticleRenderer {
for (Particle particle : source.getActiveParticles()) for (Particle particle : source.getActiveParticles())
renderParticle(particle); renderParticle(particle);
source.getActiveParticleLock().unlock(); source.getActiveParticleLock().unlock();
}} }
}
} }
} }
disableAdditiveBlending(gl); disableAdditiveBlending(gl);

View File

@ -3,7 +3,6 @@ package com.example.julian.endlessroll.rendering.shader;
import android.content.Context; import android.content.Context;
import android.opengl.GLES20; import android.opengl.GLES20;
import com.example.julian.endlessroll.data.Color;
import com.example.julian.endlessroll.entities.Entity; import com.example.julian.endlessroll.entities.Entity;
import com.example.julian.endlessroll.entities.textures.Texture; import com.example.julian.endlessroll.entities.textures.Texture;
import com.example.julian.endlessroll.rendering.MatrixCreator; import com.example.julian.endlessroll.rendering.MatrixCreator;
@ -46,8 +45,8 @@ public class EntityShader extends ShaderProgram{
GLES20.glUniform1f(location_alpha, alpha); GLES20.glUniform1f(location_alpha, alpha);
} }
public void loadTextureAtlasInfos(Texture texture) { public void loadTextureAtlasInfos(Texture texture, int atlasIndex) {
GLES20.glUniform2f(location_texAtlasSize, texture.getAtlasWidth(), texture.getAtlasHeight()); GLES20.glUniform2f(location_texAtlasSize, texture.getAtlasWidth(), texture.getAtlasHeight());
GLES20.glUniform1f(location_texAtlasIndex, texture.getAtlasIndex()); GLES20.glUniform1f(location_texAtlasIndex, atlasIndex);
} }
} }

View File

@ -4,26 +4,20 @@ import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import com.example.julian.endlessroll.entities.tools.ToolSlot;
import com.example.julian.endlessroll.entities.tools.ToolSlotSettings;
import com.example.julian.endlessroll.entities.tools.ToolType; import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.levels.Level; import com.example.julian.endlessroll.levels.Level;
import com.example.julian.endlessroll.levels.LevelPack; import com.example.julian.endlessroll.levels.LevelPack;
import com.example.julian.endlessroll.main.GameLog;
import java.util.ArrayList;
import java.util.List;
/** /**
* Created by Julian on 10.05.2016. * Created by Julian on 10.05.2016.
*/ */
public class MyDatabase extends DatabaseAdapter { public class MyDatabase extends DatabaseAdapter {
private final static int VERSION = 6; private final static int VERSION = 7;
private final static String DATABASE_NAME = "DATABASE"; private final static String DATABASE_NAME = "DATABASE";
private SQLTableColumn levelpackColumn, levelColumn, unlockedColumn, completedColumn, starsColumn; private SQLTableColumn levelpackColumn, levelColumn, lockedColumn, finishedColumn, starsColumn, energyColumn;
private SQLTableColumn idColumn, toolTypeColumn, lockedColumn, boughtColumn; private SQLTableColumn toolIdColumn, boughtColumn;
private SQLTable levelTable, levelPackTable, toolSlotTable, boughtToolTable; private SQLTable levelTable, levelPackTable, toolTable;
public MyDatabase(Context context) { public MyDatabase(Context context) {
super(context, DATABASE_NAME, VERSION); super(context, DATABASE_NAME, VERSION);
@ -33,47 +27,46 @@ public class MyDatabase extends DatabaseAdapter {
protected void createColumns() { protected void createColumns() {
levelpackColumn = new SQLTableColumn("LEVELPACK", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL); levelpackColumn = new SQLTableColumn("LEVELPACK", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
levelColumn = new SQLTableColumn("LEVEL", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL); levelColumn = new SQLTableColumn("LEVEL", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
unlockedColumn = new SQLTableColumn("UNLOCKED", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
completedColumn = new SQLTableColumn("COMPLETED", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
starsColumn = new SQLTableColumn("STARS", SQLTableColumn.ColumnType.TEXT, SQLTableColumn.ColumnExtra.NONE);
idColumn = new SQLTablePrimaryKeyColumn(false);
toolTypeColumn = new SQLTableColumn("TOOLTYPE", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
lockedColumn = new SQLTableColumn("LOCKED", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL); lockedColumn = new SQLTableColumn("LOCKED", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
finishedColumn = new SQLTableColumn("FINISHED", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
starsColumn = new SQLTableColumn("STARS", SQLTableColumn.ColumnType.TEXT, SQLTableColumn.ColumnExtra.NOT_NULL);
energyColumn = new SQLTableColumn("ENERGY", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
toolIdColumn = new SQLTableColumn("TOOL_ID", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
boughtColumn = new SQLTableColumn("BOUGHT", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL); boughtColumn = new SQLTableColumn("BOUGHT", SQLTableColumn.ColumnType.INTEGER, SQLTableColumn.ColumnExtra.NOT_NULL);
} }
@Override @Override
protected SQLTable[] createTables() { protected SQLTable[] createTables() {
levelTable = new SQLTable("LEVELTABLE", levelpackColumn, levelColumn, unlockedColumn, completedColumn, starsColumn); levelPackTable = new SQLTable("LEVELPACK_TABLE", levelpackColumn, lockedColumn);
levelPackTable = new SQLTable("LEVELPACKS", levelpackColumn, unlockedColumn); levelTable = new SQLTable("LEVEL_TABLE", levelpackColumn, levelColumn, lockedColumn, finishedColumn, starsColumn, energyColumn);
toolSlotTable = new SQLTable("TOOL_SLOT_TABLE", idColumn, toolTypeColumn, lockedColumn); toolTable = new SQLTable("TOOL_TABLE", toolIdColumn, boughtColumn);
boughtToolTable = new SQLTable("BOUGHT_TOOL_TABLE", idColumn, boughtColumn); return new SQLTable[]{levelPackTable, levelTable, toolTable};
return new SQLTable[]{levelTable, levelPackTable, toolSlotTable, boughtToolTable};
} }
public void writeLevelProgress(int levelpackNumber, Level level) { public void writeLevelProgress(Level level) {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(levelpackColumn.getKey(), levelpackNumber); values.put(levelpackColumn.getKey(), level.getPackId());
values.put(levelColumn.getKey(), level.getNumber()); values.put(levelColumn.getKey(), level.getId());
values.put(unlockedColumn.getKey(), level.isUnlocked() ? 1 : 0); values.put(lockedColumn.getKey(), level.isLocked() ? 1 : 0);
values.put(completedColumn.getKey(), level.isCompleted() ? 1 : 0); values.put(finishedColumn.getKey(), level.isFinished() ? 1 : 0);
values.put(starsColumn.getKey(), level.getCollectedStars()); values.put(starsColumn.getKey(), level.getCollectedStarCodeForSQL());
long update = super.update(levelTable, values, levelpackColumn, levelpackNumber, levelColumn, level.getNumber()); values.put(energyColumn.getKey(), level.isEnergyCollected());
long update = super.update(levelTable, values, levelpackColumn, level.getPackId(), levelColumn, level.getId());
readLevelProgress(levelpackNumber, level);
} }
public void readLevelProgress(int levelpackNumber, Level level) { public void readLevelProgress(Level level) {
Cursor cursor = super.getCursor(levelTable, levelpackColumn, levelpackNumber, levelColumn, level.getNumber()); Cursor cursor = super.getCursor(levelTable, levelpackColumn, level.getPackId(), levelColumn, level.getId());
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
boolean unlocked = cursor.getInt(2) == 1; boolean locked = cursor.getInt(2) == 1;
boolean completed = cursor.getInt(3) == 1; boolean finished = cursor.getInt(3) == 1;
String stars = cursor.getString(4); String stars = cursor.getString(4);
level.setUnlocked(unlocked); boolean energy = cursor.getInt(5) == 1;
level.setCompleted(completed);
level.setCollectedStars(stars); level.setLocked(locked);
level.setFinished(finished);
level.setCollectedStarsFromSQL(stars);
level.setEnergyCollected(energy);
} }
cursor.close(); cursor.close();
} }
@ -84,62 +77,35 @@ public class MyDatabase extends DatabaseAdapter {
public void writeLevelPackLocked(LevelPack levelPack) { public void writeLevelPackLocked(LevelPack levelPack) {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(levelpackColumn.getKey(), levelPack.getWorld().getIndex()); values.put(levelpackColumn.getKey(), levelPack.getId());
values.put(unlockedColumn.getKey(), levelPack.isLocked() ? 0 : 1); values.put(lockedColumn.getKey(), levelPack.isLocked() ? 1 : 0);
super.update(levelPackTable, values, levelpackColumn, levelPack.getWorld().getIndex()); super.update(levelPackTable, values, levelpackColumn, levelPack.getId());
} }
public void readLevelPackLocked(LevelPack levelPack) { public void readLevelPackLocked(LevelPack levelPack) {
Cursor cursor = super.getCursor(levelPackTable, levelpackColumn, levelPack.getWorld().getIndex()); Cursor cursor = super.getCursor(levelPackTable, levelpackColumn, levelPack.getId());
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
boolean unlocked = cursor.getInt(1) == 1; boolean locked = cursor.getInt(1) == 1;
levelPack.setLocked(!unlocked); levelPack.setLocked(locked);
} else { } else {
levelPack.setLocked(true); levelPack.setLocked(true);
} }
cursor.close(); cursor.close();
} }
public void writeToolSlot(int id, ToolSlot toolSlot) {
ContentValues values = new ContentValues();
values.put(idColumn.getKey(), id);
values.put(toolTypeColumn.getKey(), toolSlot.getToolType().ordinal());
values.put(lockedColumn.getKey(), toolSlot.isLocked() ? 1 : 0);
super.update(toolSlotTable, values, idColumn, id);
}
public ToolSlotSettings readToolSlotSettings() {
List<ToolSlot> list = new ArrayList<>();
Cursor cursor = super.getCursor(toolSlotTable);
if (cursor.moveToFirst()) {
do {
ToolType toolType = ToolType.values()[cursor.getInt(1)];
boolean locked = cursor.getInt(2) == 1;
list.add(new ToolSlot(toolType, locked));
}
while (cursor.moveToNext());
}
cursor.close();
GameLog.i("read toolSlotList: " + list.size());
if (list.isEmpty())
return new ToolSlotSettings();
else
return new ToolSlotSettings(list);
}
public void writeBoughtTools() { public void writeBoughtTools() {
for (ToolType tool : ToolType.values()) { for (ToolType tool : ToolType.values()) {
if (tool != ToolType.NONE) { if (tool != ToolType.NONE) {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(idColumn.getKey(), tool.ordinal()); values.put(toolIdColumn.getKey(), tool.ordinal());
values.put(boughtColumn.getKey(), tool.isBought() ? 1 : 0); values.put(boughtColumn.getKey(), tool.isBought() ? 1 : 0);
super.update(boughtToolTable, values, idColumn, tool.ordinal()); super.update(toolTable, values, toolIdColumn, tool.ordinal());
} }
} }
} }
public void readBoughtTools() { public void readBoughtTools() {
Cursor cursor = super.getCursor(boughtToolTable); Cursor cursor = super.getCursor(toolTable);
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
do { do {
int id = cursor.getInt(0); int id = cursor.getInt(0);

View File

@ -3,47 +3,52 @@ package com.example.julian.endlessroll.views;
import android.content.Context; import android.content.Context;
import android.support.annotation.DrawableRes; import android.support.annotation.DrawableRes;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.example.julian.endlessroll.R; import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.entities.tools.ToolType; import com.example.julian.endlessroll.main.screens.Screen;
/** /**
* Created by Julian on 15.07.2016. * Created by Julian on 15.07.2016.
*/ */
public class BountyMessage { public class BountyMessage implements View.OnClickListener {
public interface ScreenSwitchCaller {
public void switchScreen(Screen.ScreenType screenType);
}
private LinearLayout layout; private LinearLayout layout;
private ImageView image; private ImageView image;
private TextView text; private TextView text;
public BountyMessage(Context context, int starCount) { private ScreenSwitchCaller screenSwitchCaller;
this(context, R.drawable.star, starCount + ""); private Screen.ScreenType goalScreen;
}
public BountyMessage(Context context, ToolType type) { public BountyMessage(Context context, @DrawableRes int drawableId, String text, ScreenSwitchCaller screenSwitchCaller, Screen.ScreenType goalScreenType) {
this(context, type.getButtonDrawable(), type.getName() + " unlocked");
}
public BountyMessage(Context context) {
this(context, R.drawable.tools_unlockedbutton, "Tool-Slot unlocked");
}
private BountyMessage(Context context, @DrawableRes int imageId, String text) {
findViews(context); findViews(context);
this.image.setImageResource(imageId); this.image.setImageResource(drawableId);
this.text.setText(text); this.text.setText(text);
this.screenSwitchCaller = screenSwitchCaller;
this.goalScreen = goalScreenType;
} }
private void findViews(Context context) { private void findViews(Context context) {
LayoutInflater inflater = LayoutInflater.from(context); LayoutInflater inflater = LayoutInflater.from(context);
layout = (LinearLayout) inflater.inflate(R.layout.unlock_message, null); layout = (LinearLayout) inflater.inflate(R.layout.unlock_message, null);
layout.setOnClickListener(this);
image = (ImageView) layout.findViewById(R.id.unlockmessage_toolimage); image = (ImageView) layout.findViewById(R.id.unlockmessage_toolimage);
text = (TextView) layout.findViewById(R.id.unlockmessage_message); text = (TextView) layout.findViewById(R.id.unlockmessage_message);
} }
@Override
public void onClick(View v) {
if (goalScreen != Screen.ScreenType.NONE)
screenSwitchCaller.switchScreen(goalScreen);
}
public LinearLayout getLayout() { public LinearLayout getLayout() {
return layout; return layout;
} }

View File

@ -42,12 +42,12 @@ public class LevelButton extends RelativeLayout {
lockImage.setVisibility(visibility); lockImage.setVisibility(visibility);
} }
public void showCollectedStars(boolean star1, boolean star2, boolean star3) { public void showCollectedStars(boolean[] stars) {
if(star1) if (stars[0])
this.star1.setImageResource(R.drawable.star); this.star1.setImageResource(R.drawable.star);
if(star2) if (stars[1])
this.star2.setImageResource(R.drawable.star); this.star2.setImageResource(R.drawable.star);
if(star3) if (stars[2])
this.star3.setImageResource(R.drawable.star); this.star3.setImageResource(R.drawable.star);
} }

View File

@ -1,7 +1,7 @@
package com.example.julian.endlessroll.views; package com.example.julian.endlessroll.views;
import android.content.Context;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.FrameLayout; import android.widget.FrameLayout;
@ -9,26 +9,33 @@ import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.example.julian.endlessroll.R; import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.levels.levelup.LevelUpBounties; import com.example.julian.endlessroll.levels.levelup.LevelBounty;
import com.example.julian.endlessroll.main.GameActivity;
import com.example.julian.endlessroll.main.game.User;
import com.example.julian.endlessroll.main.screens.Screen;
/** /**
* Created by Julian on 15.07.2016. * Created by Julian on 15.07.2016.
*/ */
public class LevelupMessage implements View.OnClickListener { public class LevelupMessage implements View.OnClickListener, BountyMessage.ScreenSwitchCaller {
private Context context; private GameActivity gameActivity;
private LevelUpBounties levelUpBounties; private User user;
private FrameLayout layout; private FrameLayout layout;
private TextView levelView; private TextView levelView;
private TextView text; private TextView text;
private LinearLayout unlockMessages; private LinearLayout unlockMessages;
public LevelupMessage(Context context, Typeface typeface, FrameLayout layout) { public LevelupMessage(GameActivity gameActivity, Typeface typeface, User user) {
this.context = context; this.gameActivity = gameActivity;
levelUpBounties = new LevelUpBounties(); this.user = user;
this.layout = layout;
LayoutInflater inflater = LayoutInflater.from(gameActivity);
layout = (FrameLayout) inflater.inflate(R.layout.levelup_message, null);
layout.setOnClickListener(this); layout.setOnClickListener(this);
layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
layout.setVisibility(View.GONE);
levelView = (TextView) layout.findViewById(R.id.levelup_level); levelView = (TextView) layout.findViewById(R.id.levelup_level);
levelView.setTypeface(typeface); levelView.setTypeface(typeface);
text = (TextView) layout.findViewById(R.id.levelup_text); text = (TextView) layout.findViewById(R.id.levelup_text);
@ -42,22 +49,34 @@ public class LevelupMessage implements View.OnClickListener {
levelView.setText(level + ""); levelView.setText(level + "");
layout.setVisibility(View.VISIBLE); layout.setVisibility(View.VISIBLE);
for (LevelUpBounties.Bounty bounty : levelUpBounties.get(level)) {
BountyMessage message = bounty.createMessage(context); LevelBounty bounty = user.getLevelUpBounties().get(level);
if (bounty != null)
for (BountyMessage message : bounty.createBountyMessages(gameActivity, this))
unlockMessages.addView(message.getLayout(), params); unlockMessages.addView(message.getLayout(), params);
} }
}
private void hide() { private void hide() {
layout.clearAnimation(); layout.clearAnimation();
layout.setVisibility(View.INVISIBLE); layout.setVisibility(View.GONE);
unlockMessages.removeAllViews(); unlockMessages.removeAllViews();
} }
public FrameLayout getLayout() {
return layout;
}
@Override @Override
public void onClick(View v) { public void onClick(View v) {
hide(); hide();
} }
@Override
public void switchScreen(Screen.ScreenType screenType) {
if (screenType == Screen.ScreenType.TOOL_SHOP)
gameActivity.setToolshopCaller(gameActivity.getCurrentScreenType());
gameActivity.flipToScreen(screenType);
hide();
}
} }

View File

@ -10,7 +10,6 @@ import android.widget.RelativeLayout;
import com.example.julian.endlessroll.R; import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.entities.tools.ToolSlotSettings; import com.example.julian.endlessroll.entities.tools.ToolSlotSettings;
import com.example.julian.endlessroll.entities.tools.ToolType; import com.example.julian.endlessroll.entities.tools.ToolType;
import com.example.julian.endlessroll.main.GameLog;
import com.example.julian.endlessroll.main.game.Game; import com.example.julian.endlessroll.main.game.Game;
import com.example.julian.endlessroll.main.game.GameState; import com.example.julian.endlessroll.main.game.GameState;

View File

@ -62,7 +62,7 @@ public class TopBar extends TopBarData implements View.OnClickListener {
public void update() { public void update() {
levelDisplay.setText("Level: " + user.getLevel()); levelDisplay.setText("Level: " + user.getLevel());
levelProgress.setProgress(user.getLevelProgress()); levelProgress.setProgress(user.getEp());
starCount.setText(user.getStarCount() + ""); starCount.setText(user.getStarCount() + "");
soundToggle.setChecked(soundManager.isSoundOn()); soundToggle.setChecked(soundManager.isSoundOn());
} }
@ -91,6 +91,10 @@ public class TopBar extends TopBarData implements View.OnClickListener {
for (ToolType type : ToolType.values()) for (ToolType type : ToolType.values())
type.setBought(false); type.setBought(false);
dataStorageHandler.writeBoughtTools(); dataStorageHandler.writeBoughtTools();
user.gainLvFinishedEp();
user.gainLvFinishedEp();
user.gainLvFinishedEp();
user.gainLvFinishedEp();
} }
} }
} }

View File

@ -10,7 +10,6 @@ import android.widget.TextView;
import com.example.julian.endlessroll.R; import com.example.julian.endlessroll.R;
import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.data.Vector;
import com.example.julian.endlessroll.main.GameHandler; import com.example.julian.endlessroll.main.GameHandler;
import com.example.julian.endlessroll.main.GameLog;
import com.example.julian.endlessroll.main.game.Game; import com.example.julian.endlessroll.main.game.Game;
import com.example.julian.endlessroll.main.game.GameState; import com.example.julian.endlessroll.main.game.GameState;
import com.example.julian.endlessroll.main.game.Timer; import com.example.julian.endlessroll.main.game.Timer;
@ -31,10 +30,9 @@ public class ViewManager implements View.OnClickListener {
private Message message; private Message message;
public ToolButtonBar toolButtonBar; public ToolButtonBar toolButtonBar;
public ShortMenu shortMenu; public ShortMenu shortMenu;
private LevelupMessage levelupMessage;
private Countdown countdown; private Countdown countdown;
public ViewManager(final Game game, GameHandler gameViewHandler, final TopBarData topBarData) { public ViewManager(final Game game, final GameHandler gameViewHandler, final TopBarData topBarData) {
this.game = game; this.game = game;
this.gameViewHandler = gameViewHandler; this.gameViewHandler = gameViewHandler;
@ -45,7 +43,6 @@ public class ViewManager implements View.OnClickListener {
toolButtonBar = new ToolButtonBar(game, topBarData.getUser().getToolSlotSettings(), (LinearLayout) layout.findViewById(R.id.game_toolbuttonbar)); toolButtonBar = new ToolButtonBar(game, topBarData.getUser().getToolSlotSettings(), (LinearLayout) layout.findViewById(R.id.game_toolbuttonbar));
shortMenu = new ShortMenu(game, topBarData, (FrameLayout) layout.findViewById(R.id.game_shortmenu)); shortMenu = new ShortMenu(game, topBarData, (FrameLayout) layout.findViewById(R.id.game_shortmenu));
message = new Message(game, topBarData.getTypeface(), (RelativeLayout) layout.findViewById(R.id.game_message)); message = new Message(game, topBarData.getTypeface(), (RelativeLayout) layout.findViewById(R.id.game_message));
levelupMessage = new LevelupMessage(game.getContext(), topBarData.getTypeface(), (FrameLayout) layout.findViewById(R.id.game_levelup));
countdown = new Countdown(game, topBarData.getTypeface(), (TextView) layout.findViewById(R.id.game_countdown)); countdown = new Countdown(game, topBarData.getTypeface(), (TextView) layout.findViewById(R.id.game_countdown));
} }
}); });
@ -82,15 +79,6 @@ public class ViewManager implements View.OnClickListener {
}); });
} }
public void showLevelUp(final int level) {
gameViewHandler.startInUiThread(new Runnable() {
@Override
public void run() {
levelupMessage.show(level);
}
});
}
public void showMessage(final boolean wasLastLevel, final MessageType messageType) { public void showMessage(final boolean wasLastLevel, final MessageType messageType) {
gameViewHandler.startInUiThread(new Runnable() { gameViewHandler.startInUiThread(new Runnable() {
@Override @Override

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -73,15 +73,6 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:visibility="invisible"/> android:visibility="invisible"/>
<include
android:id="@+id/game_levelup"
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@layout/levelup_message"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="invisible"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@ -1,41 +1,51 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:orientation="vertical">
<Button
android:id="@+id/startscreen_play"
android:layout_width="110dp"
android:layout_height="110dp"
android:text="Play"
android:background="@drawable/playershapes_ball"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="44dp"
android:textSize="25sp" />
<Button
android:id="@+id/startscreen_comingsoon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Coming Soon"
style="@style/customButton"
android:layout_alignBottom="@+id/startscreen_sound"
android:layout_toLeftOf="@+id/startscreen_play"
android:layout_toStartOf="@+id/startscreen_play" />
<ToggleButton <ToggleButton
android:id="@+id/startscreen_sound" android:id="@+id/startscreen_sound"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/startscreen_play"
android:layout_marginTop="26dp"
android:layout_toEndOf="@+id/startscreen_play"
android:layout_toRightOf="@+id/startscreen_play"
android:background="@drawable/xml_sound_toggle" android:background="@drawable/xml_sound_toggle"
android:textOff="" android:textOff=""
android:textOn="" android:textOn="" />
android:layout_below="@+id/startscreen_play"
android:layout_toRightOf="@+id/startscreen_play"
android:layout_toEndOf="@+id/startscreen_play"
android:layout_marginTop="26dp" />
<Button
android:id="@+id/startscreen_play"
android:layout_width="110dp"
android:layout_height="110dp"
android:layout_marginTop="40dp"
android:background="@drawable/playershapes_ball"
android:text="Play"
android:textSize="25sp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:id="@+id/startscreen_comingsoon"
style="@style/customButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Level Up"
android:layout_alignTop="@+id/startscreen_play"
android:layout_toRightOf="@+id/startscreen_sound"
android:layout_toEndOf="@+id/startscreen_sound" />
<Button
android:id="@+id/startscreen_maxcheat"
style="@style/customButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lv to 100"
android:layout_below="@+id/startscreen_play"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="48dp"
android:layout_marginStart="48dp" />
</RelativeLayout> </RelativeLayout>

View File

@ -66,14 +66,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
@ -82,6 +74,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />