From bf848cd46ce2d8e42fe55edd7ab53929497d1afd Mon Sep 17 00:00:00 2001 From: = <=> Date: Thu, 25 May 2017 13:26:08 +0200 Subject: [PATCH] When player is to high, camera follows Textures can be repeated over entity --- app/app.iml | 1 - .../assets/debug/levelpack_01.xml | 44 -- .../assets/debug/levelpacks/Grasslands.xml | 468 +++++++++--------- .../assets/debug/levelpacks/Testcave.xml | 115 ----- .../debug/shader/entityVertexShader.glsl | 5 + .../assets/debug/testlevelpack.xml | 33 -- .../blame/res/debug/single/drawable.json | 32 +- .../blame/res/debug/single/layout.json | 12 +- .../incremental/mergeDebugAssets/merger.xml | 2 +- .../res/merged/debug/drawable/goal.png | Bin 622 -> 179 bytes .../res/merged/debug/layout/start_screen.xml | 2 +- .../intermediates/res/resources-debug.ap_ | Bin 2411419 -> 2410971 bytes app/src/main/assets/Grasslands.xml | 285 ----------- app/src/main/assets/Icy Mountains.xml | 57 --- app/src/main/assets/levelpack_01.xml | 44 -- app/src/main/assets/levelpacks/Grasslands.xml | 468 +++++++++--------- app/src/main/assets/levelpacks/Testcave.xml | 115 ----- .../assets/shader/entityVertexShader.glsl | 5 + app/src/main/assets/testlevelpack.xml | 33 -- .../endlessroll/entities/Background.java | 3 +- .../julian/endlessroll/entities/Entity.java | 10 + .../julian/endlessroll/entities/Goal.java | 3 +- .../julian/endlessroll/entities/Obstacle.java | 6 +- .../entities/particles/Particle.java | 2 +- .../entities/particles/ParticleSource.java | 8 +- .../entities/textures/TexturePack.java | 4 +- .../entities/tileLists/TileList.java | 12 +- .../endlessroll/entities/tools/Bomb.java | 2 +- .../endlessroll/entities/tools/ToolSlot.java | 5 - .../julian/endlessroll/levels/LevelPack.java | 8 +- .../levels/worlds/{Theme.java => World.java} | 8 +- .../julian/endlessroll/main/game/Camera.java | 47 ++ .../julian/endlessroll/main/game/Game.java | 16 +- .../endlessroll/main/game/GameScene.java | 18 +- .../julian/endlessroll/main/game/Physics.java | 3 +- .../julian/endlessroll/main/game/Scene.java | 35 +- .../endlessroll/main/game/StartScene.java | 4 +- .../julian/endlessroll/main/game/Timer.java | 2 +- .../endlessroll/main/screens/StartScreen.java | 2 +- .../endlessroll/rendering/MatrixCreator.java | 5 +- .../rendering/renderer/GameRenderer.java | 7 +- .../rendering/renderer/ParticleRenderer.java | 2 +- .../rendering/shader/EntityShader.java | 13 +- .../rendering/shader/ParticleShader.java | 5 +- .../rendering/shader/TerrainShader.java | 5 +- .../endlessroll/user/ToolSlotSettings.java | 10 +- .../example/julian/endlessroll/user/User.java | 2 + .../endlessroll/views/ToolButtonBar.java | 10 +- .../julian/endlessroll/views/ViewManager.java | 19 +- .../julian/endlessroll/views/WorldButton.java | 8 +- app/src/main/res/drawable/goal.png | Bin 1437 -> 278 bytes app/src/main/res/layout/start_screen.xml | 2 +- build.gradle | 2 +- 53 files changed, 667 insertions(+), 1342 deletions(-) delete mode 100644 app/build/intermediates/assets/debug/levelpack_01.xml delete mode 100644 app/build/intermediates/assets/debug/levelpacks/Testcave.xml delete mode 100644 app/build/intermediates/assets/debug/testlevelpack.xml delete mode 100644 app/src/main/assets/Grasslands.xml delete mode 100644 app/src/main/assets/Icy Mountains.xml delete mode 100644 app/src/main/assets/levelpack_01.xml delete mode 100644 app/src/main/assets/levelpacks/Testcave.xml delete mode 100644 app/src/main/assets/testlevelpack.xml rename app/src/main/java/com/example/julian/endlessroll/levels/worlds/{Theme.java => World.java} (93%) create mode 100644 app/src/main/java/com/example/julian/endlessroll/main/game/Camera.java diff --git a/app/app.iml b/app/app.iml index 19c3c46..816798b 100644 --- a/app/app.iml +++ b/app/app.iml @@ -90,7 +90,6 @@ - diff --git a/app/build/intermediates/assets/debug/levelpack_01.xml b/app/build/intermediates/assets/debug/levelpack_01.xml deleted file mode 100644 index 5d000c8..0000000 --- a/app/build/intermediates/assets/debug/levelpack_01.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml b/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml index d5a9e0e..300a394 100644 --- a/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml +++ b/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml @@ -1,284 +1,272 @@ - - GRASSLANDS + + GRASSLANDS - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - + + + - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/build/intermediates/assets/debug/levelpacks/Testcave.xml b/app/build/intermediates/assets/debug/levelpacks/Testcave.xml deleted file mode 100644 index 7048a0f..0000000 --- a/app/build/intermediates/assets/debug/levelpacks/Testcave.xml +++ /dev/null @@ -1,115 +0,0 @@ - - TESTCAVE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl b/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl index 19da5d9..b96c4d4 100644 --- a/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl +++ b/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl @@ -1,5 +1,6 @@ uniform mat4 mvpMatrix; uniform mat4 transformationMatrix; +uniform vec2 texCoordScaling; attribute vec4 position; attribute vec2 texCoords; @@ -11,5 +12,9 @@ void main() { vec4 transformatedPosition = transformationMatrix * position; gl_Position = mvpMatrix * transformatedPosition; pass_TexCoords = texCoords; + if(texCoordScaling.x != 0.0) + pass_TexCoords.x *= texCoordScaling.x; + if(texCoordScaling.y != 0.0) + pass_TexCoords.y *= texCoordScaling.y; } \ No newline at end of file diff --git a/app/build/intermediates/assets/debug/testlevelpack.xml b/app/build/intermediates/assets/debug/testlevelpack.xml deleted file mode 100644 index 844f2fb..0000000 --- a/app/build/intermediates/assets/debug/testlevelpack.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/build/intermediates/blame/res/debug/single/drawable.json b/app/build/intermediates/blame/res/debug/single/drawable.json index 59a67e0..8d8ef7a 100644 --- a/app/build/intermediates/blame/res/debug/single/drawable.json +++ b/app/build/intermediates/blame/res/debug/single/drawable.json @@ -43,14 +43,14 @@ "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_seekbar_thumb_material.xml", "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_seekbar_thumb_material.xml" }, - { - "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\xml_background_tutorialtextview.xml", - "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\xml_background_tutorialtextview.xml" - }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_btn_check_material.xml", "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_btn_check_material.xml" }, + { + "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\xml_background_tutorialtextview.xml", + "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\xml_background_tutorialtextview.xml" + }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_spinner_textfield_background_material.xml", "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_spinner_textfield_background_material.xml" @@ -167,14 +167,14 @@ "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\backgrounds_game_mountains.png", "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\backgrounds_game_mountains.png" }, - { - "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_unlockedbutton.png", - "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_unlockedbutton.png" - }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\guis_playerarrow.png", "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\guis_playerarrow.png" }, + { + "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_unlockedbutton.png", + "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_unlockedbutton.png" + }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_ratingbar_full_material.xml", "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_ratingbar_full_material.xml" @@ -195,14 +195,14 @@ "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tip_icon.png", "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tip_icon.png" }, - { - "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_cab_background_top_material.xml", - "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_cab_background_top_material.xml" - }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_emptybutton.png", "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_emptybutton.png" }, + { + "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_cab_background_top_material.xml", + "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_cab_background_top_material.xml" + }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_text_cursor_material.xml", "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_text_cursor_material.xml" @@ -219,14 +219,14 @@ "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\obstacles_grass.png", "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\obstacles_grass.png" }, - { - "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_list_selector_holo_light.xml", - "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_list_selector_holo_light.xml" - }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_switch_thumb_material.xml", "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_switch_thumb_material.xml" }, + { + "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\abc_list_selector_holo_light.xml", + "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\drawable\\abc_list_selector_holo_light.xml" + }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\drawable\\tools_bombbutton.png", "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\drawable\\tools_bombbutton.png" diff --git a/app/build/intermediates/blame/res/debug/single/layout.json b/app/build/intermediates/blame/res/debug/single/layout.json index eb011f2..9b7dc63 100644 --- a/app/build/intermediates/blame/res/debug/single/layout.json +++ b/app/build/intermediates/blame/res/debug/single/layout.json @@ -3,22 +3,22 @@ "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\levels.xml", "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\levels.xml" }, - { - "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\toolshop.xml", - "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\toolshop.xml" - }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\tutorial.xml", "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\tutorial.xml" }, { - "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\abc_screen_simple_overlay_action_mode.xml", - "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\layout\\abc_screen_simple_overlay_action_mode.xml" + "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\toolshop.xml", + "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\toolshop.xml" }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\worlds.xml", "source": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\src\\main\\res\\layout\\worlds.xml" }, + { + "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\abc_screen_simple_overlay_action_mode.xml", + "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\layout\\abc_screen_simple_overlay_action_mode.xml" + }, { "merged": "C:\\Users\\Julian\\AndroidStudioProjects\\EndlessRoll\\app\\build\\intermediates\\res\\merged\\debug\\layout\\abc_screen_simple.xml", "source": "C:\\Users\\Julian\\.android\\build-cache\\2232000db64551c7682d41127fbc27c912efcc3d\\output\\res\\layout\\abc_screen_simple.xml" diff --git a/app/build/intermediates/incremental/mergeDebugAssets/merger.xml b/app/build/intermediates/incremental/mergeDebugAssets/merger.xml index 0d5833a..25d4117 100644 --- a/app/build/intermediates/incremental/mergeDebugAssets/merger.xml +++ b/app/build/intermediates/incremental/mergeDebugAssets/merger.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/build/intermediates/res/merged/debug/drawable/goal.png b/app/build/intermediates/res/merged/debug/drawable/goal.png index d530dc2c47ce84618f577d92fca38f5726a1e82f..5e67350792abb2e7b1043f23c80d1e9baff09c5b 100644 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&aR&H=xB}__K)}FoHg5YIAScz+ z#WAGf*4uL%1sN1LST-F0+rDkv6O9cXY92-*vCl;r@q)&$4!m2BGvNpOS@p8sXge}g SxN8C}WbkzLb6Mw<&;$UGxhG-( literal 622 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5FnKt;1lBd|NsBfr%#)hm;eQU z_%s82eeRiaIM7M>z=8AY@*XjY zofc%=5^HlHYp*1W#^d#QzjLpLEZlxuzVER9g0B6`Zhy;_?XI(mUw4>ca(&G8WA(dl z|233rSk}j0vCr)b(<&pm2Y*39g9|7~dCT@K>py;3T;)=D%9JHnp5Rgm67M(`)Ux;+ z^BZ=R^(QnuSDwUYvOw=r4)?e0H~2l`CI(Ilnhc5=Tma|_!M3YD&Io?gCuc+@sz=(t*B*&nEL_|(-iY04}aJZgbbLJT#G*Kcr4 Tu-^E+2c*)|)z4*}Q$iB}x3;AQ diff --git a/app/build/intermediates/res/merged/debug/layout/start_screen.xml b/app/build/intermediates/res/merged/debug/layout/start_screen.xml index 8368a3a..87142f8 100644 --- a/app/build/intermediates/res/merged/debug/layout/start_screen.xml +++ b/app/build/intermediates/res/merged/debug/layout/start_screen.xml @@ -51,6 +51,6 @@ android:layout_marginLeft="48dp" android:layout_marginStart="48dp" android:text="Lv to 100" - android:visibility="gone"/> + android:visibility="visible"/> \ No newline at end of file diff --git a/app/build/intermediates/res/resources-debug.ap_ b/app/build/intermediates/res/resources-debug.ap_ index 164fb87a4ace175eaa2cc80e49ac485ed204f637..af456c7b2c4e048fdb444afcc337920d6e1e6fcd 100644 GIT binary patch delta 3821 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 qGf2OW)>21* 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 diff --git a/app/src/main/assets/Grasslands.xml b/app/src/main/assets/Grasslands.xml deleted file mode 100644 index 562e5a2..0000000 --- a/app/src/main/assets/Grasslands.xml +++ /dev/null @@ -1,285 +0,0 @@ - - GRASSLANDS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/assets/Icy Mountains.xml b/app/src/main/assets/Icy Mountains.xml deleted file mode 100644 index e93c0c8..0000000 --- a/app/src/main/assets/Icy Mountains.xml +++ /dev/null @@ -1,57 +0,0 @@ - - ICY_MOUNTAINS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/assets/levelpack_01.xml b/app/src/main/assets/levelpack_01.xml deleted file mode 100644 index 5d000c8..0000000 --- a/app/src/main/assets/levelpack_01.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/assets/levelpacks/Grasslands.xml b/app/src/main/assets/levelpacks/Grasslands.xml index d5a9e0e..300a394 100644 --- a/app/src/main/assets/levelpacks/Grasslands.xml +++ b/app/src/main/assets/levelpacks/Grasslands.xml @@ -1,284 +1,272 @@ - - GRASSLANDS + + GRASSLANDS - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - + + + - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/src/main/assets/levelpacks/Testcave.xml b/app/src/main/assets/levelpacks/Testcave.xml deleted file mode 100644 index 7048a0f..0000000 --- a/app/src/main/assets/levelpacks/Testcave.xml +++ /dev/null @@ -1,115 +0,0 @@ - - TESTCAVE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/assets/shader/entityVertexShader.glsl b/app/src/main/assets/shader/entityVertexShader.glsl index 19da5d9..b96c4d4 100644 --- a/app/src/main/assets/shader/entityVertexShader.glsl +++ b/app/src/main/assets/shader/entityVertexShader.glsl @@ -1,5 +1,6 @@ uniform mat4 mvpMatrix; uniform mat4 transformationMatrix; +uniform vec2 texCoordScaling; attribute vec4 position; attribute vec2 texCoords; @@ -11,5 +12,9 @@ void main() { vec4 transformatedPosition = transformationMatrix * position; gl_Position = mvpMatrix * transformatedPosition; pass_TexCoords = texCoords; + if(texCoordScaling.x != 0.0) + pass_TexCoords.x *= texCoordScaling.x; + if(texCoordScaling.y != 0.0) + pass_TexCoords.y *= texCoordScaling.y; } \ No newline at end of file diff --git a/app/src/main/assets/testlevelpack.xml b/app/src/main/assets/testlevelpack.xml deleted file mode 100644 index 844f2fb..0000000 --- a/app/src/main/assets/testlevelpack.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/Background.java b/app/src/main/java/com/example/julian/endlessroll/entities/Background.java index fc94d2d..4b4889a 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/Background.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/Background.java @@ -11,6 +11,7 @@ public class Background extends SynchronizedArrayList { private final float PART_WIDTH = 5; private final float HALF_PART_WIDTH = PART_WIDTH / 2; + private final float HEIGHT = 2.5f; private Texture texture; public Background(Texture texture) { @@ -27,7 +28,7 @@ public class Background extends SynchronizedArrayList { } private Entity createPart(float xLeftEdge) { - return new Entity(texture, new Vector(xLeftEdge + HALF_PART_WIDTH, 0), PART_WIDTH, 2); + return new Entity(texture, new Vector(xLeftEdge + HALF_PART_WIDTH, (HEIGHT - 2) / 2), PART_WIDTH, HEIGHT); } public void move(float x, float cameraX) { diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/Entity.java b/app/src/main/java/com/example/julian/endlessroll/entities/Entity.java index fd9eff7..06ed3be 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/Entity.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/Entity.java @@ -16,11 +16,13 @@ public class Entity extends Quad { private float alpha = 1.0f; private boolean destroyed; private DestroyEffect destroyEffect; + private Vector maxTexSize; public Entity(Texture texture, Vector position, float width, float height) { super(position, width, height); this.texture = texture; this.movement = new Vector(); + this.maxTexSize = new Vector(); } public void move(Vector movement) { @@ -91,4 +93,12 @@ public class Entity extends Quad { public int getTextureAtlasIndex() { return textureAtlasIndex; } + + public void setMaxTexSize(Vector maxTexSize) { + this.maxTexSize = maxTexSize; + } + + public Vector getMaxTexSize() { + return maxTexSize; + } } diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/Goal.java b/app/src/main/java/com/example/julian/endlessroll/entities/Goal.java index 4d64a63..d1dc4a0 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/Goal.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/Goal.java @@ -6,7 +6,8 @@ import com.example.julian.endlessroll.entities.textures.Texture; public class Goal extends Entity { public Goal(Texture texture) { - super(texture, new Vector(), 0.1f, 2); + super(texture, new Vector(), 0.1f, 3); + super.getMaxTexSize().setY(0.2f); } public void setGoalX(float goalX) { diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/Obstacle.java b/app/src/main/java/com/example/julian/endlessroll/entities/Obstacle.java index 342a8c5..a35566d 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/Obstacle.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/Obstacle.java @@ -3,7 +3,7 @@ package com.example.julian.endlessroll.entities; import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.levels.MoveComponent; import com.example.julian.endlessroll.levels.ObstacleData; -import com.example.julian.endlessroll.levels.worlds.Theme; +import com.example.julian.endlessroll.levels.worlds.World; import java.util.Random; @@ -23,8 +23,8 @@ public class Obstacle extends Entity { private float moveProgress; - public Obstacle(Theme theme, ObstacleData data, float terrainEdge) { - super(theme.getObstacleTexture(), new Vector(data.getX(), data.getY()), data.getWidth(), data.getHeight()); + public Obstacle(World world, ObstacleData data, float terrainEdge) { + super(world.getObstacleTexture(), new Vector(data.getX(), data.getY()), data.getWidth(), data.getHeight()); this.deadly = data.isDeadly(); this.floating = data.isFloating(); this.moving = data.isMoving(); diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/particles/Particle.java b/app/src/main/java/com/example/julian/endlessroll/entities/particles/Particle.java index a0af089..d45733d 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/particles/Particle.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/particles/Particle.java @@ -56,7 +56,7 @@ public class Particle extends Entity { public void update(Timer timer, float windStrength, float gravityStrength) { if (active) { - passedLifetime += timer.getFrameTime(); + passedLifetime += timer.getFrameTimeSeconds(); if (passedLifetime >= maxLife) active = false; float lifetimePercent = passedLifetime / maxLife; diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/particles/ParticleSource.java b/app/src/main/java/com/example/julian/endlessroll/entities/particles/ParticleSource.java index 1b9f980..25cd568 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/particles/ParticleSource.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/particles/ParticleSource.java @@ -56,18 +56,18 @@ public class ParticleSource { public void update(Timer timer) { if (alife) { - passedTime += timer.getFrameTime(); + passedTime += timer.getFrameTimeSeconds(); lifePercent = passedTime / maxTime; if (passedTime >= currentDelay) { - passedEmittPause += timer.getFrameTime(); + passedEmittPause += timer.getFrameTimeSeconds(); calcWindAndGravity(); while (passedEmittPause >= emittPause) { passedEmittPause -= emittPause; emitt(); } - passedSecond += timer.getFrameTime(); + passedSecond += timer.getFrameTimeSeconds(); if (passedSecond >= 1000) { passedSecond -= 1000; calcEmittPause(); @@ -89,7 +89,7 @@ public class ParticleSource { inactiveParticles.add(particle); iter.remove(); } else { - particle.move(new Vector(particle.getMovement()).mul(timer.getFrameTime() / 1000)); + particle.move(new Vector(particle.getMovement()).mul(timer.getFrameTimeSeconds() / 1000)); } } activeParticleLock.unlock(); diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/textures/TexturePack.java b/app/src/main/java/com/example/julian/endlessroll/entities/textures/TexturePack.java index ab4fc39..cfa600e 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/textures/TexturePack.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/textures/TexturePack.java @@ -5,7 +5,7 @@ import android.support.annotation.DrawableRes; import com.example.julian.endlessroll.R; import com.example.julian.endlessroll.entities.tools.ToolType; -import com.example.julian.endlessroll.levels.worlds.Theme; +import com.example.julian.endlessroll.levels.worlds.World; /** * Created by Julian on 05.12.2015. @@ -30,7 +30,7 @@ public class TexturePack { energy = loadAtlas(R.drawable.currency_energy_atlas, 2, 2); ToolType.loadAllToolTextures(this); - Theme.loadAllSpecificTextures(this); + World.loadAllSpecificTextures(this); } public Texture loadTexture(@DrawableRes int id) { diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/tileLists/TileList.java b/app/src/main/java/com/example/julian/endlessroll/entities/tileLists/TileList.java index 2f8f743..81a781a 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/tileLists/TileList.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/tileLists/TileList.java @@ -3,7 +3,7 @@ package com.example.julian.endlessroll.entities.tileLists; import com.example.julian.endlessroll.data.SynchronizedArrayList; import com.example.julian.endlessroll.entities.textures.Texture; import com.example.julian.endlessroll.levels.TileData; -import com.example.julian.endlessroll.levels.worlds.Theme; +import com.example.julian.endlessroll.levels.worlds.World; import java.util.ArrayList; import java.util.List; @@ -36,10 +36,10 @@ public class TileList extends SynchronizedArrayList { this.texture = texture; } - public void loadData(Theme theme, float edge, List tileData) { - this.texture = theme.getTerrainTexture(); + public void loadData(World world, float edge, List tileData) { + this.texture = world.getTerrainTexture(); if (type == Type.CEILING) - this.texture = theme.getCeilingTexture(); + this.texture = world.getCeilingTexture(); this.endless = false; super.clear(); for (TileData data : tileData) @@ -49,8 +49,8 @@ public class TileList extends SynchronizedArrayList { super.clear(); } - public void createEndless(Theme theme, float edge) { - loadData(theme, edge, new ArrayList()); + public void createEndless(World world, float edge) { + loadData(world, edge, new ArrayList()); super.add(createEndlessTile(0)); this.endless = true; } diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/tools/Bomb.java b/app/src/main/java/com/example/julian/endlessroll/entities/tools/Bomb.java index 2c53f32..39996c5 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/tools/Bomb.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/tools/Bomb.java @@ -30,7 +30,7 @@ public class Bomb extends Tool { @Override public void update(Timer timer) { super.update(timer); - delta += timer.getFrameTime(); + delta += timer.getFrameTimeSeconds(); if (delta >= 1000) exploding = true; } diff --git a/app/src/main/java/com/example/julian/endlessroll/entities/tools/ToolSlot.java b/app/src/main/java/com/example/julian/endlessroll/entities/tools/ToolSlot.java index 182df69..7c5ca4d 100644 --- a/app/src/main/java/com/example/julian/endlessroll/entities/tools/ToolSlot.java +++ b/app/src/main/java/com/example/julian/endlessroll/entities/tools/ToolSlot.java @@ -15,11 +15,6 @@ public class ToolSlot { this.locked = locked; } - public ToolSlot(String type) { - this.toolType = ToolType.valueOf(type); - this.locked = toolType == ToolType.NONE; - } - public ToolType getToolType() { return toolType; } diff --git a/app/src/main/java/com/example/julian/endlessroll/levels/LevelPack.java b/app/src/main/java/com/example/julian/endlessroll/levels/LevelPack.java index ea0789b..eff4e8a 100644 --- a/app/src/main/java/com/example/julian/endlessroll/levels/LevelPack.java +++ b/app/src/main/java/com/example/julian/endlessroll/levels/LevelPack.java @@ -1,6 +1,6 @@ package com.example.julian.endlessroll.levels; -import com.example.julian.endlessroll.levels.worlds.Theme; +import com.example.julian.endlessroll.levels.worlds.World; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; @@ -18,7 +18,7 @@ public class LevelPack { @Attribute private int id; @Element - private Theme theme; + private World world; @ElementList private List levels; @@ -33,8 +33,8 @@ public class LevelPack { return levels; } - public Theme getTheme() { - return theme; + public World getWorld() { + return world; } public void setName(String name) { diff --git a/app/src/main/java/com/example/julian/endlessroll/levels/worlds/Theme.java b/app/src/main/java/com/example/julian/endlessroll/levels/worlds/World.java similarity index 93% rename from app/src/main/java/com/example/julian/endlessroll/levels/worlds/Theme.java rename to app/src/main/java/com/example/julian/endlessroll/levels/worlds/World.java index e37c0ff..f533190 100644 --- a/app/src/main/java/com/example/julian/endlessroll/levels/worlds/Theme.java +++ b/app/src/main/java/com/example/julian/endlessroll/levels/worlds/World.java @@ -10,7 +10,7 @@ import com.example.julian.endlessroll.entities.textures.TexturePack; * Created by Julian on 14.11.2016. */ -public enum Theme { +public enum World { GRASSLANDS("Grasslands", R.drawable.previews_grass, R.drawable.backgrounds_game_grass, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_grass), TESTCAVE("Testcave", R.drawable.previews_grass, R.drawable.backgrounds_game_cave, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_cave), @@ -33,7 +33,7 @@ public enum Theme { private Texture ceiling; private Texture obstacle; - Theme(String name, @DrawableRes int previewId, @DrawableRes int backgroundId, @DrawableRes int terrainId, @DrawableRes int ceilingId, @DrawableRes int obstacleId) { + World(String name, @DrawableRes int previewId, @DrawableRes int backgroundId, @DrawableRes int terrainId, @DrawableRes int ceilingId, @DrawableRes int obstacleId) { this.name = name; this.previewId = previewId; this.backgroundId = backgroundId; @@ -43,8 +43,8 @@ public enum Theme { } public static void loadAllSpecificTextures(TexturePack texturePack) { - for (Theme theme : values()) - theme.loadSpecificTextures(texturePack); + for (World world : values()) + world.loadSpecificTextures(texturePack); } private void loadSpecificTextures(TexturePack texturePack) { diff --git a/app/src/main/java/com/example/julian/endlessroll/main/game/Camera.java b/app/src/main/java/com/example/julian/endlessroll/main/game/Camera.java new file mode 100644 index 0000000..9d6e118 --- /dev/null +++ b/app/src/main/java/com/example/julian/endlessroll/main/game/Camera.java @@ -0,0 +1,47 @@ +package com.example.julian.endlessroll.main.game; + +import com.example.julian.endlessroll.main.GameLog; + +/** + * Created by Julian on 22.05.2017. + */ + +public class Camera { + + private final float MOVE_SPEED_UP = 0.7f; + private final float MOVE_SPEED_DOWN = 0.7f; + private final float MAX_Y = 0.5f; + private final float MIN_Y = 0; + private float x, y; + + public void update(float playerY, Timer timer){ + float frameTime = timer.getFrameTimeSeconds() / 1000f; + float maxY = Math.min(playerY - 1 + 0.6f, MAX_Y); + if(playerY >= 0.5f){ + y += MOVE_SPEED_UP * frameTime; + if(y > maxY) + y = maxY; + } else if(y > MIN_Y){ + y -= MOVE_SPEED_DOWN * frameTime; + if(y < MIN_Y) + y = MIN_Y; + } + } + + public void moveX(float move){ + x += move; + } + + public void reset(){ + x = 0; + y = 0; + } + + public float getX() { + return x; + } + + public float getY() { + return y; + } +} diff --git a/app/src/main/java/com/example/julian/endlessroll/main/game/Game.java b/app/src/main/java/com/example/julian/endlessroll/main/game/Game.java index 6d5b4f4..5634822 100644 --- a/app/src/main/java/com/example/julian/endlessroll/main/game/Game.java +++ b/app/src/main/java/com/example/julian/endlessroll/main/game/Game.java @@ -111,10 +111,9 @@ public class Game extends Rendering { collectedStars.clear(); energyCollected = false; particleSystem.deleteAllSources(); - scene.loadLevel(level, levelPack.getTheme()); + scene.loadLevel(level, levelPack.getWorld()); player = scene.getPlayer(); - if (viewManager.isScreenSizeSet()) - viewManager.resetViews(); + viewManager.resetViews(user); currentTool = viewManager.toolButtonBar.getActiveButton().getToolType(); viewManager.startCountdown(); } @@ -131,7 +130,6 @@ public class Game extends Rendering { public void setScreenSize(int width, int height) { Vector screenSize = new Vector(width, height); scene.setScreenSize(screenSize); - viewManager.setScreenSize(screenSize); } @Override @@ -139,14 +137,11 @@ public class Game extends Rendering { particleSystem.update(timer); float playerProgress = 0; float playerSpeed = 0; - float playerY = 0; if (player != null) { playerProgress = player.getProgress(); playerSpeed = player.getSpeed(); - playerY = player.getPosition().y; } - viewManager.update(gameState == GameState.RUNNING, timer, playerProgress, playerSpeed, - playerY); + viewManager.update(gameState == GameState.RUNNING, timer, playerProgress, playerSpeed); switch (gameState) { case RUNNING: if (player.getPosition().y < -2f) { @@ -157,6 +152,7 @@ public class Game extends Rendering { onGoalReached(); return; } + scene.getCamera().update(player.getPosition().y, timer); if (currentTutorial != null) { currentTutorial.update(playerProgress); @@ -190,7 +186,7 @@ public class Game extends Rendering { } public void resetViews() { - viewManager.resetViews(); + viewManager.resetViews(user); } public void continueGame() { @@ -217,6 +213,8 @@ public class Game extends Rendering { } public void tryToPause() { + if(gameState == GameState.GAME_OVER || gameState == GameState.PAUSED) + return; viewManager.showShortMenu(); if (gameState == GameState.COUNTDOWN) viewManager.stopCountdown(); diff --git a/app/src/main/java/com/example/julian/endlessroll/main/game/GameScene.java b/app/src/main/java/com/example/julian/endlessroll/main/game/GameScene.java index 412ecfb..511a0e5 100644 --- a/app/src/main/java/com/example/julian/endlessroll/main/game/GameScene.java +++ b/app/src/main/java/com/example/julian/endlessroll/main/game/GameScene.java @@ -16,7 +16,7 @@ import com.example.julian.endlessroll.entities.tools.ToolType; import com.example.julian.endlessroll.levels.Level; import com.example.julian.endlessroll.levels.ObstacleData; import com.example.julian.endlessroll.levels.PositionData; -import com.example.julian.endlessroll.levels.worlds.Theme; +import com.example.julian.endlessroll.levels.worlds.World; import com.example.julian.endlessroll.main.GameLog; import java.util.ArrayList; @@ -29,7 +29,7 @@ import java.util.List; */ public class GameScene extends Scene { - private Theme currentTheme; + private World currentWorld; private CollisionDetector collisionDetector; private Goal goal; @@ -46,12 +46,12 @@ public class GameScene extends Scene { goal = new Goal(textures.goal); } - public void loadLevel(Level level, Theme theme) throws Exception { - this.currentTheme = theme; + public void loadLevel(Level level, World world) throws Exception { + this.currentWorld = world; reset(); - background.changeTexture(theme.getBackgroundTexture()); - terrain.loadData(theme, level.getTerrainEdge(), level.getTerrainTiles()); - ceiling.loadData(theme, level.getCeilingEdge(), level.getCeilingTiles()); + background.changeTexture(world.getBackgroundTexture()); + terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles()); + ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles()); super.add(goal); player.init(terrain.getEdge(), level.getStartSpeed(), level.getEndSpeed()); super.add(player); @@ -81,7 +81,7 @@ public class GameScene extends Scene { obstacles.clear(); tools.clear(); energy = null; - cameraX = 0; + camera.reset(); background.resetPosition(); } @@ -103,7 +103,7 @@ public class GameScene extends Scene { } public void addObstacle(ObstacleData data) { - Obstacle obstacle = new Obstacle(currentTheme, data, terrain.getEdge()); + Obstacle obstacle = new Obstacle(currentWorld, data, terrain.getEdge()); super.add(obstacle); obstacles.add(obstacle); } diff --git a/app/src/main/java/com/example/julian/endlessroll/main/game/Physics.java b/app/src/main/java/com/example/julian/endlessroll/main/game/Physics.java index 8c5fe85..62f8786 100644 --- a/app/src/main/java/com/example/julian/endlessroll/main/game/Physics.java +++ b/app/src/main/java/com/example/julian/endlessroll/main/game/Physics.java @@ -16,7 +16,6 @@ import com.example.julian.endlessroll.entities.tileLists.Terrain; import com.example.julian.endlessroll.entities.tileLists.Tile; import com.example.julian.endlessroll.entities.tools.Bomb; import com.example.julian.endlessroll.entities.tools.Tool; -import com.example.julian.endlessroll.main.GameLog; import java.util.ArrayList; import java.util.HashMap; @@ -36,7 +35,7 @@ public class Physics { } public void applyGravity(GameScene scene, Timer timer) { - float gravity = GRAVITY_FORCE * timer.getFrameTime(); + float gravity = GRAVITY_FORCE * timer.getFrameTimeSeconds(); scene.getPlayer().getMovement().y -= gravity; synchronized (scene.getTools()) { diff --git a/app/src/main/java/com/example/julian/endlessroll/main/game/Scene.java b/app/src/main/java/com/example/julian/endlessroll/main/game/Scene.java index 1985ace..eb81f8f 100644 --- a/app/src/main/java/com/example/julian/endlessroll/main/game/Scene.java +++ b/app/src/main/java/com/example/julian/endlessroll/main/game/Scene.java @@ -11,7 +11,7 @@ import com.example.julian.endlessroll.entities.particles.ParticleSystem; import com.example.julian.endlessroll.entities.textures.TexturePack; import com.example.julian.endlessroll.entities.tileLists.Ceiling; import com.example.julian.endlessroll.entities.tileLists.Terrain; -import com.example.julian.endlessroll.levels.worlds.Theme; +import com.example.julian.endlessroll.levels.worlds.World; import java.util.Iterator; @@ -20,8 +20,7 @@ import java.util.Iterator; */ public abstract class Scene extends SynchronizedArrayList { - public float cameraX; - + protected Camera camera; private Vector screenSize; private Entity playerArrow; @@ -35,10 +34,11 @@ public abstract class Scene extends SynchronizedArrayList { public Scene(TexturePack texturePack, ParticleSystem particleSystem) { this.particleSystem = particleSystem; setTexturePack(texturePack); + camera = new Camera(); playerArrow = new Entity(textures.playerArrow, new Vector(0, 0.9f), .2f, .2f); - background = new Background(Theme.GRASSLANDS.getBackgroundTexture()); - terrain = new Terrain(Theme.GRASSLANDS.getTerrainTexture()); - ceiling = new Ceiling(Theme.GRASSLANDS.getTerrainTexture()); + background = new Background(World.GRASSLANDS.getBackgroundTexture()); + terrain = new Terrain(World.GRASSLANDS.getTerrainTexture()); + ceiling = new Ceiling(World.GRASSLANDS.getTerrainTexture()); player = new Player(textures.player); } @@ -54,26 +54,27 @@ public abstract class Scene extends SynchronizedArrayList { if(entity instanceof AnimatedEntity) ((AnimatedEntity) entity).update(timer); Vector movement = entity.getMovement(); - Vector finalMovement = new Vector(movement).mul(timer.getFrameTime()); + Vector finalMovement = new Vector(movement).mul(timer.getFrameTimeSeconds()); entity.move(finalMovement); if (entity instanceof Obstacle) { Obstacle obstacle = (Obstacle) entity; if (obstacle.isMoving()) - obstacle.moveWithMoveComponent(timer.getFrameTime()); + obstacle.moveWithMoveComponent(timer.getFrameTimeSeconds()); } if (entity.isDestroyed() && entity.getDestroyEffect() != null) entity.getDestroyEffect().createEffect(particleSystem, new Vector(entity.getPosition()), new Vector(entity.getWidth(), entity.getHeight())).start(); if (entity.equals(player)) moveEnviroment(finalMovement.x); - else if (entity.getRightEdge() - cameraX < -3f || entity.isDestroyed()) { + else if (entity.getRightEdge() - camera.getX() < -3f || entity.isDestroyed()) { iterator.remove(); removeEntityFromAllLists(entity); } } } - if (player.getPosition().y >= player.RADIUS + 1) { + if (player.getPosition().y >= player.RADIUS + 1 + camera.getY()) { playerArrow.getPosition().x = player.getPosition().x; + playerArrow.getPosition().y = camera.getY() + 0.9f; if (!super.contains(playerArrow)) { super.add(playerArrow); } @@ -89,10 +90,10 @@ public abstract class Scene extends SynchronizedArrayList { protected abstract void removeEntityFromAllLists(Entity entity); private void moveEnviroment(float x) { - cameraX += x; - background.move(x * 0.95f, cameraX); - terrain.update(cameraX); - ceiling.update(cameraX); + camera.moveX(x); + background.move(x * 0.95f, camera.getX()); + terrain.update(camera.getX()); + ceiling.update(camera.getX()); } protected Vector calcWorldFromScreenCoords(float screenX, float screenY) throws Exception { @@ -100,7 +101,7 @@ public abstract class Scene extends SynchronizedArrayList { throw new Exception("ScreenSize not set"); float glCoordWidth = (2f * screenSize.x / screenSize.y); float x = ((screenX / screenSize.x) * 2f - 1f) * glCoordWidth / 2; - x += cameraX; + x += camera.getX(); float y = -((screenY / screenSize.y) * 2f - 1f); return new Vector(x, y); } @@ -132,4 +133,8 @@ public abstract class Scene extends SynchronizedArrayList { public ParticleSystem getParticleSystem() { return particleSystem; } + + public Camera getCamera() { + return camera; + } } diff --git a/app/src/main/java/com/example/julian/endlessroll/main/game/StartScene.java b/app/src/main/java/com/example/julian/endlessroll/main/game/StartScene.java index 0ef678f..00342e3 100644 --- a/app/src/main/java/com/example/julian/endlessroll/main/game/StartScene.java +++ b/app/src/main/java/com/example/julian/endlessroll/main/game/StartScene.java @@ -3,13 +3,13 @@ package com.example.julian.endlessroll.main.game; import com.example.julian.endlessroll.entities.Entity; import com.example.julian.endlessroll.entities.particles.ParticleSystem; import com.example.julian.endlessroll.entities.textures.TexturePack; -import com.example.julian.endlessroll.levels.worlds.Theme; +import com.example.julian.endlessroll.levels.worlds.World; public class StartScene extends Scene { public StartScene(TexturePack texturePack, ParticleSystem particleSystem) { super(texturePack, particleSystem); - terrain.createEndless(Theme.ICY_MOUNTAINS, -.8f); + terrain.createEndless(World.ICY_MOUNTAINS, -.8f); player.init(terrain.getEdge(), 0.5f, 0.5f); super.add(player); } diff --git a/app/src/main/java/com/example/julian/endlessroll/main/game/Timer.java b/app/src/main/java/com/example/julian/endlessroll/main/game/Timer.java index 3973c00..aa0a32d 100644 --- a/app/src/main/java/com/example/julian/endlessroll/main/game/Timer.java +++ b/app/src/main/java/com/example/julian/endlessroll/main/game/Timer.java @@ -31,7 +31,7 @@ public class Timer { } } - public float getFrameTime() { + public float getFrameTimeSeconds() { return delta; } diff --git a/app/src/main/java/com/example/julian/endlessroll/main/screens/StartScreen.java b/app/src/main/java/com/example/julian/endlessroll/main/screens/StartScreen.java index e185b7b..fc10f7c 100644 --- a/app/src/main/java/com/example/julian/endlessroll/main/screens/StartScreen.java +++ b/app/src/main/java/com/example/julian/endlessroll/main/screens/StartScreen.java @@ -83,7 +83,7 @@ public class StartScreen extends GLScreen implements View.OnClic // user.setStarCount(100); levelManager.unlockAllLevels(); levelManager.unlockAllPacks(); - user.gainEp(75); + user.gainEp(90); } else if (v.equals(lvUp)) { user.gainEp(100); } diff --git a/app/src/main/java/com/example/julian/endlessroll/rendering/MatrixCreator.java b/app/src/main/java/com/example/julian/endlessroll/rendering/MatrixCreator.java index 797bfc5..02af2ba 100644 --- a/app/src/main/java/com/example/julian/endlessroll/rendering/MatrixCreator.java +++ b/app/src/main/java/com/example/julian/endlessroll/rendering/MatrixCreator.java @@ -4,6 +4,7 @@ import android.opengl.Matrix; import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.entities.Entity; +import com.example.julian.endlessroll.main.game.Camera; /** * Created by Julian on 23.11.2015. @@ -17,13 +18,13 @@ public class MatrixCreator { this.height = height; } - public float[] createModelViewProjectionMatrix(float cameraX) { + public float[] createModelViewProjectionMatrix(Camera camera) { float[] mvpMatrix = new float[16]; float[] projectionMatrix = new float[16]; float[] viewMatrix = new float[16]; float ratio = width / height; - Matrix.frustumM(projectionMatrix, 0, -ratio + cameraX, ratio + cameraX, -1, 1, 1, 2); + Matrix.frustumM(projectionMatrix, 0, -ratio + camera.getX(), ratio + camera.getX(), -1 + camera.getY(), 1 + camera.getY(), 1, 2); Matrix.setLookAtM(viewMatrix, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0); Matrix.multiplyMM(mvpMatrix, 0, projectionMatrix, 0, viewMatrix, 0); return mvpMatrix; diff --git a/app/src/main/java/com/example/julian/endlessroll/rendering/renderer/GameRenderer.java b/app/src/main/java/com/example/julian/endlessroll/rendering/renderer/GameRenderer.java index de47c3d..46c722e 100644 --- a/app/src/main/java/com/example/julian/endlessroll/rendering/renderer/GameRenderer.java +++ b/app/src/main/java/com/example/julian/endlessroll/rendering/renderer/GameRenderer.java @@ -113,7 +113,7 @@ public class GameRenderer implements GLSurfaceView.Renderer { private void renderEntities(GL10 gl, Scene scene) { entityShader.start(); - entityShader.loadMVPMatrix(matrixCreator, scene.cameraX); + entityShader.loadMVPMatrix(matrixCreator, scene.getCamera()); synchronized (scene.getBackground()) { for (Entity backgroundPart : scene.getBackground()) renderEntity(gl, backgroundPart); @@ -131,12 +131,15 @@ public class GameRenderer implements GLSurfaceView.Renderer { entityShader.loadTransformationMatrix(matrixCreator, entity); entityShader.loadAlpha(entity.getAlpha()); entityShader.loadTextureAtlasInfos(entity.getTexture(), entity.getTextureAtlasIndex()); + float texScaleX = entity.getMaxTexSize().x == 0 ? 1 : entity.getWidth() / entity.getMaxTexSize().x; + float texScaleY = entity.getMaxTexSize().y == 0 ? 1 : entity.getHeight() / entity.getMaxTexSize().y; + entityShader.loadTexCoordScaling(texScaleX, texScaleY); quad.draw(); } private void renderTileList(GL10 gl, TileList tileList, Scene scene) { terrainShader.start(); - terrainShader.loadMVPMatrix(matrixCreator, scene.cameraX); + terrainShader.loadMVPMatrix(matrixCreator, scene.getCamera()); synchronized (tileList) { for (Tile tile : tileList) { gl.glActiveTexture(GL10.GL_TEXTURE0); diff --git a/app/src/main/java/com/example/julian/endlessroll/rendering/renderer/ParticleRenderer.java b/app/src/main/java/com/example/julian/endlessroll/rendering/renderer/ParticleRenderer.java index c93c41e..fa0949f 100644 --- a/app/src/main/java/com/example/julian/endlessroll/rendering/renderer/ParticleRenderer.java +++ b/app/src/main/java/com/example/julian/endlessroll/rendering/renderer/ParticleRenderer.java @@ -47,7 +47,7 @@ public class ParticleRenderer { GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); particleShader.start(); - particleShader.loadMVPMatrix(matrixCreator, scene.cameraX); + particleShader.loadMVPMatrix(matrixCreator, scene.getCamera()); synchronized (scene.getParticleSystem().getEffects()) { for (ParticleEffect effect : scene.getParticleSystem().getEffects()) { gl.glActiveTexture(GL10.GL_TEXTURE0); diff --git a/app/src/main/java/com/example/julian/endlessroll/rendering/shader/EntityShader.java b/app/src/main/java/com/example/julian/endlessroll/rendering/shader/EntityShader.java index 489226b..6a87e38 100644 --- a/app/src/main/java/com/example/julian/endlessroll/rendering/shader/EntityShader.java +++ b/app/src/main/java/com/example/julian/endlessroll/rendering/shader/EntityShader.java @@ -3,8 +3,10 @@ package com.example.julian.endlessroll.rendering.shader; import android.content.Context; import android.opengl.GLES20; +import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.entities.Entity; import com.example.julian.endlessroll.entities.textures.Texture; +import com.example.julian.endlessroll.main.game.Camera; import com.example.julian.endlessroll.rendering.MatrixCreator; /** @@ -17,6 +19,7 @@ public class EntityShader extends ShaderProgram { private int location_alpha; private int location_texAtlasSize; private int location_texAtlasIndex; + private int location_texCoordScaling; public EntityShader(Context context) throws Exception { super(context, "shader/entityVertexShader.glsl", "shader/entityFragmentShader.glsl"); @@ -29,10 +32,11 @@ public class EntityShader extends ShaderProgram { location_alpha = super.getUniformLocation("alpha"); location_texAtlasSize = super.getUniformLocation("texAtlasSize"); location_texAtlasIndex = super.getUniformLocation("texAtlasIndex"); + location_texCoordScaling = super.getUniformLocation("texCoordScaling"); } - public void loadMVPMatrix(MatrixCreator matrixCreator, float cameraX) { - float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(cameraX); + public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) { + float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera); GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0); } @@ -49,4 +53,9 @@ public class EntityShader extends ShaderProgram { GLES20.glUniform2f(location_texAtlasSize, texture.getAtlasWidth(), texture.getAtlasHeight()); GLES20.glUniform1f(location_texAtlasIndex, atlasIndex); } + + public void loadTexCoordScaling(float scalingX, float scalingY){ + GLES20.glUniform2f(location_texCoordScaling, scalingX, scalingY); + } + } diff --git a/app/src/main/java/com/example/julian/endlessroll/rendering/shader/ParticleShader.java b/app/src/main/java/com/example/julian/endlessroll/rendering/shader/ParticleShader.java index 9d3d2fc..fe0ece3 100644 --- a/app/src/main/java/com/example/julian/endlessroll/rendering/shader/ParticleShader.java +++ b/app/src/main/java/com/example/julian/endlessroll/rendering/shader/ParticleShader.java @@ -5,6 +5,7 @@ import android.opengl.GLES20; import com.example.julian.endlessroll.data.Color; import com.example.julian.endlessroll.entities.Entity; +import com.example.julian.endlessroll.main.game.Camera; import com.example.julian.endlessroll.rendering.MatrixCreator; /** @@ -27,8 +28,8 @@ public class ParticleShader extends ShaderProgram { location_color = super.getUniformLocation("color"); } - public void loadMVPMatrix(MatrixCreator matrixCreator, float cameraX) { - float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(cameraX); + public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) { + float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera); GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0); } diff --git a/app/src/main/java/com/example/julian/endlessroll/rendering/shader/TerrainShader.java b/app/src/main/java/com/example/julian/endlessroll/rendering/shader/TerrainShader.java index 95ba31e..a04c6b3 100644 --- a/app/src/main/java/com/example/julian/endlessroll/rendering/shader/TerrainShader.java +++ b/app/src/main/java/com/example/julian/endlessroll/rendering/shader/TerrainShader.java @@ -4,6 +4,7 @@ import android.content.Context; import android.opengl.GLES20; import com.example.julian.endlessroll.entities.Entity; +import com.example.julian.endlessroll.main.game.Camera; import com.example.julian.endlessroll.rendering.MatrixCreator; /** @@ -24,8 +25,8 @@ public class TerrainShader extends ShaderProgram { location_transformationMatrix = super.getUniformLocation("transformationMatrix"); } - public void loadMVPMatrix(MatrixCreator matrixCreator, float cameraX) { - float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(cameraX); + public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) { + float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera); GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0); } diff --git a/app/src/main/java/com/example/julian/endlessroll/user/ToolSlotSettings.java b/app/src/main/java/com/example/julian/endlessroll/user/ToolSlotSettings.java index ca9e019..a80c7e4 100644 --- a/app/src/main/java/com/example/julian/endlessroll/user/ToolSlotSettings.java +++ b/app/src/main/java/com/example/julian/endlessroll/user/ToolSlotSettings.java @@ -40,11 +40,11 @@ public class ToolSlotSettings extends ArrayList { } public int getLockedSlotCount() { - for (int i = super.size() - 1; i > 0; i--) { - if (!super.get(i).isLocked()) - return i + 1; - } - return 0; + int count = 0; + for (ToolSlot slot : this) + if(slot.isLocked()) + count ++; + return count; } } diff --git a/app/src/main/java/com/example/julian/endlessroll/user/User.java b/app/src/main/java/com/example/julian/endlessroll/user/User.java index 0423044..7042926 100644 --- a/app/src/main/java/com/example/julian/endlessroll/user/User.java +++ b/app/src/main/java/com/example/julian/endlessroll/user/User.java @@ -1,5 +1,7 @@ package com.example.julian.endlessroll.user; +import com.example.julian.endlessroll.main.GameLog; + /** * Created by Julian on 10.07.2016. */ diff --git a/app/src/main/java/com/example/julian/endlessroll/views/ToolButtonBar.java b/app/src/main/java/com/example/julian/endlessroll/views/ToolButtonBar.java index ec78f3e..c248560 100644 --- a/app/src/main/java/com/example/julian/endlessroll/views/ToolButtonBar.java +++ b/app/src/main/java/com/example/julian/endlessroll/views/ToolButtonBar.java @@ -8,6 +8,7 @@ import android.widget.LinearLayout; import android.widget.RelativeLayout; import com.example.julian.endlessroll.R; +import com.example.julian.endlessroll.main.GameLog; import com.example.julian.endlessroll.user.ToolSlotSettings; import com.example.julian.endlessroll.entities.tools.ToolType; import com.example.julian.endlessroll.main.game.Game; @@ -36,7 +37,6 @@ public class ToolButtonBar implements View.OnClickListener, Animation.AnimationL private Animation fadeIn, fadeOut; private Game game; - private ToolSlotSettings toolSlotSettings; private List buttons = new ArrayList<>(4); private RelativeLayout button1; private RelativeLayout button2; @@ -46,7 +46,6 @@ public class ToolButtonBar implements View.OnClickListener, Animation.AnimationL public ToolButtonBar(Game game, ToolSlotSettings toolSlotSettings, LinearLayout layout1) { this.game = game; - this.toolSlotSettings = toolSlotSettings; Context context = game.getContext(); fadeIn = AnimationUtils.loadAnimation(game.getContext(), R.anim.fade_in); fadeIn.setAnimationListener(this); @@ -80,14 +79,15 @@ public class ToolButtonBar implements View.OnClickListener, Animation.AnimationL button4.startAnimation(fadeOut); } - public void changeToolButtonTypes() { + public void changeToolButtonTypes(ToolSlotSettings toolSlotSettings) { for (int i = 0; i < 4; i++) { buttons.get(i).changeToolSlot(toolSlotSettings.get(i)); } } - public void reset() { - changeToolButtonTypes(); + public void reset(ToolSlotSettings toolSlotSettings) { + GameLog.i("Reset toolbuttonBar"); + changeToolButtonTypes(toolSlotSettings); for (int i = 0; i < 4; i++) { if (toolSlotSettings.get(i).getToolType() != ToolType.NONE) { setActive(i); diff --git a/app/src/main/java/com/example/julian/endlessroll/views/ViewManager.java b/app/src/main/java/com/example/julian/endlessroll/views/ViewManager.java index 7f68093..9de80b5 100644 --- a/app/src/main/java/com/example/julian/endlessroll/views/ViewManager.java +++ b/app/src/main/java/com/example/julian/endlessroll/views/ViewManager.java @@ -10,15 +10,16 @@ import android.widget.TextView; import com.example.julian.endlessroll.R; import com.example.julian.endlessroll.data.Vector; import com.example.julian.endlessroll.main.GameHandler; +import com.example.julian.endlessroll.main.game.Camera; import com.example.julian.endlessroll.main.game.Game; import com.example.julian.endlessroll.main.game.Timer; +import com.example.julian.endlessroll.user.User; /** * Created by Julian on 11.12.2015. */ public class ViewManager implements View.OnClickListener { - private Vector screenSize; private GameHandler gameViewHandler; private Game game; @@ -52,24 +53,16 @@ public class ViewManager implements View.OnClickListener { fpsView = (TextView) layout.findViewById(R.id.game_fps); } - public void setScreenSize(Vector screenSize) { - this.screenSize = screenSize; - } - - public boolean isScreenSizeSet() { - return screenSize != null; - } - @Override public void onClick(View v) { game.tryToPause(); } - public void resetViews() { + public void resetViews(final User user) { gameViewHandler.startInUiThread(new Runnable() { @Override public void run() { - toolButtonBar.reset(); + toolButtonBar.reset(user.getToolSlotSettings()); toolButtonBar.update(0); playerProgress.setText("0.0m"); playerSpeed.setText("0.0m/s"); @@ -104,7 +97,7 @@ public class ViewManager implements View.OnClickListener { countdown.stop(); } - public void update(final boolean gameRunning, final Timer timer, final float playerX, final float playerXMov, final float playerY) { + public void update(final boolean gameRunning, final Timer timer, final float playerX, final float playerXMov) { gameViewHandler.startInUiThread(new Runnable() { @Override public void run() { @@ -112,7 +105,7 @@ public class ViewManager implements View.OnClickListener { if (gameRunning) { playerProgress.setText(toMeters(playerX) + "m"); playerSpeed.setText(toMeters(playerXMov * 1000) + "m/s"); - toolButtonBar.update(timer.getFrameTime()); + toolButtonBar.update(timer.getFrameTimeSeconds()); } } }); diff --git a/app/src/main/java/com/example/julian/endlessroll/views/WorldButton.java b/app/src/main/java/com/example/julian/endlessroll/views/WorldButton.java index dff69d1..6ef9d71 100644 --- a/app/src/main/java/com/example/julian/endlessroll/views/WorldButton.java +++ b/app/src/main/java/com/example/julian/endlessroll/views/WorldButton.java @@ -10,7 +10,7 @@ import android.widget.TextView; import com.example.julian.endlessroll.R; import com.example.julian.endlessroll.levels.LevelPack; -import com.example.julian.endlessroll.levels.worlds.Theme; +import com.example.julian.endlessroll.levels.worlds.World; /** * Created by Julian on 01.08.2016. @@ -18,7 +18,7 @@ import com.example.julian.endlessroll.levels.worlds.Theme; public class WorldButton extends RelativeLayout { private LevelPack levelPack; - private Theme theme; + private World world; private TextView title; private ImageView previewImage; @@ -30,7 +30,7 @@ public class WorldButton extends RelativeLayout { public WorldButton(Context context, Typeface typeface, View.OnClickListener clickListener, LevelPack levelPack) { super(context); this.levelPack = levelPack; - this.theme = levelPack.getTheme(); + this.world = levelPack.getWorld(); LayoutInflater inflater = LayoutInflater.from(context); inflater.inflate(R.layout.world_button, this); @@ -52,7 +52,7 @@ public class WorldButton extends RelativeLayout { public void updateInformation() { title.setText(levelPack.getName()); - previewImage.setImageDrawable(getContext().getResources().getDrawable(theme.getPreviewId())); + previewImage.setImageDrawable(getContext().getResources().getDrawable(world.getPreviewId())); levelCount.setText(levelPack.getFinishedLevelCount() + "/" + levelPack.getLevels().size()); starCount.setText(levelPack.getCollectedStarCount() + "/" + levelPack.getAvailableStars()); energyCount.setText(levelPack.getCollectedEnergyCount() + "/" + levelPack.getAvailableEnergy()); diff --git a/app/src/main/res/drawable/goal.png b/app/src/main/res/drawable/goal.png index 9d4848eab32a0ac27e2a406bb6f681e12db90cfb..f1ad4b15f389995033f410f7b8d17c77ce7f9259 100644 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrcRgJkLn>~)y|a;*L4kw8vEcvQ zLe@-?$-i$o6$;@B>DZl`bHM#$B%AfRbEPbY6Ixnr8zst30$*-?`}Mow#^y!!o~8$@ zUpg+i{PN4kj}tjQOuVGI)cx-Msl`v`axySBFgP$MFbFVkFt9K%5ySl-oqOBw@)H@Q zJ3&<(4`#pKl_%r=T;SoXOSVg|n1uST`26#YM)SPCvDc>t6`d>Q%)MptBWci(*W-ShMR%kbSk@1Nh0 zulxMY_r1j&8*keNt@_DU#9qK&ao78R>D~9fck?+E{-`}Tt^P)* zap8JX&*8*q^QwE&3Nhz)zOM#)czgAgvk;d;f_AF#C02nt;SW!R%S3mC<{cMcc<(nF lu%iJxj8iN)dH-K{e}1n)=8CBS|A56VgQu&X%Q~loCIFX`FP{Ja diff --git a/app/src/main/res/layout/start_screen.xml b/app/src/main/res/layout/start_screen.xml index 8368a3a..87142f8 100644 --- a/app/src/main/res/layout/start_screen.xml +++ b/app/src/main/res/layout/start_screen.xml @@ -51,6 +51,6 @@ android:layout_marginLeft="48dp" android:layout_marginStart="48dp" android:text="Lv to 100" - android:visibility="gone"/> + android:visibility="visible"/> \ No newline at end of file diff --git a/build.gradle b/build.gradle index b78a0b8..d0aa704 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.1' + classpath 'com.android.tools.build:gradle:2.3.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files