diff --git a/.gitignore b/.gitignore
index 367f50f..afac906 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,12 @@
-.gradle
-*.apk
-output.json
-/local.properties
-/.idea/workspace.xml
-/.idea/libraries
-.DS_Store
-/build
-/captures
-/app/build
-/app/release
-*.iml
+.gradle
+*.apk
+output.json
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/captures
+/app/build
+/app/release
+*.iml
diff --git a/app/build.gradle b/app/build.gradle
index 78b6839..860cd45 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,44 +1,44 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:55 PM
- *
- */
-
-apply plugin: 'com.android.application'
-
-android {
- signingConfigs {
- }
- compileSdkVersion 26
- defaultConfig {
- applicationId 'de.frajul.endlessroll'
- minSdkVersion 14
- targetSdkVersion 26
- versionCode 9
- versionName '1.0'
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
- flavorDimensions 'releaseTargetGroup'
- productFlavors {
- flavorStoreRelease {
- dimension 'releaseTargetGroup'
- }
- flavorTest {
- dimension 'releaseTargetGroup'
- }
- }
-}
-
-dependencies {
- compile fileTree(include: ['*.jar'], dir: 'libs')
- testCompile 'junit:junit:4.12'
- compile 'com.android.support:appcompat-v7:26.1.0'
- compile 'com.google.android.gms:play-services-ads:15.0.1'
- compile files('libs/simple-xml-2.7.1.jar')
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:55 PM
+ *
+ */
+
+apply plugin: 'com.android.application'
+
+android {
+ signingConfigs {
+ }
+ compileSdkVersion 26
+ defaultConfig {
+ applicationId 'de.frajul.endlessroll'
+ minSdkVersion 14
+ targetSdkVersion 26
+ versionCode 9
+ versionName '1.0'
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+ flavorDimensions 'releaseTargetGroup'
+ productFlavors {
+ flavorStoreRelease {
+ dimension 'releaseTargetGroup'
+ }
+ flavorTest {
+ dimension 'releaseTargetGroup'
+ }
+ }
+}
+
+dependencies {
+ compile fileTree(include: ['*.jar'], dir: 'libs')
+ testCompile 'junit:junit:4.12'
+ compile 'com.android.support:appcompat-v7:26.1.0'
+ compile 'com.google.android.gms:play-services-ads:15.0.1'
+ compile files('libs/simple-xml-2.7.1.jar')
+}
diff --git a/app/build/intermediates/assets/debug/shader/entityFragmentShader.glsl b/app/build/intermediates/assets/debug/shader/entityFragmentShader.glsl
index 8aa6426..3529ba3 100644
--- a/app/build/intermediates/assets/debug/shader/entityFragmentShader.glsl
+++ b/app/build/intermediates/assets/debug/shader/entityFragmentShader.glsl
@@ -1,36 +1,36 @@
-precision mediump float;
-
-uniform sampler2D texture;
-uniform float alpha;
-uniform vec2 texAtlasSize;
-uniform float texAtlasIndex;
-
-const float clampBorder = 0.005;
-
-varying vec2 pass_TexCoords;
-
-vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex);
-
-void main() {
-
- vec2 clampedTexCoords = pass_TexCoords;
- if(texAtlasSize.x > 1.0 || texAtlasSize.y > 1.0)
- clampedTexCoords = clamp(pass_TexCoords, clampBorder, 1.0 - clampBorder);
-
- vec2 texAtlasCoords = getTexCoordsInAtlas(clampedTexCoords, texAtlasIndex);
- gl_FragColor = texture2D(texture, texAtlasCoords);
- gl_FragColor.a = min(gl_FragColor.a, alpha);
- gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
-
-}
-
-vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex){
-
- vec2 texAtlasCoords = vec2(0.0, 0.0);
- texAtlasCoords.x = mod(clampedTexCoords.x, 1.0) / texAtlasSize.x;
- texAtlasCoords.x += mod(atlasIndex, texAtlasSize.x) / texAtlasSize.x;
- texAtlasCoords.y = mod(clampedTexCoords.y, 1.0) / texAtlasSize.y;
- texAtlasCoords.y += floor(atlasIndex / texAtlasSize.y) / texAtlasSize.y;
- return texAtlasCoords;
-
+precision mediump float;
+
+uniform sampler2D texture;
+uniform float alpha;
+uniform vec2 texAtlasSize;
+uniform float texAtlasIndex;
+
+const float clampBorder = 0.005;
+
+varying vec2 pass_TexCoords;
+
+vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex);
+
+void main() {
+
+ vec2 clampedTexCoords = pass_TexCoords;
+ if(texAtlasSize.x > 1.0 || texAtlasSize.y > 1.0)
+ clampedTexCoords = clamp(pass_TexCoords, clampBorder, 1.0 - clampBorder);
+
+ vec2 texAtlasCoords = getTexCoordsInAtlas(clampedTexCoords, texAtlasIndex);
+ gl_FragColor = texture2D(texture, texAtlasCoords);
+ gl_FragColor.a = min(gl_FragColor.a, alpha);
+ gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
+
+}
+
+vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex){
+
+ vec2 texAtlasCoords = vec2(0.0, 0.0);
+ texAtlasCoords.x = mod(clampedTexCoords.x, 1.0) / texAtlasSize.x;
+ texAtlasCoords.x += mod(atlasIndex, texAtlasSize.x) / texAtlasSize.x;
+ texAtlasCoords.y = mod(clampedTexCoords.y, 1.0) / texAtlasSize.y;
+ texAtlasCoords.y += floor(atlasIndex / texAtlasSize.y) / texAtlasSize.y;
+ return texAtlasCoords;
+
}
\ 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 5f7af0d..f8f0233 100644
--- a/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl
+++ b/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl
@@ -1,23 +1,23 @@
-uniform mat4 mvpMatrix;
-uniform mat4 transformationMatrix;
-uniform vec2 texCoordScaling;
-
-attribute vec4 position;
-attribute vec2 texCoords;
-
-varying vec2 pass_TexCoords;
-
-void main() {
-
-
- vec2 scale = vec2(1.0, 1.0);
- if(texCoordScaling.x != 0.0)
- scale.x = texCoordScaling.x;
- if(texCoordScaling.y != 0.0)
- scale.y *= texCoordScaling.y;
-
- vec4 transformatedPosition = transformationMatrix * position;
- gl_Position = mvpMatrix * transformatedPosition;
- pass_TexCoords = scale * texCoords;
-
+uniform mat4 mvpMatrix;
+uniform mat4 transformationMatrix;
+uniform vec2 texCoordScaling;
+
+attribute vec4 position;
+attribute vec2 texCoords;
+
+varying vec2 pass_TexCoords;
+
+void main() {
+
+
+ vec2 scale = vec2(1.0, 1.0);
+ if(texCoordScaling.x != 0.0)
+ scale.x = texCoordScaling.x;
+ if(texCoordScaling.y != 0.0)
+ scale.y *= texCoordScaling.y;
+
+ vec4 transformatedPosition = transformationMatrix * position;
+ gl_Position = mvpMatrix * transformatedPosition;
+ pass_TexCoords = scale * texCoords;
+
}
\ No newline at end of file
diff --git a/app/build/intermediates/assets/debug/shader/particleFragmentShader.glsl b/app/build/intermediates/assets/debug/shader/particleFragmentShader.glsl
index cb7b5e6..56ecd93 100644
--- a/app/build/intermediates/assets/debug/shader/particleFragmentShader.glsl
+++ b/app/build/intermediates/assets/debug/shader/particleFragmentShader.glsl
@@ -1,27 +1,27 @@
-precision mediump float;
-
-uniform sampler2D texture;
-uniform vec3 color;
-uniform float alpha;
-
-varying vec2 pass_TexCoords;
-
-vec3 saturateColor(in vec3 color, in float a);
-
-void main() {
-
- float a = texture2D(texture, pass_TexCoords).a * alpha;
- vec3 black = vec3(0.0, 0.0, 0.0);
- gl_FragColor.rgb = mix(color, black, 1.0 - a);
- gl_FragColor.a = a;
-
-}
-
-vec3 saturateColor(in vec3 color, in float a){
-
- float grayscale = (color.r * 0.299 + color.g * 0.587 + color. b * 0.114);
- float alpha = ((1.1 - a) * 0.5) * 40.0;
-
- return alpha * color + (1.0 - alpha) * vec3(grayscale, grayscale, grayscale);
-
+precision mediump float;
+
+uniform sampler2D texture;
+uniform vec3 color;
+uniform float alpha;
+
+varying vec2 pass_TexCoords;
+
+vec3 saturateColor(in vec3 color, in float a);
+
+void main() {
+
+ float a = texture2D(texture, pass_TexCoords).a * alpha;
+ vec3 black = vec3(0.0, 0.0, 0.0);
+ gl_FragColor.rgb = mix(color, black, 1.0 - a);
+ gl_FragColor.a = a;
+
+}
+
+vec3 saturateColor(in vec3 color, in float a){
+
+ float grayscale = (color.r * 0.299 + color.g * 0.587 + color. b * 0.114);
+ float alpha = ((1.1 - a) * 0.5) * 40.0;
+
+ return alpha * color + (1.0 - alpha) * vec3(grayscale, grayscale, grayscale);
+
}
\ No newline at end of file
diff --git a/app/build/intermediates/assets/debug/shader/simpleFragmentShader.glsl b/app/build/intermediates/assets/debug/shader/simpleFragmentShader.glsl
index a60842a..c785f46 100644
--- a/app/build/intermediates/assets/debug/shader/simpleFragmentShader.glsl
+++ b/app/build/intermediates/assets/debug/shader/simpleFragmentShader.glsl
@@ -1,12 +1,12 @@
-precision mediump float;
-
-uniform sampler2D texture;
-
-varying vec2 pass_TexCoords;
-
-void main() {
-
- gl_FragColor = texture2D(texture, pass_TexCoords);
- gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
-
+precision mediump float;
+
+uniform sampler2D texture;
+
+varying vec2 pass_TexCoords;
+
+void main() {
+
+ gl_FragColor = texture2D(texture, pass_TexCoords);
+ gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
+
}
\ No newline at end of file
diff --git a/app/build/intermediates/assets/debug/shader/simpleVertexShader.glsl b/app/build/intermediates/assets/debug/shader/simpleVertexShader.glsl
index 7fee205..e2b0586 100644
--- a/app/build/intermediates/assets/debug/shader/simpleVertexShader.glsl
+++ b/app/build/intermediates/assets/debug/shader/simpleVertexShader.glsl
@@ -1,12 +1,12 @@
-attribute vec4 position;
-attribute vec2 texCoords;
-
-varying vec2 pass_TexCoords;
-
-void main() {
-
- gl_Position = position;
- pass_TexCoords.x = texCoords.x;
- pass_TexCoords.y = -texCoords.y;
-
+attribute vec4 position;
+attribute vec2 texCoords;
+
+varying vec2 pass_TexCoords;
+
+void main() {
+
+ gl_Position = position;
+ pass_TexCoords.x = texCoords.x;
+ pass_TexCoords.y = -texCoords.y;
+
}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 0550155..598c2c8 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -1,17 +1,17 @@
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in C:\Users\Julian\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in C:\Users\Julian\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/app/src/androidTest/java/de/frajul/endlessroll/ApplicationTest.java b/app/src/androidTest/java/de/frajul/endlessroll/ApplicationTest.java
index c927f3e..98e009c 100644
--- a/app/src/androidTest/java/de/frajul/endlessroll/ApplicationTest.java
+++ b/app/src/androidTest/java/de/frajul/endlessroll/ApplicationTest.java
@@ -1,20 +1,20 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll;
-
-import android.app.Application;
-import android.test.ApplicationTestCase;
-
-/**
- * Testing Fundamentals
- */
-public class ApplicationTest extends ApplicationTestCase {
- public ApplicationTest() {
- super(Application.class);
- }
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll;
+
+import android.app.Application;
+import android.test.ApplicationTestCase;
+
+/**
+ * Testing Fundamentals
+ */
+public class ApplicationTest extends ApplicationTestCase {
+ public ApplicationTest() {
+ super(Application.class);
+ }
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c2afe6a..53d76d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,36 +1,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/shader/entityFragmentShader.glsl b/app/src/main/assets/shader/entityFragmentShader.glsl
index bddc330..fb20eb2 100644
--- a/app/src/main/assets/shader/entityFragmentShader.glsl
+++ b/app/src/main/assets/shader/entityFragmentShader.glsl
@@ -1,42 +1,42 @@
-precision mediump float;
-
-uniform sampler2D texture;
-uniform float alpha;
-uniform vec2 texAtlasSize;
-uniform float texAtlasIndex;
-uniform float hasColor;
-uniform vec3 color;
-
-const float clampBorder = 0.005;
-
-varying vec2 pass_TexCoords;
-
-vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex);
-
-void main() {
-
- vec2 clampedTexCoords = pass_TexCoords;
- if(texAtlasSize.x > 1.0 || texAtlasSize.y > 1.0)
- clampedTexCoords = clamp(pass_TexCoords, clampBorder, 1.0 - clampBorder);
-
- vec2 texAtlasCoords = getTexCoordsInAtlas(clampedTexCoords, texAtlasIndex);
- gl_FragColor = texture2D(texture, texAtlasCoords);
- gl_FragColor.a = min(gl_FragColor.a, alpha);
- if(hasColor == 1.0){
- gl_FragColor.rgb = color;
- } else {
- gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
- }
-
-}
-
-vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex){
-
- vec2 texAtlasCoords = vec2(0.0, 0.0);
- texAtlasCoords.x = mod(clampedTexCoords.x, 1.0) / texAtlasSize.x;
- texAtlasCoords.x += mod(atlasIndex, texAtlasSize.x) / texAtlasSize.x;
- texAtlasCoords.y = mod(clampedTexCoords.y, 1.0) / texAtlasSize.y;
- texAtlasCoords.y += floor(atlasIndex / texAtlasSize.y) / texAtlasSize.y;
- return texAtlasCoords;
-
+precision mediump float;
+
+uniform sampler2D texture;
+uniform float alpha;
+uniform vec2 texAtlasSize;
+uniform float texAtlasIndex;
+uniform float hasColor;
+uniform vec3 color;
+
+const float clampBorder = 0.005;
+
+varying vec2 pass_TexCoords;
+
+vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex);
+
+void main() {
+
+ vec2 clampedTexCoords = pass_TexCoords;
+ if(texAtlasSize.x > 1.0 || texAtlasSize.y > 1.0)
+ clampedTexCoords = clamp(pass_TexCoords, clampBorder, 1.0 - clampBorder);
+
+ vec2 texAtlasCoords = getTexCoordsInAtlas(clampedTexCoords, texAtlasIndex);
+ gl_FragColor = texture2D(texture, texAtlasCoords);
+ gl_FragColor.a = min(gl_FragColor.a, alpha);
+ if(hasColor == 1.0){
+ gl_FragColor.rgb = color;
+ } else {
+ gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
+ }
+
+}
+
+vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex){
+
+ vec2 texAtlasCoords = vec2(0.0, 0.0);
+ texAtlasCoords.x = mod(clampedTexCoords.x, 1.0) / texAtlasSize.x;
+ texAtlasCoords.x += mod(atlasIndex, texAtlasSize.x) / texAtlasSize.x;
+ texAtlasCoords.y = mod(clampedTexCoords.y, 1.0) / texAtlasSize.y;
+ texAtlasCoords.y += floor(atlasIndex / texAtlasSize.y) / texAtlasSize.y;
+ return texAtlasCoords;
+
}
\ 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 5f7af0d..f8f0233 100644
--- a/app/src/main/assets/shader/entityVertexShader.glsl
+++ b/app/src/main/assets/shader/entityVertexShader.glsl
@@ -1,23 +1,23 @@
-uniform mat4 mvpMatrix;
-uniform mat4 transformationMatrix;
-uniform vec2 texCoordScaling;
-
-attribute vec4 position;
-attribute vec2 texCoords;
-
-varying vec2 pass_TexCoords;
-
-void main() {
-
-
- vec2 scale = vec2(1.0, 1.0);
- if(texCoordScaling.x != 0.0)
- scale.x = texCoordScaling.x;
- if(texCoordScaling.y != 0.0)
- scale.y *= texCoordScaling.y;
-
- vec4 transformatedPosition = transformationMatrix * position;
- gl_Position = mvpMatrix * transformatedPosition;
- pass_TexCoords = scale * texCoords;
-
+uniform mat4 mvpMatrix;
+uniform mat4 transformationMatrix;
+uniform vec2 texCoordScaling;
+
+attribute vec4 position;
+attribute vec2 texCoords;
+
+varying vec2 pass_TexCoords;
+
+void main() {
+
+
+ vec2 scale = vec2(1.0, 1.0);
+ if(texCoordScaling.x != 0.0)
+ scale.x = texCoordScaling.x;
+ if(texCoordScaling.y != 0.0)
+ scale.y *= texCoordScaling.y;
+
+ vec4 transformatedPosition = transformationMatrix * position;
+ gl_Position = mvpMatrix * transformatedPosition;
+ pass_TexCoords = scale * texCoords;
+
}
\ No newline at end of file
diff --git a/app/src/main/assets/shader/guiFragmentShader.glsl b/app/src/main/assets/shader/guiFragmentShader.glsl
index 40e8b48..679892a 100644
--- a/app/src/main/assets/shader/guiFragmentShader.glsl
+++ b/app/src/main/assets/shader/guiFragmentShader.glsl
@@ -1,53 +1,53 @@
-precision mediump float;
-
-uniform sampler2D texture;
-uniform float useCustomColor;
-uniform vec3 color;
-uniform float alpha;
-uniform float roundValue;
-uniform float visibleAmount;
-
-varying vec2 pass_TexCoords;
-
-float isInRoundedRange();
-float isInVisiblePart();
-
-void main() {
-
- if(isInRoundedRange() == 1.0 && isInVisiblePart() == 1.0){
- if(useCustomColor == 1.0){
- gl_FragColor.rgb = color;
- gl_FragColor.a = alpha;
- } else {
- gl_FragColor = texture2D(texture, pass_TexCoords);
- gl_FragColor.a = min(gl_FragColor.a, alpha);
- }
- gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
- } else {
- gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
- }
-
-}
-
-float isInRoundedRange(){
- if(roundValue == 0.0)
- return 1.0;
- float relativeX = abs((pass_TexCoords.x- 0.5));
- float relativeY = abs(pass_TexCoords.y - 0.5);
- float circleX = abs(roundValue * 0.5 - 0.5);
- float circleY = abs(roundValue * 0.5 - 0.5);
- if(relativeX < circleX || relativeY < circleY)
- return 1.0;
- float radius = roundValue * 0.5;
- float distX = relativeX - circleX;
- float distY = relativeY - circleY;
- if(distX * distX + distY * distY > radius * radius)
- return 0.0;
- return 1.0;
-}
-
-float isInVisiblePart(){
- if(pass_TexCoords.x >= visibleAmount)
- return 1.0;
- return 0.0;
+precision mediump float;
+
+uniform sampler2D texture;
+uniform float useCustomColor;
+uniform vec3 color;
+uniform float alpha;
+uniform float roundValue;
+uniform float visibleAmount;
+
+varying vec2 pass_TexCoords;
+
+float isInRoundedRange();
+float isInVisiblePart();
+
+void main() {
+
+ if(isInRoundedRange() == 1.0 && isInVisiblePart() == 1.0){
+ if(useCustomColor == 1.0){
+ gl_FragColor.rgb = color;
+ gl_FragColor.a = alpha;
+ } else {
+ gl_FragColor = texture2D(texture, pass_TexCoords);
+ gl_FragColor.a = min(gl_FragColor.a, alpha);
+ }
+ gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
+ } else {
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
+ }
+
+}
+
+float isInRoundedRange(){
+ if(roundValue == 0.0)
+ return 1.0;
+ float relativeX = abs((pass_TexCoords.x- 0.5));
+ float relativeY = abs(pass_TexCoords.y - 0.5);
+ float circleX = abs(roundValue * 0.5 - 0.5);
+ float circleY = abs(roundValue * 0.5 - 0.5);
+ if(relativeX < circleX || relativeY < circleY)
+ return 1.0;
+ float radius = roundValue * 0.5;
+ float distX = relativeX - circleX;
+ float distY = relativeY - circleY;
+ if(distX * distX + distY * distY > radius * radius)
+ return 0.0;
+ return 1.0;
+}
+
+float isInVisiblePart(){
+ if(pass_TexCoords.x >= visibleAmount)
+ return 1.0;
+ return 0.0;
}
\ No newline at end of file
diff --git a/app/src/main/assets/shader/guiVertexShader.glsl b/app/src/main/assets/shader/guiVertexShader.glsl
index 19da5d9..f2fe821 100644
--- a/app/src/main/assets/shader/guiVertexShader.glsl
+++ b/app/src/main/assets/shader/guiVertexShader.glsl
@@ -1,15 +1,15 @@
-uniform mat4 mvpMatrix;
-uniform mat4 transformationMatrix;
-
-attribute vec4 position;
-attribute vec2 texCoords;
-
-varying vec2 pass_TexCoords;
-
-void main() {
-
- vec4 transformatedPosition = transformationMatrix * position;
- gl_Position = mvpMatrix * transformatedPosition;
- pass_TexCoords = texCoords;
-
+uniform mat4 mvpMatrix;
+uniform mat4 transformationMatrix;
+
+attribute vec4 position;
+attribute vec2 texCoords;
+
+varying vec2 pass_TexCoords;
+
+void main() {
+
+ vec4 transformatedPosition = transformationMatrix * position;
+ gl_Position = mvpMatrix * transformatedPosition;
+ pass_TexCoords = texCoords;
+
}
\ No newline at end of file
diff --git a/app/src/main/assets/shader/obstacleFragmentShader.glsl b/app/src/main/assets/shader/obstacleFragmentShader.glsl
index 20c2110..cbb64d6 100644
--- a/app/src/main/assets/shader/obstacleFragmentShader.glsl
+++ b/app/src/main/assets/shader/obstacleFragmentShader.glsl
@@ -1,115 +1,115 @@
-precision mediump float;
-
-uniform sampler2D texture;
-uniform float alpha;
-uniform vec2 texAtlasSize;
-uniform vec2 gridSize;
-uniform float deadly;
-uniform float floating;
-uniform float bombSelected;
-uniform float bombExplosionState;
-
-varying vec2 pass_TexCoords;
-
-const float clampBorder = 0.05;
-
-float itermod(in float x, in float y);
-vec2 getInGridPos();
-vec2 getTexCoordsInGridSquare();
-vec2 getTexCoordsInAtlas(in vec2 texCoords, in float atlasIndex);
-
-void main() {
-
- vec2 gridPos = getInGridPos();
- float index = 0.0;
-
- bool top = gridPos.y == 0.0;
- bool bottom = gridPos.y == gridSize.y - 1.0;
- bool left = gridPos.x == 0.0;
- bool right = gridPos.x == gridSize.x - 1.0;
-
- if(top){
- if(left)
- index = 5.0 + itermod(gridSize.x, 2.0) + itermod(gridSize.y, 2.0);
- else if(right)
- index = 21.0 + itermod(gridSize.x, 2.0) + itermod(gridSize.y, 2.0);
- else
- index = itermod(gridPos.x, 3.0);
- if(deadly == 1.0)
- index += 8.0;
- } else if(bottom){
- if(left)
- index = 37.0 + itermod(gridSize.x, 2.0) + itermod(gridSize.y, 2.0);
- else if(right)
- index = 53.0 + itermod(gridSize.x, 2.0) + itermod(gridSize.y, 2.0);
- else
- index = 16.0 + itermod(gridPos.x, 3.0);
- if(floating == 1.0)
- index += 8.0;
- } else if(left){
- index = 32.0 + itermod(gridPos.y, 3.0);
- } else if(gridPos.x == gridSize.x - 1.0){
- index = 40.0 + itermod(gridPos.y, 3.0);
- } else{
- index = 48.0 + itermod(gridPos.x, 2.0) + itermod(gridPos.y, 2.0);
- }
-
- vec2 texCoordsInGridSquare = getTexCoordsInGridSquare();
- texCoordsInGridSquare = clamp(texCoordsInGridSquare, clampBorder, 1.0 - clampBorder);
- vec2 texCoordsInAtlas = getTexCoordsInAtlas(texCoordsInGridSquare, index);
- gl_FragColor = texture2D(texture, texCoordsInAtlas);
- gl_FragColor.a = min(gl_FragColor.a, alpha);
- gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
-
- if(bombSelected == 1.0 || bombExplosionState >= 0.0){
- vec3 red = vec3(1.0, 0.0, 0.0);
- float mixValue = 0.4;
- gl_FragColor.r += 0.2 * bombExplosionState;
- gl_FragColor.rgb = mix(gl_FragColor.rgb, red, mixValue);
- }
-
-}
-
-float itermod(in float x, in float y){
-
- while(x - y >= 0.0){
- x -= y;
- }
- return x;
-
-}
-
-vec2 getInGridPos(){
-
- float gridX = floor(pass_TexCoords.x * gridSize.x);
- float gridY = floor(pass_TexCoords.y * gridSize.y);
- if(pass_TexCoords.y == 1.0)
- gridY -= 1.0;
- if(pass_TexCoords.x == 1.0)
- gridX -= 1.0;
- return vec2(gridX, gridY);
-
-}
-
-vec2 getTexCoordsInGridSquare(){
-
- float x = mod(pass_TexCoords.x, 1.0 / gridSize.x) * gridSize.x;
- float y = mod(pass_TexCoords.y, 1.0 / gridSize.y) * gridSize.y;
- if(pass_TexCoords.x == 1.0)
- x = 1.0;
- if(pass_TexCoords.y == 1.0)
- y = 1.0;
- return vec2(x, y);
-
-}
-
-vec2 getTexCoordsInAtlas(in vec2 texCoords, in float atlasIndex){
-
- vec2 texAtlasCoords = vec2(0.0, 0.0);
- texAtlasCoords.x = mod(texCoords.x, 1.0) / texAtlasSize.x;
- texAtlasCoords.x += mod(atlasIndex, texAtlasSize.x) / texAtlasSize.x;
- texAtlasCoords.y = mod(texCoords.y, 1.0) / texAtlasSize.y;
- texAtlasCoords.y += floor(atlasIndex / texAtlasSize.y) / texAtlasSize.y;
- return texAtlasCoords;
-
+precision mediump float;
+
+uniform sampler2D texture;
+uniform float alpha;
+uniform vec2 texAtlasSize;
+uniform vec2 gridSize;
+uniform float deadly;
+uniform float floating;
+uniform float bombSelected;
+uniform float bombExplosionState;
+
+varying vec2 pass_TexCoords;
+
+const float clampBorder = 0.05;
+
+float itermod(in float x, in float y);
+vec2 getInGridPos();
+vec2 getTexCoordsInGridSquare();
+vec2 getTexCoordsInAtlas(in vec2 texCoords, in float atlasIndex);
+
+void main() {
+
+ vec2 gridPos = getInGridPos();
+ float index = 0.0;
+
+ bool top = gridPos.y == 0.0;
+ bool bottom = gridPos.y == gridSize.y - 1.0;
+ bool left = gridPos.x == 0.0;
+ bool right = gridPos.x == gridSize.x - 1.0;
+
+ if(top){
+ if(left)
+ index = 5.0 + itermod(gridSize.x, 2.0) + itermod(gridSize.y, 2.0);
+ else if(right)
+ index = 21.0 + itermod(gridSize.x, 2.0) + itermod(gridSize.y, 2.0);
+ else
+ index = itermod(gridPos.x, 3.0);
+ if(deadly == 1.0)
+ index += 8.0;
+ } else if(bottom){
+ if(left)
+ index = 37.0 + itermod(gridSize.x, 2.0) + itermod(gridSize.y, 2.0);
+ else if(right)
+ index = 53.0 + itermod(gridSize.x, 2.0) + itermod(gridSize.y, 2.0);
+ else
+ index = 16.0 + itermod(gridPos.x, 3.0);
+ if(floating == 1.0)
+ index += 8.0;
+ } else if(left){
+ index = 32.0 + itermod(gridPos.y, 3.0);
+ } else if(gridPos.x == gridSize.x - 1.0){
+ index = 40.0 + itermod(gridPos.y, 3.0);
+ } else{
+ index = 48.0 + itermod(gridPos.x, 2.0) + itermod(gridPos.y, 2.0);
+ }
+
+ vec2 texCoordsInGridSquare = getTexCoordsInGridSquare();
+ texCoordsInGridSquare = clamp(texCoordsInGridSquare, clampBorder, 1.0 - clampBorder);
+ vec2 texCoordsInAtlas = getTexCoordsInAtlas(texCoordsInGridSquare, index);
+ gl_FragColor = texture2D(texture, texCoordsInAtlas);
+ gl_FragColor.a = min(gl_FragColor.a, alpha);
+ gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
+
+ if(bombSelected == 1.0 || bombExplosionState >= 0.0){
+ vec3 red = vec3(1.0, 0.0, 0.0);
+ float mixValue = 0.4;
+ gl_FragColor.r += 0.2 * bombExplosionState;
+ gl_FragColor.rgb = mix(gl_FragColor.rgb, red, mixValue);
+ }
+
+}
+
+float itermod(in float x, in float y){
+
+ while(x - y >= 0.0){
+ x -= y;
+ }
+ return x;
+
+}
+
+vec2 getInGridPos(){
+
+ float gridX = floor(pass_TexCoords.x * gridSize.x);
+ float gridY = floor(pass_TexCoords.y * gridSize.y);
+ if(pass_TexCoords.y == 1.0)
+ gridY -= 1.0;
+ if(pass_TexCoords.x == 1.0)
+ gridX -= 1.0;
+ return vec2(gridX, gridY);
+
+}
+
+vec2 getTexCoordsInGridSquare(){
+
+ float x = mod(pass_TexCoords.x, 1.0 / gridSize.x) * gridSize.x;
+ float y = mod(pass_TexCoords.y, 1.0 / gridSize.y) * gridSize.y;
+ if(pass_TexCoords.x == 1.0)
+ x = 1.0;
+ if(pass_TexCoords.y == 1.0)
+ y = 1.0;
+ return vec2(x, y);
+
+}
+
+vec2 getTexCoordsInAtlas(in vec2 texCoords, in float atlasIndex){
+
+ vec2 texAtlasCoords = vec2(0.0, 0.0);
+ texAtlasCoords.x = mod(texCoords.x, 1.0) / texAtlasSize.x;
+ texAtlasCoords.x += mod(atlasIndex, texAtlasSize.x) / texAtlasSize.x;
+ texAtlasCoords.y = mod(texCoords.y, 1.0) / texAtlasSize.y;
+ texAtlasCoords.y += floor(atlasIndex / texAtlasSize.y) / texAtlasSize.y;
+ return texAtlasCoords;
+
}
\ No newline at end of file
diff --git a/app/src/main/assets/shader/particleFragmentShader.glsl b/app/src/main/assets/shader/particleFragmentShader.glsl
index cb7b5e6..56ecd93 100644
--- a/app/src/main/assets/shader/particleFragmentShader.glsl
+++ b/app/src/main/assets/shader/particleFragmentShader.glsl
@@ -1,27 +1,27 @@
-precision mediump float;
-
-uniform sampler2D texture;
-uniform vec3 color;
-uniform float alpha;
-
-varying vec2 pass_TexCoords;
-
-vec3 saturateColor(in vec3 color, in float a);
-
-void main() {
-
- float a = texture2D(texture, pass_TexCoords).a * alpha;
- vec3 black = vec3(0.0, 0.0, 0.0);
- gl_FragColor.rgb = mix(color, black, 1.0 - a);
- gl_FragColor.a = a;
-
-}
-
-vec3 saturateColor(in vec3 color, in float a){
-
- float grayscale = (color.r * 0.299 + color.g * 0.587 + color. b * 0.114);
- float alpha = ((1.1 - a) * 0.5) * 40.0;
-
- return alpha * color + (1.0 - alpha) * vec3(grayscale, grayscale, grayscale);
-
+precision mediump float;
+
+uniform sampler2D texture;
+uniform vec3 color;
+uniform float alpha;
+
+varying vec2 pass_TexCoords;
+
+vec3 saturateColor(in vec3 color, in float a);
+
+void main() {
+
+ float a = texture2D(texture, pass_TexCoords).a * alpha;
+ vec3 black = vec3(0.0, 0.0, 0.0);
+ gl_FragColor.rgb = mix(color, black, 1.0 - a);
+ gl_FragColor.a = a;
+
+}
+
+vec3 saturateColor(in vec3 color, in float a){
+
+ float grayscale = (color.r * 0.299 + color.g * 0.587 + color. b * 0.114);
+ float alpha = ((1.1 - a) * 0.5) * 40.0;
+
+ return alpha * color + (1.0 - alpha) * vec3(grayscale, grayscale, grayscale);
+
}
\ No newline at end of file
diff --git a/app/src/main/assets/shader/simpleFragmentShader.glsl b/app/src/main/assets/shader/simpleFragmentShader.glsl
index a60842a..c785f46 100644
--- a/app/src/main/assets/shader/simpleFragmentShader.glsl
+++ b/app/src/main/assets/shader/simpleFragmentShader.glsl
@@ -1,12 +1,12 @@
-precision mediump float;
-
-uniform sampler2D texture;
-
-varying vec2 pass_TexCoords;
-
-void main() {
-
- gl_FragColor = texture2D(texture, pass_TexCoords);
- gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
-
+precision mediump float;
+
+uniform sampler2D texture;
+
+varying vec2 pass_TexCoords;
+
+void main() {
+
+ gl_FragColor = texture2D(texture, pass_TexCoords);
+ gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
+
}
\ No newline at end of file
diff --git a/app/src/main/assets/shader/simpleVertexShader.glsl b/app/src/main/assets/shader/simpleVertexShader.glsl
index 7fee205..e2b0586 100644
--- a/app/src/main/assets/shader/simpleVertexShader.glsl
+++ b/app/src/main/assets/shader/simpleVertexShader.glsl
@@ -1,12 +1,12 @@
-attribute vec4 position;
-attribute vec2 texCoords;
-
-varying vec2 pass_TexCoords;
-
-void main() {
-
- gl_Position = position;
- pass_TexCoords.x = texCoords.x;
- pass_TexCoords.y = -texCoords.y;
-
+attribute vec4 position;
+attribute vec2 texCoords;
+
+varying vec2 pass_TexCoords;
+
+void main() {
+
+ gl_Position = position;
+ pass_TexCoords.x = texCoords.x;
+ pass_TexCoords.y = -texCoords.y;
+
}
\ No newline at end of file
diff --git a/app/src/main/assets/shader/terrainFragmentShader.glsl b/app/src/main/assets/shader/terrainFragmentShader.glsl
index 8685a32..8df0b7a 100644
--- a/app/src/main/assets/shader/terrainFragmentShader.glsl
+++ b/app/src/main/assets/shader/terrainFragmentShader.glsl
@@ -1,46 +1,46 @@
-precision mediump float;
-
-uniform sampler2D texture;
-uniform float gridColumnCount;
-uniform float isEndlessTileList;
-
-varying vec2 pass_TexCoords;
-
-const float texAtlasWidth = 3.0;
-
-float getAtlasIndex();
-vec2 getTexCoordsInAtlas(in vec2 texCoordsInGrid, in float atlasIndex);
-
-void main() {
-
- float atlasIndex = getAtlasIndex();
- vec2 texCoordsInGrid = pass_TexCoords;
- texCoordsInGrid.x *= gridColumnCount;
- texCoordsInGrid.x = mod(texCoordsInGrid.x, 1.0);
- vec2 texCoordsInAtlas = getTexCoordsInAtlas(texCoordsInGrid, atlasIndex);
-
- gl_FragColor = texture2D(texture, texCoordsInAtlas);
- gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
-}
-
-float getAtlasIndex(){
-
- if(isEndlessTileList == 1.0)
- return 1.0;
-
- if(pass_TexCoords.x < 1.0 / gridColumnCount)
- return 0.0;
- if(pass_TexCoords.x > 1.0 - 1.0 / gridColumnCount)
- return 2.0;
- return 1.0;
-
-}
-
-vec2 getTexCoordsInAtlas(in vec2 texCoordsInGrid, in float atlasIndex){
-
- vec2 texAtlasCoords = vec2(0.0, texCoordsInGrid.y);
- texAtlasCoords.x = texCoordsInGrid.x / texAtlasWidth;
- texAtlasCoords.x += mod(atlasIndex, texAtlasWidth) / texAtlasWidth;
- return texAtlasCoords;
-
+precision mediump float;
+
+uniform sampler2D texture;
+uniform float gridColumnCount;
+uniform float isEndlessTileList;
+
+varying vec2 pass_TexCoords;
+
+const float texAtlasWidth = 3.0;
+
+float getAtlasIndex();
+vec2 getTexCoordsInAtlas(in vec2 texCoordsInGrid, in float atlasIndex);
+
+void main() {
+
+ float atlasIndex = getAtlasIndex();
+ vec2 texCoordsInGrid = pass_TexCoords;
+ texCoordsInGrid.x *= gridColumnCount;
+ texCoordsInGrid.x = mod(texCoordsInGrid.x, 1.0);
+ vec2 texCoordsInAtlas = getTexCoordsInAtlas(texCoordsInGrid, atlasIndex);
+
+ gl_FragColor = texture2D(texture, texCoordsInAtlas);
+ gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
+}
+
+float getAtlasIndex(){
+
+ if(isEndlessTileList == 1.0)
+ return 1.0;
+
+ if(pass_TexCoords.x < 1.0 / gridColumnCount)
+ return 0.0;
+ if(pass_TexCoords.x > 1.0 - 1.0 / gridColumnCount)
+ return 2.0;
+ return 1.0;
+
+}
+
+vec2 getTexCoordsInAtlas(in vec2 texCoordsInGrid, in float atlasIndex){
+
+ vec2 texAtlasCoords = vec2(0.0, texCoordsInGrid.y);
+ texAtlasCoords.x = texCoordsInGrid.x / texAtlasWidth;
+ texAtlasCoords.x += mod(atlasIndex, texAtlasWidth) / texAtlasWidth;
+ return texAtlasCoords;
+
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/data/Color3f.java b/app/src/main/java/de/frajul/endlessroll/data/Color3f.java
index 420463d..31b2a0f 100644
--- a/app/src/main/java/de/frajul/endlessroll/data/Color3f.java
+++ b/app/src/main/java/de/frajul/endlessroll/data/Color3f.java
@@ -1,74 +1,74 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.data;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class Color3f {
-
- private float r, g, b;
-
- public Color3f() {
- }
-
- public Color3f(float r, float g, float b) {
- this.r = r;
- this.g = g;
- this.b = b;
- }
-
- public Color3f(Color3f other) {
- this.r = other.getR();
- this.g = other.getG();
- this.b = other.getB();
- }
-
- public Color3f interpolate(float leftValue, float rightValue, Color3f color2) {
- float r = this.r + (color2.r - this.r) * leftValue;
- float g = this.g + (color2.g - this.g) * leftValue;
- float b = this.b + (color2.b - this.b) * leftValue;
- return new Color3f(r, g, b);
- }
-
- private void mul(float a) {
- r *= a;
- g *= a;
- b *= a;
- }
-
- private void add(Color3f other) {
- r += other.getR();
- g += other.getG();
- b += other.getB();
- }
-
- public float getR() {
- return r;
- }
-
- public void setR(float r) {
- this.r = r;
- }
-
- public float getG() {
- return g;
- }
-
- public void setG(float g) {
- this.g = g;
- }
-
- public float getB() {
- return b;
- }
-
- public void setB(float b) {
- this.b = b;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.data;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class Color3f {
+
+ private float r, g, b;
+
+ public Color3f() {
+ }
+
+ public Color3f(float r, float g, float b) {
+ this.r = r;
+ this.g = g;
+ this.b = b;
+ }
+
+ public Color3f(Color3f other) {
+ this.r = other.getR();
+ this.g = other.getG();
+ this.b = other.getB();
+ }
+
+ public Color3f interpolate(float leftValue, float rightValue, Color3f color2) {
+ float r = this.r + (color2.r - this.r) * leftValue;
+ float g = this.g + (color2.g - this.g) * leftValue;
+ float b = this.b + (color2.b - this.b) * leftValue;
+ return new Color3f(r, g, b);
+ }
+
+ private void mul(float a) {
+ r *= a;
+ g *= a;
+ b *= a;
+ }
+
+ private void add(Color3f other) {
+ r += other.getR();
+ g += other.getG();
+ b += other.getB();
+ }
+
+ public float getR() {
+ return r;
+ }
+
+ public void setR(float r) {
+ this.r = r;
+ }
+
+ public float getG() {
+ return g;
+ }
+
+ public void setG(float g) {
+ this.g = g;
+ }
+
+ public float getB() {
+ return b;
+ }
+
+ public void setB(float b) {
+ this.b = b;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/data/Color4f.java b/app/src/main/java/de/frajul/endlessroll/data/Color4f.java
index f11950c..ec3526d 100644
--- a/app/src/main/java/de/frajul/endlessroll/data/Color4f.java
+++ b/app/src/main/java/de/frajul/endlessroll/data/Color4f.java
@@ -1,65 +1,65 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.data;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class Color4f {
-
- private float r, g, b, a;
-
- public Color4f() {
- }
-
- public Color4f(float r, float g, float b, float a) {
- this.r = r;
- this.g = g;
- this.b = b;
- this.a = a;
- }
-
- public Color4f(Color4f other) {
- this.r = other.getR();
- this.g = other.getG();
- this.b = other.getB();
- this.a = other.getA();
- }
-
- public float getR() {
- return r;
- }
-
- public void setR(float r) {
- this.r = r;
- }
-
- public float getG() {
- return g;
- }
-
- public void setG(float g) {
- this.g = g;
- }
-
- public float getB() {
- return b;
- }
-
- public void setB(float b) {
- this.b = b;
- }
-
- public float getA() {
- return a;
- }
-
- public void setA(float a) {
- this.a = a;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.data;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class Color4f {
+
+ private float r, g, b, a;
+
+ public Color4f() {
+ }
+
+ public Color4f(float r, float g, float b, float a) {
+ this.r = r;
+ this.g = g;
+ this.b = b;
+ this.a = a;
+ }
+
+ public Color4f(Color4f other) {
+ this.r = other.getR();
+ this.g = other.getG();
+ this.b = other.getB();
+ this.a = other.getA();
+ }
+
+ public float getR() {
+ return r;
+ }
+
+ public void setR(float r) {
+ this.r = r;
+ }
+
+ public float getG() {
+ return g;
+ }
+
+ public void setG(float g) {
+ this.g = g;
+ }
+
+ public float getB() {
+ return b;
+ }
+
+ public void setB(float b) {
+ this.b = b;
+ }
+
+ public float getA() {
+ return a;
+ }
+
+ public void setA(float a) {
+ this.a = a;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/data/SynchronizedArrayList.java b/app/src/main/java/de/frajul/endlessroll/data/SynchronizedArrayList.java
index 0bc8804..1cfb4b0 100644
--- a/app/src/main/java/de/frajul/endlessroll/data/SynchronizedArrayList.java
+++ b/app/src/main/java/de/frajul/endlessroll/data/SynchronizedArrayList.java
@@ -1,154 +1,154 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.data;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Created by Julian on 16.11.2016.
- */
-
-public class SynchronizedArrayList extends ArrayList {
-
- @Override
- public synchronized String toString() {
- return super.toString();
- }
-
- @Override
- public synchronized boolean add(E object) {
- return super.add(object);
- }
-
- @Override
- public synchronized void add(int index, E object) {
- super.add(index, object);
- }
-
- @Override
- public synchronized boolean addAll(Collection extends E> collection) {
- return super.addAll(collection);
- }
-
- @Override
- public synchronized boolean addAll(int index, Collection extends E> collection) {
- return super.addAll(index, collection);
- }
-
- @Override
- public synchronized void clear() {
- super.clear();
- }
-
- @Override
- public synchronized Object clone() {
- return super.clone();
- }
-
- @Override
- public synchronized void ensureCapacity(int minimumCapacity) {
- super.ensureCapacity(minimumCapacity);
- }
-
- @Override
- public synchronized E get(int index) {
- return super.get(index);
- }
-
- @Override
- public synchronized int size() {
- return super.size();
- }
-
- @Override
- public synchronized boolean isEmpty() {
- return super.isEmpty();
- }
-
- @Override
- public synchronized boolean contains(Object object) {
- return super.contains(object);
- }
-
- @Override
- public synchronized int indexOf(Object object) {
- return super.indexOf(object);
- }
-
- @Override
- public synchronized int lastIndexOf(Object object) {
- return super.lastIndexOf(object);
- }
-
- @Override
- public synchronized E remove(int index) {
- return super.remove(index);
- }
-
- @Override
- public synchronized boolean remove(Object object) {
- return super.remove(object);
- }
-
- @Override
- protected synchronized void removeRange(int fromIndex, int toIndex) {
- super.removeRange(fromIndex, toIndex);
- }
-
- @Override
- public synchronized E set(int index, E object) {
- return super.set(index, object);
- }
-
- @Override
- public synchronized Object[] toArray() {
- return super.toArray();
- }
-
- @Override
- public synchronized T[] toArray(T[] contents) {
- return super.toArray(contents);
- }
-
- @Override
- public synchronized void trimToSize() {
- super.trimToSize();
- }
-
- @Override
- public synchronized int hashCode() {
- return super.hashCode();
- }
-
- @Override
- public synchronized boolean equals(Object o) {
- return super.equals(o);
- }
-
- @Override
- public synchronized List subList(int start, int end) {
- return super.subList(start, end);
- }
-
- @Override
- public synchronized boolean containsAll(Collection> collection) {
- return super.containsAll(collection);
- }
-
- @Override
- public synchronized boolean removeAll(Collection> collection) {
- return super.removeAll(collection);
- }
-
- @Override
- public synchronized boolean retainAll(Collection> collection) {
- return super.retainAll(collection);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.data;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * Created by Julian on 16.11.2016.
+ */
+
+public class SynchronizedArrayList extends ArrayList {
+
+ @Override
+ public synchronized String toString() {
+ return super.toString();
+ }
+
+ @Override
+ public synchronized boolean add(E object) {
+ return super.add(object);
+ }
+
+ @Override
+ public synchronized void add(int index, E object) {
+ super.add(index, object);
+ }
+
+ @Override
+ public synchronized boolean addAll(Collection extends E> collection) {
+ return super.addAll(collection);
+ }
+
+ @Override
+ public synchronized boolean addAll(int index, Collection extends E> collection) {
+ return super.addAll(index, collection);
+ }
+
+ @Override
+ public synchronized void clear() {
+ super.clear();
+ }
+
+ @Override
+ public synchronized Object clone() {
+ return super.clone();
+ }
+
+ @Override
+ public synchronized void ensureCapacity(int minimumCapacity) {
+ super.ensureCapacity(minimumCapacity);
+ }
+
+ @Override
+ public synchronized E get(int index) {
+ return super.get(index);
+ }
+
+ @Override
+ public synchronized int size() {
+ return super.size();
+ }
+
+ @Override
+ public synchronized boolean isEmpty() {
+ return super.isEmpty();
+ }
+
+ @Override
+ public synchronized boolean contains(Object object) {
+ return super.contains(object);
+ }
+
+ @Override
+ public synchronized int indexOf(Object object) {
+ return super.indexOf(object);
+ }
+
+ @Override
+ public synchronized int lastIndexOf(Object object) {
+ return super.lastIndexOf(object);
+ }
+
+ @Override
+ public synchronized E remove(int index) {
+ return super.remove(index);
+ }
+
+ @Override
+ public synchronized boolean remove(Object object) {
+ return super.remove(object);
+ }
+
+ @Override
+ protected synchronized void removeRange(int fromIndex, int toIndex) {
+ super.removeRange(fromIndex, toIndex);
+ }
+
+ @Override
+ public synchronized E set(int index, E object) {
+ return super.set(index, object);
+ }
+
+ @Override
+ public synchronized Object[] toArray() {
+ return super.toArray();
+ }
+
+ @Override
+ public synchronized T[] toArray(T[] contents) {
+ return super.toArray(contents);
+ }
+
+ @Override
+ public synchronized void trimToSize() {
+ super.trimToSize();
+ }
+
+ @Override
+ public synchronized int hashCode() {
+ return super.hashCode();
+ }
+
+ @Override
+ public synchronized boolean equals(Object o) {
+ return super.equals(o);
+ }
+
+ @Override
+ public synchronized List subList(int start, int end) {
+ return super.subList(start, end);
+ }
+
+ @Override
+ public synchronized boolean containsAll(Collection> collection) {
+ return super.containsAll(collection);
+ }
+
+ @Override
+ public synchronized boolean removeAll(Collection> collection) {
+ return super.removeAll(collection);
+ }
+
+ @Override
+ public synchronized boolean retainAll(Collection> collection) {
+ return super.retainAll(collection);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/data/Vector.java b/app/src/main/java/de/frajul/endlessroll/data/Vector.java
index 0fae3fa..f2623b7 100644
--- a/app/src/main/java/de/frajul/endlessroll/data/Vector.java
+++ b/app/src/main/java/de/frajul/endlessroll/data/Vector.java
@@ -1,113 +1,113 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.data;
-
-/**
- * Created by Julian on 01.12.2015.
- */
-public class Vector {
-
- public float x, y;
-
- public Vector() {
- this(0, 0);
- }
-
- public Vector(Vector other) {
- this(other.x, other.y);
- }
-
- public Vector(float x, float y) {
- set(x, y);
- }
-
- @Override
- public String toString() {
- return "Vector(" + x + ", " + y + ")";
- }
-
- public void set(float x, float y) {
- this.x = x;
- this.y = y;
- }
-
- public float length() {
- return (float) Math.sqrt(x * x + y * y);
- }
-
- public Vector normalize() {
- float length = this.length();
- x /= length;
- y /= length;
- return this;
- }
-
- public Vector translate(Vector other) {
- this.x += other.x;
- this.y += other.y;
- return this;
- }
-
- public Vector translate(float x, float y) {
- this.x += x;
- this.y += y;
- return this;
- }
-
- public Vector abs() {
- this.x = Math.abs(x);
- this.y = Math.abs(y);
- return this;
- }
-
- public Vector mul(float z) {
- x *= z;
- y *= z;
- return this;
- }
-
- public Vector mul(Vector other) {
- this.x *= other.x;
- this.y *= other.y;
- return this;
- }
-
- public Vector mul(float x, float y) {
- this.x *= x;
- this.y *= y;
- return this;
- }
-
- public Vector negate() {
- this.x *= -1;
- this.y *= -1;
- return this;
- }
-
- public Vector vectorTo(Vector other) {
- float x = other.x - this.x;
- float y = other.y - this.y;
- return new Vector(x, y);
- }
-
- public void setX(float x) {
- this.x = x;
- }
-
- public void setY(float y) {
- this.y = y;
- }
-
- public float getX() {
- return x;
- }
-
- public float getY() {
- return y;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.data;
+
+/**
+ * Created by Julian on 01.12.2015.
+ */
+public class Vector {
+
+ public float x, y;
+
+ public Vector() {
+ this(0, 0);
+ }
+
+ public Vector(Vector other) {
+ this(other.x, other.y);
+ }
+
+ public Vector(float x, float y) {
+ set(x, y);
+ }
+
+ @Override
+ public String toString() {
+ return "Vector(" + x + ", " + y + ")";
+ }
+
+ public void set(float x, float y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ public float length() {
+ return (float) Math.sqrt(x * x + y * y);
+ }
+
+ public Vector normalize() {
+ float length = this.length();
+ x /= length;
+ y /= length;
+ return this;
+ }
+
+ public Vector translate(Vector other) {
+ this.x += other.x;
+ this.y += other.y;
+ return this;
+ }
+
+ public Vector translate(float x, float y) {
+ this.x += x;
+ this.y += y;
+ return this;
+ }
+
+ public Vector abs() {
+ this.x = Math.abs(x);
+ this.y = Math.abs(y);
+ return this;
+ }
+
+ public Vector mul(float z) {
+ x *= z;
+ y *= z;
+ return this;
+ }
+
+ public Vector mul(Vector other) {
+ this.x *= other.x;
+ this.y *= other.y;
+ return this;
+ }
+
+ public Vector mul(float x, float y) {
+ this.x *= x;
+ this.y *= y;
+ return this;
+ }
+
+ public Vector negate() {
+ this.x *= -1;
+ this.y *= -1;
+ return this;
+ }
+
+ public Vector vectorTo(Vector other) {
+ float x = other.x - this.x;
+ float y = other.y - this.y;
+ return new Vector(x, y);
+ }
+
+ public void setX(float x) {
+ this.x = x;
+ }
+
+ public void setY(float y) {
+ this.y = y;
+ }
+
+ public float getX() {
+ return x;
+ }
+
+ public float getY() {
+ return y;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/AnimatedEntity.java b/app/src/main/java/de/frajul/endlessroll/entities/AnimatedEntity.java
index 7fbbd5d..007177a 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/AnimatedEntity.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/AnimatedEntity.java
@@ -1,32 +1,32 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 20.02.2017.
- */
-
-public class AnimatedEntity extends Entity {
-
- protected Animation animation;
-
- public AnimatedEntity(Texture texture, Vector position, float width, float height) {
- super(texture, position, width, height);
- animation = new Animation();
- }
-
- public void update(Timer timer) {
- animation.update(timer);
- super.setTextureAtlasIndex(animation.getCurrentTexIndex());
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 20.02.2017.
+ */
+
+public class AnimatedEntity extends Entity {
+
+ protected Animation animation;
+
+ public AnimatedEntity(Texture texture, Vector position, float width, float height) {
+ super(texture, position, width, height);
+ animation = new Animation();
+ }
+
+ public void update(Timer timer) {
+ animation.update(timer);
+ super.setTextureAtlasIndex(animation.getCurrentTexIndex());
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/Animation.java b/app/src/main/java/de/frajul/endlessroll/entities/Animation.java
index d321398..0950a0d 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/Animation.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/Animation.java
@@ -1,62 +1,62 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 14.12.2015.
- */
-public class Animation {
-
- private int[] indexSequence = {0, 1, 2, 3};
- private boolean looping = false;
- private int requiredDelta = 110;
-
- private int indexPointer = 0;
- private boolean stillRunning = true;
- private long lastSwitchTime = -1;
-
- public void disable() {
- stillRunning = false;
- }
-
- public void update(Timer timer) {
- if (lastSwitchTime == -1) {
- lastSwitchTime = timer.getCurrentTime();
- return;
- }
- if (stillRunning) {
- long delta = timer.getCurrentTime() - lastSwitchTime;
- if (delta >= requiredDelta) {
- lastSwitchTime = timer.getCurrentTime();
- indexPointer++;
- if (!looping && indexPointer == indexSequence.length - 1)
- stillRunning = false;
- if (looping && indexPointer == indexSequence.length)
- indexPointer = 0;
- }
- }
- }
-
- public int getCurrentTexIndex() {
- return indexSequence[indexPointer];
- }
-
- public void setIndexSequence(int[] indexSequence) {
- this.indexSequence = indexSequence;
- }
-
- public void setRequiredDelta(int requiredDelta) {
- this.requiredDelta = requiredDelta;
- }
-
- public void setLooping(boolean looping) {
- this.looping = looping;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 14.12.2015.
+ */
+public class Animation {
+
+ private int[] indexSequence = {0, 1, 2, 3};
+ private boolean looping = false;
+ private int requiredDelta = 110;
+
+ private int indexPointer = 0;
+ private boolean stillRunning = true;
+ private long lastSwitchTime = -1;
+
+ public void disable() {
+ stillRunning = false;
+ }
+
+ public void update(Timer timer) {
+ if (lastSwitchTime == -1) {
+ lastSwitchTime = timer.getCurrentTime();
+ return;
+ }
+ if (stillRunning) {
+ long delta = timer.getCurrentTime() - lastSwitchTime;
+ if (delta >= requiredDelta) {
+ lastSwitchTime = timer.getCurrentTime();
+ indexPointer++;
+ if (!looping && indexPointer == indexSequence.length - 1)
+ stillRunning = false;
+ if (looping && indexPointer == indexSequence.length)
+ indexPointer = 0;
+ }
+ }
+ }
+
+ public int getCurrentTexIndex() {
+ return indexSequence[indexPointer];
+ }
+
+ public void setIndexSequence(int[] indexSequence) {
+ this.indexSequence = indexSequence;
+ }
+
+ public void setRequiredDelta(int requiredDelta) {
+ this.requiredDelta = requiredDelta;
+ }
+
+ public void setLooping(boolean looping) {
+ this.looping = looping;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/Background.java b/app/src/main/java/de/frajul/endlessroll/entities/Background.java
index d0352fb..b3182b3 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/Background.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/Background.java
@@ -1,55 +1,55 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import de.frajul.endlessroll.entities.textures.Texture;
-
-/**
- * Created by Julian on 20.07.2016.
- */
-public class Background {
-
- private List layers = Collections
- .synchronizedList(new ArrayList());
-
- public Background(List textures) {
- changeTextures(textures);
- }
-
- public void changeTextures(List textures) {
- layers.clear();
- for (int i = 0; i < textures.size(); i++) {
- Texture texture = textures.get(i);
- float speed = (float) Math.pow(0.95f, Math.pow(i + 1, Math.sqrt(i + 1)));
- layers.add(new BackgroundLayer(texture, speed));
- }
- }
-
- public void move(float playerMoveX, float cameraX) {
- synchronized (layers) {
- for (BackgroundLayer layer : layers) {
- layer.move(playerMoveX, cameraX);
- }
- }
- }
-
- public void resetPosition() {
- synchronized (layers) {
- for (BackgroundLayer layer : layers)
- layer.resetPosition();
- }
- }
-
- public List getLayers() {
- return layers;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import de.frajul.endlessroll.entities.textures.Texture;
+
+/**
+ * Created by Julian on 20.07.2016.
+ */
+public class Background {
+
+ private List layers = Collections
+ .synchronizedList(new ArrayList());
+
+ public Background(List textures) {
+ changeTextures(textures);
+ }
+
+ public void changeTextures(List textures) {
+ layers.clear();
+ for (int i = 0; i < textures.size(); i++) {
+ Texture texture = textures.get(i);
+ float speed = (float) Math.pow(0.95f, Math.pow(i + 1, Math.sqrt(i + 1)));
+ layers.add(new BackgroundLayer(texture, speed));
+ }
+ }
+
+ public void move(float playerMoveX, float cameraX) {
+ synchronized (layers) {
+ for (BackgroundLayer layer : layers) {
+ layer.move(playerMoveX, cameraX);
+ }
+ }
+ }
+
+ public void resetPosition() {
+ synchronized (layers) {
+ for (BackgroundLayer layer : layers)
+ layer.resetPosition();
+ }
+ }
+
+ public List getLayers() {
+ return layers;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/BackgroundLayer.java b/app/src/main/java/de/frajul/endlessroll/entities/BackgroundLayer.java
index 22b4dcd..61e2cc4 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/BackgroundLayer.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/BackgroundLayer.java
@@ -1,54 +1,54 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import de.frajul.endlessroll.data.SynchronizedArrayList;
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.textures.Texture;
-
-public class BackgroundLayer extends SynchronizedArrayList {
-
- private final float PART_WIDTH = 5;
- private final float HALF_PART_WIDTH = PART_WIDTH / 2f;
- private final float HEIGHT = 2.5f;
- private Texture texture;
- private float speed;
-
- public BackgroundLayer(Texture texture, float speed) {
- this.texture = texture;
- this.speed = speed;
- super.add(createPart(-HALF_PART_WIDTH));
- }
-
- private Entity createPart(float xLeftEdge) {
- return new Entity(texture, new Vector(xLeftEdge + HALF_PART_WIDTH, (HEIGHT - 2) / 2), PART_WIDTH, HEIGHT);
- }
-
- public void move(float playerMovX, float cameraX) {
- Vector movement = new Vector(playerMovX * speed, 0);
- synchronized (this) {
- for (Entity part : this)
- part.move(movement);
- }
- if (!super.isEmpty()) {
- Entity last = super.get(super.size() - 1);
- if (last.getRightEdge() - cameraX < 3) {
- super.add(createPart(last.getRightEdge() - 0.001f));
- }
- if (super.get(0).getRightEdge() - cameraX < -3) {
- super.remove(0);
- }
- }
- }
-
- public void resetPosition() {
- super.clear();
- super.add(createPart(-HALF_PART_WIDTH));
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import de.frajul.endlessroll.data.SynchronizedArrayList;
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.textures.Texture;
+
+public class BackgroundLayer extends SynchronizedArrayList {
+
+ private final float PART_WIDTH = 5;
+ private final float HALF_PART_WIDTH = PART_WIDTH / 2f;
+ private final float HEIGHT = 2.5f;
+ private Texture texture;
+ private float speed;
+
+ public BackgroundLayer(Texture texture, float speed) {
+ this.texture = texture;
+ this.speed = speed;
+ super.add(createPart(-HALF_PART_WIDTH));
+ }
+
+ private Entity createPart(float xLeftEdge) {
+ return new Entity(texture, new Vector(xLeftEdge + HALF_PART_WIDTH, (HEIGHT - 2) / 2), PART_WIDTH, HEIGHT);
+ }
+
+ public void move(float playerMovX, float cameraX) {
+ Vector movement = new Vector(playerMovX * speed, 0);
+ synchronized (this) {
+ for (Entity part : this)
+ part.move(movement);
+ }
+ if (!super.isEmpty()) {
+ Entity last = super.get(super.size() - 1);
+ if (last.getRightEdge() - cameraX < 3) {
+ super.add(createPart(last.getRightEdge() - 0.001f));
+ }
+ if (super.get(0).getRightEdge() - cameraX < -3) {
+ super.remove(0);
+ }
+ }
+ }
+
+ public void resetPosition() {
+ super.clear();
+ super.add(createPart(-HALF_PART_WIDTH));
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/DestroyEffect.java b/app/src/main/java/de/frajul/endlessroll/entities/DestroyEffect.java
index a4789d4..a937031 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/DestroyEffect.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/DestroyEffect.java
@@ -1,46 +1,46 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import android.support.annotation.Nullable;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.particles.ParticleEffect;
-import de.frajul.endlessroll.entities.particles.ParticleSource;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-
-/**
- * Created by Julian on 11.03.2016.
- */
-public enum DestroyEffect {
-
- EXPLOSION, STAR_EXPLOSION, ENERGY_COLLECT, NONE;
-
- @Nullable
- public ParticleSource createEffect(ParticleSystem system, Vector position, Vector size) {
- if (this == NONE)
- return null;
- ParticleSource source = new ParticleSource(position, getEffect(system));
- source.setSpawnSize(size);
- return source;
- }
-
- private ParticleEffect getEffect(ParticleSystem system) {
- switch (this) {
- case EXPLOSION:
- return system.explosion;
- case STAR_EXPLOSION:
- return system.starCollect;
- case ENERGY_COLLECT:
- return system.energyCollect;
- default:
- return null;
- }
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import android.support.annotation.Nullable;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.particles.ParticleEffect;
+import de.frajul.endlessroll.entities.particles.ParticleSource;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+
+/**
+ * Created by Julian on 11.03.2016.
+ */
+public enum DestroyEffect {
+
+ EXPLOSION, STAR_EXPLOSION, ENERGY_COLLECT, NONE;
+
+ @Nullable
+ public ParticleSource createEffect(ParticleSystem system, Vector position, Vector size) {
+ if (this == NONE)
+ return null;
+ ParticleSource source = new ParticleSource(position, getEffect(system));
+ source.setSpawnSize(size);
+ return source;
+ }
+
+ private ParticleEffect getEffect(ParticleSystem system) {
+ switch (this) {
+ case EXPLOSION:
+ return system.explosion;
+ case STAR_EXPLOSION:
+ return system.starCollect;
+ case ENERGY_COLLECT:
+ return system.energyCollect;
+ default:
+ return null;
+ }
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/Entity.java b/app/src/main/java/de/frajul/endlessroll/entities/Entity.java
index 51385a6..d0b7f53 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/Entity.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/Entity.java
@@ -1,138 +1,138 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import de.frajul.endlessroll.data.Color3f;
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.collision.geometry.Quad;
-import de.frajul.endlessroll.entities.textures.Texture;
-
-/**
- * Created by Julian on 20.11.2015.
- */
-public class Entity extends Quad {
-
- private int textureAtlasIndex;
- private Texture texture;
- private Vector movement;
- private float rotation;
- private float alpha = 1.0f;
- private boolean destroyed;
- private DestroyEffect destroyEffect;
- private Vector maxTexSize;
- private boolean visible = true;
- private Color3f color = null;
-
- 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) {
- position.translate(movement);
- }
-
- public void rotate(float factor) {
- rotation += factor;
- }
-
- public void setToTerrain(float terrainEdge) {
- position.y = terrainEdge + height / 2;
- }
-
- public void setTopEdge(float y) {
- position.y = y - height / 2;
- }
-
- public Texture getTexture() {
- return texture;
- }
-
- public void setTexture(Texture texture) {
- this.texture = texture;
- }
-
- public Vector getMovement() {
- return movement;
- }
-
- public void setMovement(Vector movement) {
- this.movement = movement;
- }
-
- public float getRotation() {
- return rotation;
- }
-
- public void setRotation(float rotation) {
- this.rotation = rotation;
- }
-
- public void setAlpha(float alpha) {
- this.alpha = alpha;
- }
-
- public float getAlpha() {
- return alpha;
- }
-
- public void destroy(DestroyEffect destroyEffect) {
- this.destroyed = true;
- this.destroyEffect = destroyEffect;
- }
-
- public boolean isDestroyed() {
- return destroyed;
- }
-
- public DestroyEffect getDestroyEffect() {
- return destroyEffect;
- }
-
- public void setTextureAtlasIndex(int textureAtlasIndex) {
- this.textureAtlasIndex = textureAtlasIndex;
- }
-
- public int getTextureAtlasIndex() {
- return textureAtlasIndex;
- }
-
- public void setMaxTexSize(Vector maxTexSize) {
- this.maxTexSize = maxTexSize;
- }
-
- public Vector getMaxTexSize() {
- return maxTexSize;
- }
-
- public float calcTexScaleX() {
- return getMaxTexSize().x == 0 ? 1 : getWidth() / getMaxTexSize().x;
- }
-
- public float calcTexScaleY() {
- return getMaxTexSize().y == 0 ? 1 : getHeight() / getMaxTexSize().y;
- }
-
- public void setVisible(boolean visible) {
- this.visible = visible;
- }
-
- public boolean isVisible() {
- return visible;
- }
-
- public void setColor(Color3f color) {
- this.color = color;
- }
-
- public Color3f getColor() {
- return color;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import de.frajul.endlessroll.data.Color3f;
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.collision.geometry.Quad;
+import de.frajul.endlessroll.entities.textures.Texture;
+
+/**
+ * Created by Julian on 20.11.2015.
+ */
+public class Entity extends Quad {
+
+ private int textureAtlasIndex;
+ private Texture texture;
+ private Vector movement;
+ private float rotation;
+ private float alpha = 1.0f;
+ private boolean destroyed;
+ private DestroyEffect destroyEffect;
+ private Vector maxTexSize;
+ private boolean visible = true;
+ private Color3f color = null;
+
+ 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) {
+ position.translate(movement);
+ }
+
+ public void rotate(float factor) {
+ rotation += factor;
+ }
+
+ public void setToTerrain(float terrainEdge) {
+ position.y = terrainEdge + height / 2;
+ }
+
+ public void setTopEdge(float y) {
+ position.y = y - height / 2;
+ }
+
+ public Texture getTexture() {
+ return texture;
+ }
+
+ public void setTexture(Texture texture) {
+ this.texture = texture;
+ }
+
+ public Vector getMovement() {
+ return movement;
+ }
+
+ public void setMovement(Vector movement) {
+ this.movement = movement;
+ }
+
+ public float getRotation() {
+ return rotation;
+ }
+
+ public void setRotation(float rotation) {
+ this.rotation = rotation;
+ }
+
+ public void setAlpha(float alpha) {
+ this.alpha = alpha;
+ }
+
+ public float getAlpha() {
+ return alpha;
+ }
+
+ public void destroy(DestroyEffect destroyEffect) {
+ this.destroyed = true;
+ this.destroyEffect = destroyEffect;
+ }
+
+ public boolean isDestroyed() {
+ return destroyed;
+ }
+
+ public DestroyEffect getDestroyEffect() {
+ return destroyEffect;
+ }
+
+ public void setTextureAtlasIndex(int textureAtlasIndex) {
+ this.textureAtlasIndex = textureAtlasIndex;
+ }
+
+ public int getTextureAtlasIndex() {
+ return textureAtlasIndex;
+ }
+
+ public void setMaxTexSize(Vector maxTexSize) {
+ this.maxTexSize = maxTexSize;
+ }
+
+ public Vector getMaxTexSize() {
+ return maxTexSize;
+ }
+
+ public float calcTexScaleX() {
+ return getMaxTexSize().x == 0 ? 1 : getWidth() / getMaxTexSize().x;
+ }
+
+ public float calcTexScaleY() {
+ return getMaxTexSize().y == 0 ? 1 : getHeight() / getMaxTexSize().y;
+ }
+
+ public void setVisible(boolean visible) {
+ this.visible = visible;
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ public void setColor(Color3f color) {
+ this.color = color;
+ }
+
+ public Color3f getColor() {
+ return color;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/Goal.java b/app/src/main/java/de/frajul/endlessroll/entities/Goal.java
index 8afab3e..e0f0073 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/Goal.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/Goal.java
@@ -1,23 +1,23 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.textures.Texture;
-
-public class Goal extends Entity {
-
- public Goal(Texture texture) {
- super(texture, new Vector(), 0.1f, 3);
- super.getMaxTexSize().setY(0.2f);
- }
-
- public void setGoalX(float goalX) {
- super.setPosition(new Vector(goalX - 0.05f, 0));
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.textures.Texture;
+
+public class Goal extends Entity {
+
+ public Goal(Texture texture) {
+ super(texture, new Vector(), 0.1f, 3);
+ super.getMaxTexSize().setY(0.2f);
+ }
+
+ public void setGoalX(float goalX) {
+ super.setPosition(new Vector(goalX - 0.05f, 0));
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/Obstacle.java b/app/src/main/java/de/frajul/endlessroll/entities/Obstacle.java
index b06ae51..e7b3e4a 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/Obstacle.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/Obstacle.java
@@ -1,118 +1,118 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.levels.MoveComponent;
-import de.frajul.endlessroll.levels.ObstacleData;
-import de.frajul.endlessroll.levels.worlds.World;
-
-/**
- * Created by Julian on 20.11.2015.
- */
-public class Obstacle extends Entity {
-
- private boolean deadly;
- private boolean floating;
- private boolean moving;
- private final float GRID_SQUARE_SIZE = 0.1f;
- private Vector gridSize;
- private MoveComponent moveComponent;
- private float movementMultiplier = 1.0f;
-
- private float moveProgress;
- private float moveDirection;
-
- private int bombExplosionState = -1;
-
- public Obstacle(World world, ObstacleData data, float terrainEdge, Player player) {
- 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();
- this.moveComponent = data.getMoveComponent();
- if (!floating)
- super.setToTerrain(terrainEdge);
- if (moveComponent != null && moving) {
- moveComponent.init(super.getPosition());
- moveDirection = moveComponent.getDirection();
- moveProgress = moveComponent.getStartOffset();
- //Constant player speed assumed
- float triggerX = super.getPosition().getX() - super.getWidth() / 2 - moveComponent
- .getTriggerDistance();
- float timeTillPlayerReachesTrigger = player.getSpeed() * (triggerX - player
- .getRightEdge());
- moveDirection *= -1;
- moveWithMoveComponent(timeTillPlayerReachesTrigger * 1000 * 1000, player.getSpeed());
- moveDirection *= -1;
- }
- gridSize = calcGridSize();
- }
-
- private Vector calcGridSize() {
- int gridWidth = (int) (width / GRID_SQUARE_SIZE);
- int gridHeight = (int) (height / GRID_SQUARE_SIZE);
- gridWidth = Math.max(gridWidth, 2);
- gridHeight = Math.max(gridHeight, 2);
- return new Vector(gridWidth, gridHeight);
- }
-
- public void slowMovementForOneFrame(float value) {
- movementMultiplier *= value;
- }
-
- public void moveWithMoveComponent(float frameTime, float playerSpeed) {
- if (moveComponent.isHasPlayerXSpeed()) {
- moveComponent.calcSpeedForPlayerSpeed(playerSpeed);
- }
- float distance = frameTime * moveComponent
- .getSpeed() * moveComponent.TRANSITION_VALUE * movementMultiplier;
- float newProgress = moveDirection * distance / moveComponent.getLength();
- moveProgress += newProgress;
- if (moveProgress < 0) {
- moveProgress *= -1;
- moveDirection *= -1;
- }
- while (moveProgress > 1) {
- moveProgress -= 2;
- if (moveProgress < 0) {
- moveProgress *= -1;
- moveDirection *= -1;
- }
- }
-
- super.setPosition(moveComponent.getPositionForProgress(moveProgress));
- super.setMovement(moveComponent.getMovementVector(moveDirection));
- movementMultiplier = 1.0f;
- }
-
- public boolean isMoving() {
- return moving;
- }
-
- public boolean isDeadly() {
- return deadly;
- }
-
- public boolean isFloating() {
- return floating;
- }
-
- public Vector getGridSize() {
- return gridSize;
- }
-
- public int getBombExplosionState() {
- return bombExplosionState;
- }
-
- public void setBombExplosionState(int bombExplosionState) {
- this.bombExplosionState = bombExplosionState;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.levels.MoveComponent;
+import de.frajul.endlessroll.levels.ObstacleData;
+import de.frajul.endlessroll.levels.worlds.World;
+
+/**
+ * Created by Julian on 20.11.2015.
+ */
+public class Obstacle extends Entity {
+
+ private boolean deadly;
+ private boolean floating;
+ private boolean moving;
+ private final float GRID_SQUARE_SIZE = 0.1f;
+ private Vector gridSize;
+ private MoveComponent moveComponent;
+ private float movementMultiplier = 1.0f;
+
+ private float moveProgress;
+ private float moveDirection;
+
+ private int bombExplosionState = -1;
+
+ public Obstacle(World world, ObstacleData data, float terrainEdge, Player player) {
+ 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();
+ this.moveComponent = data.getMoveComponent();
+ if (!floating)
+ super.setToTerrain(terrainEdge);
+ if (moveComponent != null && moving) {
+ moveComponent.init(super.getPosition());
+ moveDirection = moveComponent.getDirection();
+ moveProgress = moveComponent.getStartOffset();
+ //Constant player speed assumed
+ float triggerX = super.getPosition().getX() - super.getWidth() / 2 - moveComponent
+ .getTriggerDistance();
+ float timeTillPlayerReachesTrigger = player.getSpeed() * (triggerX - player
+ .getRightEdge());
+ moveDirection *= -1;
+ moveWithMoveComponent(timeTillPlayerReachesTrigger * 1000 * 1000, player.getSpeed());
+ moveDirection *= -1;
+ }
+ gridSize = calcGridSize();
+ }
+
+ private Vector calcGridSize() {
+ int gridWidth = (int) (width / GRID_SQUARE_SIZE);
+ int gridHeight = (int) (height / GRID_SQUARE_SIZE);
+ gridWidth = Math.max(gridWidth, 2);
+ gridHeight = Math.max(gridHeight, 2);
+ return new Vector(gridWidth, gridHeight);
+ }
+
+ public void slowMovementForOneFrame(float value) {
+ movementMultiplier *= value;
+ }
+
+ public void moveWithMoveComponent(float frameTime, float playerSpeed) {
+ if (moveComponent.isHasPlayerXSpeed()) {
+ moveComponent.calcSpeedForPlayerSpeed(playerSpeed);
+ }
+ float distance = frameTime * moveComponent
+ .getSpeed() * moveComponent.TRANSITION_VALUE * movementMultiplier;
+ float newProgress = moveDirection * distance / moveComponent.getLength();
+ moveProgress += newProgress;
+ if (moveProgress < 0) {
+ moveProgress *= -1;
+ moveDirection *= -1;
+ }
+ while (moveProgress > 1) {
+ moveProgress -= 2;
+ if (moveProgress < 0) {
+ moveProgress *= -1;
+ moveDirection *= -1;
+ }
+ }
+
+ super.setPosition(moveComponent.getPositionForProgress(moveProgress));
+ super.setMovement(moveComponent.getMovementVector(moveDirection));
+ movementMultiplier = 1.0f;
+ }
+
+ public boolean isMoving() {
+ return moving;
+ }
+
+ public boolean isDeadly() {
+ return deadly;
+ }
+
+ public boolean isFloating() {
+ return floating;
+ }
+
+ public Vector getGridSize() {
+ return gridSize;
+ }
+
+ public int getBombExplosionState() {
+ return bombExplosionState;
+ }
+
+ public void setBombExplosionState(int bombExplosionState) {
+ this.bombExplosionState = bombExplosionState;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/Player.java b/app/src/main/java/de/frajul/endlessroll/entities/Player.java
index 4a09f36..f9cc258 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/Player.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/Player.java
@@ -1,149 +1,149 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.particles.ParticleSource;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.entities.tools.Stasis;
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 20.11.2015.
- */
-public class Player extends Entity {
-
- public final float RADIUS = 0.1f;
- private final float START_X = -0.9f;
- private final float SPEED = 0.002f;
-
- private float startSpeed, endSpeed;
- private float speed = SPEED;
-
- private long currentSuperPowerDuration;
- private boolean hasSuperPower;
- private long superPowerDuration;
- private ParticleSource superPowerParticles;
-
- private ParticleSystem particleSystem;
- private List stases = new ArrayList<>();
- private List forces = new ArrayList<>();
- private float gravityForce;
-
- public Player() {
- super(PlayerShape.BALL.getTexture(), new Vector(), 0, 0);
- super.setWidth(RADIUS * 2);
- super.setHeight(RADIUS * 2);
- }
-
- public void startSuperPower(long duration) {
- this.superPowerDuration = duration;
- currentSuperPowerDuration = 0;
- hasSuperPower = true;
- superPowerParticles = new ParticleSource(
- new Vector(super.getPosition().x, super.getPosition().y), particleSystem.superPower);
- superPowerParticles.start();
- }
-
- public void init(PlayerShape playerShape, float terrainEdge, float startSpeed, float endSpeed, ParticleSystem particleSystem) {
- super.setTexture(playerShape.getTexture());
- super.setToTerrain(terrainEdge);
- super.getPosition().x = START_X;
- super.setMovement(new Vector(speed, 0));
- gravityForce = 0;
- hasSuperPower = false;
- forces.clear();
- this.startSpeed = startSpeed;
- this.endSpeed = endSpeed;
- setSpeedByProgress(0);
- this.particleSystem = particleSystem;
- }
-
- public void setSpeedByProgress(float progress) {
- this.speed = ((endSpeed - startSpeed) * progress + startSpeed) * SPEED;
- super.getMovement().x = speed;
- }
-
- public void preMoveUpdate(Timer timer) {
- if (hasSuperPower && superPowerParticles != null) {
- currentSuperPowerDuration += timer.getFrameTimeMilliseconds();
- hasSuperPower = superPowerDuration >= currentSuperPowerDuration;
- superPowerParticles.setPosition(new Vector(super.getPosition()));
- }
- if (!hasSuperPower && superPowerParticles != null)
- superPowerParticles.kill();
-
- for (Stasis stasis : stases)
- stasis.influencePlayerMovementValues(this);
-
- for (float force : forces)
- super.getMovement().y += force;
- super.getMovement().y += gravityForce;
- }
-
- public void clearAllForces() {
- forces.clear();
- gravityForce = 0;
- }
-
- public void manipulateAllForces(float factor) {
- for (int i = 0; i < forces.size(); i++)
- forces.set(i, forces.get(i) * factor);
- gravityForce *= factor * factor;
- }
-
- public void postMoveUpdate() {
- stases.clear();
- forces.clear();
- }
-
- public float getProgress(float goalX) {
- return (getPosition().x - START_X) / (goalX - START_X);
- }
-
- public float getXFromStart(){
- return getPosition().x - START_X;
- }
-
- public float getSpeed() {
- return speed;
- }
-
- public boolean hasSuperPower() {
- return hasSuperPower;
- }
-
- public void addStasis(Stasis stasis) {
- stases.add(stasis);
- }
-
- public List getStases() {
- return stases;
- }
-
- public void addForce(float force) {
- forces.add(force);
- }
-
- public void setGravityForce(float gravityForce) {
- this.gravityForce = gravityForce;
- }
-
- @Override
- public void move(Vector movement) {
- super.move(movement);
- float circumference = 2 * 3.14f * RADIUS;
- float rotation = -360 * (movement.x / circumference);
- rotate(rotation);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.particles.ParticleSource;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.entities.tools.Stasis;
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 20.11.2015.
+ */
+public class Player extends Entity {
+
+ public final float RADIUS = 0.1f;
+ private final float START_X = -0.9f;
+ private final float SPEED = 0.002f;
+
+ private float startSpeed, endSpeed;
+ private float speed = SPEED;
+
+ private long currentSuperPowerDuration;
+ private boolean hasSuperPower;
+ private long superPowerDuration;
+ private ParticleSource superPowerParticles;
+
+ private ParticleSystem particleSystem;
+ private List stases = new ArrayList<>();
+ private List forces = new ArrayList<>();
+ private float gravityForce;
+
+ public Player() {
+ super(PlayerShape.BALL.getTexture(), new Vector(), 0, 0);
+ super.setWidth(RADIUS * 2);
+ super.setHeight(RADIUS * 2);
+ }
+
+ public void startSuperPower(long duration) {
+ this.superPowerDuration = duration;
+ currentSuperPowerDuration = 0;
+ hasSuperPower = true;
+ superPowerParticles = new ParticleSource(
+ new Vector(super.getPosition().x, super.getPosition().y), particleSystem.superPower);
+ superPowerParticles.start();
+ }
+
+ public void init(PlayerShape playerShape, float terrainEdge, float startSpeed, float endSpeed, ParticleSystem particleSystem) {
+ super.setTexture(playerShape.getTexture());
+ super.setToTerrain(terrainEdge);
+ super.getPosition().x = START_X;
+ super.setMovement(new Vector(speed, 0));
+ gravityForce = 0;
+ hasSuperPower = false;
+ forces.clear();
+ this.startSpeed = startSpeed;
+ this.endSpeed = endSpeed;
+ setSpeedByProgress(0);
+ this.particleSystem = particleSystem;
+ }
+
+ public void setSpeedByProgress(float progress) {
+ this.speed = ((endSpeed - startSpeed) * progress + startSpeed) * SPEED;
+ super.getMovement().x = speed;
+ }
+
+ public void preMoveUpdate(Timer timer) {
+ if (hasSuperPower && superPowerParticles != null) {
+ currentSuperPowerDuration += timer.getFrameTimeMilliseconds();
+ hasSuperPower = superPowerDuration >= currentSuperPowerDuration;
+ superPowerParticles.setPosition(new Vector(super.getPosition()));
+ }
+ if (!hasSuperPower && superPowerParticles != null)
+ superPowerParticles.kill();
+
+ for (Stasis stasis : stases)
+ stasis.influencePlayerMovementValues(this);
+
+ for (float force : forces)
+ super.getMovement().y += force;
+ super.getMovement().y += gravityForce;
+ }
+
+ public void clearAllForces() {
+ forces.clear();
+ gravityForce = 0;
+ }
+
+ public void manipulateAllForces(float factor) {
+ for (int i = 0; i < forces.size(); i++)
+ forces.set(i, forces.get(i) * factor);
+ gravityForce *= factor * factor;
+ }
+
+ public void postMoveUpdate() {
+ stases.clear();
+ forces.clear();
+ }
+
+ public float getProgress(float goalX) {
+ return (getPosition().x - START_X) / (goalX - START_X);
+ }
+
+ public float getXFromStart(){
+ return getPosition().x - START_X;
+ }
+
+ public float getSpeed() {
+ return speed;
+ }
+
+ public boolean hasSuperPower() {
+ return hasSuperPower;
+ }
+
+ public void addStasis(Stasis stasis) {
+ stases.add(stasis);
+ }
+
+ public List getStases() {
+ return stases;
+ }
+
+ public void addForce(float force) {
+ forces.add(force);
+ }
+
+ public void setGravityForce(float gravityForce) {
+ this.gravityForce = gravityForce;
+ }
+
+ @Override
+ public void move(Vector movement) {
+ super.move(movement);
+ float circumference = 2 * 3.14f * RADIUS;
+ float rotation = -360 * (movement.x / circumference);
+ rotate(rotation);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/Vertex.java b/app/src/main/java/de/frajul/endlessroll/entities/Vertex.java
index 9392fe8..3eb29f8 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/Vertex.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/Vertex.java
@@ -1,51 +1,51 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities;
-
-import de.frajul.endlessroll.main.GameLog;
-
-/**
- * Created by Julian on 11.12.2016.
- */
-
-public enum Vertex {
-
- UL(0, -1, 1), UR(1, 1, 1), BL(3, -1, -1), BR(2, 1, -1);
-
- private int index;
- private float x, y;
-
- Vertex(int index, float x, float y) {
- this.index = index;
- this.x = x;
- this.y = y;
- }
-
- public Vertex getNext(boolean clockwise) {
- int newIndex = index + 1;
- if (!clockwise)
- newIndex = index - 1;
- if (newIndex > 3)
- newIndex = 0;
- if (newIndex < 0)
- newIndex = 3;
- for (Vertex vertex : values())
- if (vertex.index == newIndex)
- return vertex;
- GameLog.e("No vertex with index " + index + " found!!!");
- return null;
- }
-
- public float getX() {
- return x;
- }
-
- public float getY() {
- return y;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities;
+
+import de.frajul.endlessroll.main.GameLog;
+
+/**
+ * Created by Julian on 11.12.2016.
+ */
+
+public enum Vertex {
+
+ UL(0, -1, 1), UR(1, 1, 1), BL(3, -1, -1), BR(2, 1, -1);
+
+ private int index;
+ private float x, y;
+
+ Vertex(int index, float x, float y) {
+ this.index = index;
+ this.x = x;
+ this.y = y;
+ }
+
+ public Vertex getNext(boolean clockwise) {
+ int newIndex = index + 1;
+ if (!clockwise)
+ newIndex = index - 1;
+ if (newIndex > 3)
+ newIndex = 0;
+ if (newIndex < 0)
+ newIndex = 3;
+ for (Vertex vertex : values())
+ if (vertex.index == newIndex)
+ return vertex;
+ GameLog.e("No vertex with index " + index + " found!!!");
+ return null;
+ }
+
+ public float getX() {
+ return x;
+ }
+
+ public float getY() {
+ return y;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collectables/Collectables.java b/app/src/main/java/de/frajul/endlessroll/entities/collectables/Collectables.java
index e723393..e4c85a8 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collectables/Collectables.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collectables/Collectables.java
@@ -1,74 +1,74 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collectables;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import de.frajul.endlessroll.data.SynchronizedArrayList;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.PositionData;
-
-/**
- * Created by Julian on 06.09.2017.
- */
-
-public class Collectables extends SynchronizedArrayList {
-
- private List stars = Collections.synchronizedList(new ArrayList());
- private Energy energy;
-
- public void init(Level level, TexturePack textures) {
- for (int i = 0; i < level.getStars().size(); i++) {
- if (level.isStarCollected(i))
- continue;
- addStar(new Star(i, textures.star, level.getStars().get(i)));
- }
-
- PositionData energyData = level.getEnergyData();
- if (energyData != null && !level.isEnergyCollected()) {
- setEnergy(new Energy(textures.energy, energyData));
- }
- }
-
- @Override
- public synchronized boolean remove(Object object) {
- if (object instanceof Star)
- stars.remove(object);
- else
- energy = null;
- return super.remove(object);
- }
-
- private void addStar(Star star) {
- stars.add(star);
- super.add(star);
- }
-
- private void setEnergy(Energy energy) {
- this.energy = energy;
- super.add(energy);
- }
-
- public void reset() {
- stars.clear();
- energy = null;
- super.clear();
- }
-
- public List getStars() {
- return stars;
- }
-
- public Energy getEnergy() {
- return energy;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collectables;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import de.frajul.endlessroll.data.SynchronizedArrayList;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.PositionData;
+
+/**
+ * Created by Julian on 06.09.2017.
+ */
+
+public class Collectables extends SynchronizedArrayList {
+
+ private List stars = Collections.synchronizedList(new ArrayList());
+ private Energy energy;
+
+ public void init(Level level, TexturePack textures) {
+ for (int i = 0; i < level.getStars().size(); i++) {
+ if (level.isStarCollected(i))
+ continue;
+ addStar(new Star(i, textures.star, level.getStars().get(i)));
+ }
+
+ PositionData energyData = level.getEnergyData();
+ if (energyData != null && !level.isEnergyCollected()) {
+ setEnergy(new Energy(textures.energy, energyData));
+ }
+ }
+
+ @Override
+ public synchronized boolean remove(Object object) {
+ if (object instanceof Star)
+ stars.remove(object);
+ else
+ energy = null;
+ return super.remove(object);
+ }
+
+ private void addStar(Star star) {
+ stars.add(star);
+ super.add(star);
+ }
+
+ private void setEnergy(Energy energy) {
+ this.energy = energy;
+ super.add(energy);
+ }
+
+ public void reset() {
+ stars.clear();
+ energy = null;
+ super.clear();
+ }
+
+ public List getStars() {
+ return stars;
+ }
+
+ public Energy getEnergy() {
+ return energy;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collectables/Energy.java b/app/src/main/java/de/frajul/endlessroll/entities/collectables/Energy.java
index 1a84eb3..7d26fc7 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collectables/Energy.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collectables/Energy.java
@@ -1,24 +1,24 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collectables;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.AnimatedEntity;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.levels.PositionData;
-
-public class Energy extends AnimatedEntity {
-
- private final static float SIZE = 0.3f;
-
- public Energy(Texture texture, PositionData data) {
- super(texture, new Vector(data.getX(), data.getY()), SIZE, SIZE);
- animation.setLooping(true);
- animation.setRequiredDelta(130);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collectables;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.AnimatedEntity;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.levels.PositionData;
+
+public class Energy extends AnimatedEntity {
+
+ private final static float SIZE = 0.3f;
+
+ public Energy(Texture texture, PositionData data) {
+ super(texture, new Vector(data.getX(), data.getY()), SIZE, SIZE);
+ animation.setLooping(true);
+ animation.setRequiredDelta(130);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collectables/Star.java b/app/src/main/java/de/frajul/endlessroll/entities/collectables/Star.java
index 74bad9e..b1a1d43 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collectables/Star.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collectables/Star.java
@@ -1,28 +1,28 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collectables;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.levels.PositionData;
-
-public class Star extends Entity {
-
- private final static float SIZE = 0.25f;
- private int index;
-
- public Star(int index, Texture texture, PositionData data) {
- super(texture, new Vector(data.getX(), data.getY()), SIZE, SIZE);
- this.index = index;
- }
-
- public int getIndex() {
- return index;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collectables;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.levels.PositionData;
+
+public class Star extends Entity {
+
+ private final static float SIZE = 0.25f;
+ private int index;
+
+ public Star(int index, Texture texture, PositionData data) {
+ super(texture, new Vector(data.getX(), data.getY()), SIZE, SIZE);
+ this.index = index;
+ }
+
+ public int getIndex() {
+ return index;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/CircleTriangleCollisionDetector.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/CircleTriangleCollisionDetector.java
index efb70d7..c2d0914 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/CircleTriangleCollisionDetector.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/CircleTriangleCollisionDetector.java
@@ -1,82 +1,82 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.collision.geometry.Circle;
-import de.frajul.endlessroll.entities.collision.geometry.Triangle;
-
-/**
- * Created by Julian on 28.02.2016.
- */
-public class CircleTriangleCollisionDetector {
-
- public boolean isCircleTriangleCollision(Circle circle, Triangle triangle) {
- if (circleIntersectingWithTriangleVertices(circle, triangle))
- return true;
-
- if (circleCenterInsideTriangle(circle, triangle))
- return true;
-
- return circleIntersectingWithTriangleEdges(circle, triangle);
- }
-
- private boolean circleIntersectingWithTriangleEdges(Circle circle, Triangle triangle) {
- Vector edge1 = triangle.getBottomRightVertex().vectorTo(triangle.getTopRightVertex());
- Vector edge2 = triangle.getTopRightVertex().vectorTo(triangle.getBottomLeftVertex());
- Vector edge3 = triangle.getBottomLeftVertex().vectorTo(triangle.getBottomRightVertex());
-
- boolean intersectingWithEdge1 = circleIntersectingWithTriangleEdge(circle, triangle.getBottomRightVertex(), edge1);
- boolean intersectingWithEdge2 = circleIntersectingWithTriangleEdge(circle, triangle.getTopRightVertex(), edge2);
- boolean intersectingWithEdge3 = circleIntersectingWithTriangleEdge(circle, triangle.getBottomLeftVertex(), edge3);
- return intersectingWithEdge1 || intersectingWithEdge2 || intersectingWithEdge3;
- }
-
- private boolean circleIntersectingWithTriangleEdge(Circle circle, Vector vertex, Vector edge) {
- Vector vertexToCenter = vertex.vectorTo(circle.getPosition());
- Vector kVector = new Vector(vertexToCenter).mul(edge);
- float k = kVector.x + kVector.y;
-
- if (k > 0) {
- float length = edge.length();
- k = k / length;
-
- if (k < length)
- return Math.sqrt(vertexToCenter.x * vertexToCenter.x + vertexToCenter.y * vertexToCenter.y - k * k) <= circle.getRadius();
- }
- return false;
- }
-
- private boolean circleCenterInsideTriangle(Circle circle, Triangle triangle) {
- Vector vertex1To2 = triangle.getBottomRightVertex().vectorTo(triangle.getTopRightVertex());
- Vector vertex2To3 = triangle.getTopRightVertex().vectorTo(triangle.getBottomLeftVertex());
- Vector vertex3To1 = triangle.getBottomLeftVertex().vectorTo(triangle.getBottomRightVertex());
- Vector vertex1ToCenter = triangle.getBottomRightVertex().vectorTo(circle.getPosition());
- Vector vertex2ToCenter = triangle.getTopRightVertex().vectorTo(circle.getPosition());
- Vector vertex3ToCenter = triangle.getBottomLeftVertex().vectorTo(circle.getPosition());
-
- boolean centerInsideV1V2 = vertex1To2.y * vertex1ToCenter.x - vertex1To2.x * vertex1ToCenter.y < 0;
- boolean centerInsideV2V3 = vertex2To3.y * vertex2ToCenter.x - vertex2To3.x * vertex2ToCenter.y < 0;
- boolean centerInsideV3V1 = vertex3To1.y * vertex3ToCenter.x - vertex3To1.x * vertex3ToCenter.y < 0;
-
- return centerInsideV1V2 && centerInsideV2V3 && centerInsideV3V1;
- }
-
- private boolean circleIntersectingWithTriangleVertices(Circle circle, Triangle triangle) {
- boolean intersectingWithVertex1 = circleIntersectingWithTriangleVertex(circle, triangle.getBottomRightVertex());
- boolean intersectingWithVertex2 = circleIntersectingWithTriangleVertex(circle, triangle.getTopRightVertex());
- boolean intersectingWithVertex3 = circleIntersectingWithTriangleVertex(circle, triangle.getBottomLeftVertex());
- return intersectingWithVertex1 || intersectingWithVertex2 || intersectingWithVertex3;
- }
-
- private boolean circleIntersectingWithTriangleVertex(Circle circle, Vector vertex) {
- Vector centerToVertex = circle.getPosition().vectorTo(vertex);
- return centerToVertex.length() <= circle.getRadius();
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.collision.geometry.Circle;
+import de.frajul.endlessroll.entities.collision.geometry.Triangle;
+
+/**
+ * Created by Julian on 28.02.2016.
+ */
+public class CircleTriangleCollisionDetector {
+
+ public boolean isCircleTriangleCollision(Circle circle, Triangle triangle) {
+ if (circleIntersectingWithTriangleVertices(circle, triangle))
+ return true;
+
+ if (circleCenterInsideTriangle(circle, triangle))
+ return true;
+
+ return circleIntersectingWithTriangleEdges(circle, triangle);
+ }
+
+ private boolean circleIntersectingWithTriangleEdges(Circle circle, Triangle triangle) {
+ Vector edge1 = triangle.getBottomRightVertex().vectorTo(triangle.getTopRightVertex());
+ Vector edge2 = triangle.getTopRightVertex().vectorTo(triangle.getBottomLeftVertex());
+ Vector edge3 = triangle.getBottomLeftVertex().vectorTo(triangle.getBottomRightVertex());
+
+ boolean intersectingWithEdge1 = circleIntersectingWithTriangleEdge(circle, triangle.getBottomRightVertex(), edge1);
+ boolean intersectingWithEdge2 = circleIntersectingWithTriangleEdge(circle, triangle.getTopRightVertex(), edge2);
+ boolean intersectingWithEdge3 = circleIntersectingWithTriangleEdge(circle, triangle.getBottomLeftVertex(), edge3);
+ return intersectingWithEdge1 || intersectingWithEdge2 || intersectingWithEdge3;
+ }
+
+ private boolean circleIntersectingWithTriangleEdge(Circle circle, Vector vertex, Vector edge) {
+ Vector vertexToCenter = vertex.vectorTo(circle.getPosition());
+ Vector kVector = new Vector(vertexToCenter).mul(edge);
+ float k = kVector.x + kVector.y;
+
+ if (k > 0) {
+ float length = edge.length();
+ k = k / length;
+
+ if (k < length)
+ return Math.sqrt(vertexToCenter.x * vertexToCenter.x + vertexToCenter.y * vertexToCenter.y - k * k) <= circle.getRadius();
+ }
+ return false;
+ }
+
+ private boolean circleCenterInsideTriangle(Circle circle, Triangle triangle) {
+ Vector vertex1To2 = triangle.getBottomRightVertex().vectorTo(triangle.getTopRightVertex());
+ Vector vertex2To3 = triangle.getTopRightVertex().vectorTo(triangle.getBottomLeftVertex());
+ Vector vertex3To1 = triangle.getBottomLeftVertex().vectorTo(triangle.getBottomRightVertex());
+ Vector vertex1ToCenter = triangle.getBottomRightVertex().vectorTo(circle.getPosition());
+ Vector vertex2ToCenter = triangle.getTopRightVertex().vectorTo(circle.getPosition());
+ Vector vertex3ToCenter = triangle.getBottomLeftVertex().vectorTo(circle.getPosition());
+
+ boolean centerInsideV1V2 = vertex1To2.y * vertex1ToCenter.x - vertex1To2.x * vertex1ToCenter.y < 0;
+ boolean centerInsideV2V3 = vertex2To3.y * vertex2ToCenter.x - vertex2To3.x * vertex2ToCenter.y < 0;
+ boolean centerInsideV3V1 = vertex3To1.y * vertex3ToCenter.x - vertex3To1.x * vertex3ToCenter.y < 0;
+
+ return centerInsideV1V2 && centerInsideV2V3 && centerInsideV3V1;
+ }
+
+ private boolean circleIntersectingWithTriangleVertices(Circle circle, Triangle triangle) {
+ boolean intersectingWithVertex1 = circleIntersectingWithTriangleVertex(circle, triangle.getBottomRightVertex());
+ boolean intersectingWithVertex2 = circleIntersectingWithTriangleVertex(circle, triangle.getTopRightVertex());
+ boolean intersectingWithVertex3 = circleIntersectingWithTriangleVertex(circle, triangle.getBottomLeftVertex());
+ return intersectingWithVertex1 || intersectingWithVertex2 || intersectingWithVertex3;
+ }
+
+ private boolean circleIntersectingWithTriangleVertex(Circle circle, Vector vertex) {
+ Vector centerToVertex = circle.getPosition().vectorTo(vertex);
+ return centerToVertex.length() <= circle.getRadius();
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/CollisionDetector.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/CollisionDetector.java
index 7f24757..9171ef5 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/CollisionDetector.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/CollisionDetector.java
@@ -1,356 +1,356 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collision.collisionData.EntityCollisionData;
-import de.frajul.endlessroll.entities.collision.geometry.Circle;
-import de.frajul.endlessroll.entities.collision.geometry.Geometry;
-import de.frajul.endlessroll.entities.collision.geometry.Quad;
-import de.frajul.endlessroll.entities.collision.geometry.Triangle;
-import de.frajul.endlessroll.entities.tileLists.Tile;
-
-/**
- * Created by Julian on 01.12.2015.
- */
-public class CollisionDetector {
-
- private CircleTriangleCollisionDetector triangleDetector;
-
- public CollisionDetector() {
- triangleDetector = new CircleTriangleCollisionDetector();
- }
-
- public boolean isCollision(Geometry g1, Geometry g2) {
- if (g1 instanceof Triangle) {
- if (g2 instanceof Triangle)
- return isTriangleTriangleCollision((Triangle) g1, (Triangle) g2);
- if (g2 instanceof Quad)
- return isQuadTriangleCollision((Quad) g2, (Triangle) g1);
- if (g2 instanceof Circle)
- return isCircleTriangleCollision((Circle) g2, (Triangle) g1);
- }
- if (g1 instanceof Quad) {
- if (g2 instanceof Triangle)
- return isQuadTriangleCollision((Quad) g1, (Triangle) g2);
- if (g2 instanceof Quad)
- return isQuadQuadCollision((Quad) g1, (Quad) g2);
- if (g2 instanceof Circle)
- return isCircleQuadCollision((Circle) g2, (Quad) g1);
- }
- if (g1 instanceof Circle) {
- if (g2 instanceof Triangle)
- return isCircleTriangleCollision((Circle) g1, (Triangle) g2);
- if (g2 instanceof Quad)
- return isCircleQuadCollision((Circle) g1, (Quad) g2);
- if (g2 instanceof Circle)
- return isCircleCircleCollision((Circle) g1, (Circle) g2);
- }
- return false;
- }
-
- public boolean isPointInQuad(Vector point, Quad quad) {
- if (point.getX() >= quad.getLeftEdge() && point.getX() <= quad.getRightEdge()) {
- return point.getY() >= quad.getBottomEdge() && point.getY() <= quad.getTopEdge();
- }
- return false;
- }
-
- public boolean isCircleCircleCollision(Circle c1, Circle c2) {
- float distance = Math.abs(c1.getPosition().vectorTo(c2.getPosition()).length());
- float radiusSum = c1.getRadius() + c2.getRadius();
- return distance < radiusSum;
- }
-
- public boolean isCircleQuadCollision(Circle circle, Quad quad) {
- Vector distance = circle.getPosition().vectorTo(quad.getPosition());
- distance.x = Math.abs(distance.x);
- distance.y = Math.abs(distance.y);
-
- if (distance.x > circle.getRadius() + quad.getWidth() / 2)
- return false;
- if (distance.y > circle.getRadius() + quad.getHeight() / 2)
- return false;
-
- if (distance.x <= quad.getWidth() / 2)
- return true;
- if (distance.y <= quad.getHeight() / 2)
- return true;
-
- float cornerDistance_sq = (distance.x - quad.getWidth() / 2) * (distance.x - quad
- .getWidth() / 2) + (distance.y - quad.getHeight() / 2) * (distance.y - quad
- .getHeight() / 2);
- return cornerDistance_sq <= circle.getRadius() * circle.getRadius();
- }
-
- public boolean isCircleTriangleCollision(Circle circle, Triangle triangle) {
- return triangleDetector.isCircleTriangleCollision(circle, triangle);
- }
-
- public boolean isQuadQuadCollision(Quad q1, Quad q2) {
- float xDistance = Math.abs(q2.getPosition().x - q1.getPosition().x);
- float yDistance = Math.abs(q2.getPosition().y - q1.getPosition().y);
- if (xDistance >= q1.getWidth() / 2 + q2.getWidth() / 2)
- return false;
- return !(yDistance >= q1.getHeight() / 2 + q2.getHeight() / 2);
- }
-
- public boolean isTriangleTriangleCollision(Triangle triangle1, Triangle triangle2) {
- boolean triangle1Vertex1InTriangle2 = isVertexInTriangle(triangle1.getBottomRightVertex(), triangle2);
- if (triangle1Vertex1InTriangle2)
- return true;
- boolean triangle1Vertex2InTriangle2 = isVertexInTriangle(triangle1.getTopRightVertex(), triangle2);
- if (triangle1Vertex2InTriangle2)
- return true;
- boolean triangle1Vertex3InTriangle2 = isVertexInTriangle(triangle1.getBottomLeftVertex(), triangle2);
- if (triangle1Vertex3InTriangle2)
- return true;
- boolean triangle2Vertex1InTriangle1 = isVertexInTriangle(triangle2.getBottomRightVertex(), triangle1);
- if (triangle2Vertex1InTriangle1)
- return true;
- boolean triangle2Vertex2InTriangle1 = isVertexInTriangle(triangle2.getTopRightVertex(), triangle1);
- if (triangle2Vertex2InTriangle1)
- return true;
- boolean triangle2Vertex3InTriangle1 = isVertexInTriangle(triangle2.getBottomLeftVertex(), triangle1);
- return triangle2Vertex3InTriangle1;
- }
-
- public boolean isQuadTriangleCollision(Quad quad, Triangle triangle) {
- boolean quadVertex1InTriangle = isVertexInTriangle(
- new Vector(quad.getLeftEdge(), quad.getTopEdge()), triangle);
- if (quadVertex1InTriangle)
- return true;
- boolean quadVertex2InTriangle = isVertexInTriangle(
- new Vector(quad.getRightEdge(), quad.getTopEdge()), triangle);
- if (quadVertex2InTriangle)
- return true;
- boolean quadVertex3InTriangle = isVertexInTriangle(
- new Vector(quad.getRightEdge(), quad.getBottomEdge()), triangle);
- if (quadVertex3InTriangle)
- return true;
- boolean quadVertex4InTriangle = isVertexInTriangle(
- new Vector(quad.getLeftEdge(), quad.getBottomEdge()), triangle);
- if (quadVertex4InTriangle)
- return true;
- boolean triangleVertex1InQuad = isPointInQuad(triangle.getBottomRightVertex(), quad);
- if (triangleVertex1InQuad)
- return true;
- boolean triangleVertex2InQuad = isPointInQuad(triangle.getTopRightVertex(), quad);
- if (triangleVertex2InQuad)
- return true;
- boolean triangleVertex3InQuad = isPointInQuad(triangle.getBottomLeftVertex(), quad);
- if (triangleVertex3InQuad)
- return true;
- return triangle.getTopEdge() >= quad.getTopEdge() && triangle.getBottomEdge() <= quad.getBottomEdge() && ((triangle.getLeftEdge() <= quad.getRightEdge() && triangle.getLeftEdge() >= quad.getLeftEdge()) || (triangle.getRightEdge() <= quad.getRightEdge() && triangle.getRightEdge() >= quad.getLeftEdge()));
- }
-
- private boolean isVertexInTriangle(Vector vertex, Triangle triangle) {
- if (!isPointInQuad(vertex, triangle))
- return false;
- float gradient = triangle.getGradient();
- float maxVertexY = vertex.getX() * gradient + triangle.getBottomEdge();
- return vertex.getY() <= maxVertexY;
- }
-
- public EntityCollisionData playerTerrainCollision(Player player, Tile terrainTile) {
- Circle circle = new Circle(player);
- if (circle.getTopEdge() < terrainTile.getTopEdge()) {
- float xDistance = Math.abs(circle.getPosition().x - terrainTile.getPosition().x);
- if (xDistance < circle.getRadius() + terrainTile.getWidth() / 2)
- return new EntityCollisionData(terrainTile, Edge.LEFT);
- }
-
- if (isCircleQuadCollision(circle, terrainTile)) {
- Edge edge = circleQuadCollisionEdge(circle, player.getMovement(), terrainTile,
- terrainTile.getMovement());
- return new EntityCollisionData(terrainTile, edge);
- }
- return new EntityCollisionData(null, null);
- }
-
- public EntityCollisionData playerCeilingCollision(Player player, Tile ceilingTile) {
- Circle circle = new Circle(player);
- if (circle.getBottomEdge() > ceilingTile.getBottomEdge()) {
- float xDistance = Math.abs(circle.getPosition().x - ceilingTile.getPosition().x);
- if (xDistance < circle.getRadius() + ceilingTile.getWidth() / 2)
- return new EntityCollisionData(ceilingTile, Edge.LEFT);
- }
-
- if (isCircleQuadCollision(circle, ceilingTile)) {
- Edge edge = circleQuadCollisionEdge(circle, player.getMovement(), ceilingTile,
- ceilingTile.getMovement());
- return new EntityCollisionData(ceilingTile, edge);
- }
- return new EntityCollisionData(null, null);
- }
-
- public EntityCollisionData playerEntityCollision(Player player, Entity entity) {
- Circle circle = new Circle(player);
- Quad quad = entity;
- if (isCircleQuadCollision(circle, quad)) {
- Edge edge = circleQuadCollisionEdge(circle, player.getMovement(), quad,
- entity.getMovement());
- return new EntityCollisionData(entity, edge);
- }
- return new EntityCollisionData(null, null);
- }
-
- private Edge circleQuadCollisionEdge(Circle circle, Vector circleMovement, Quad quad, Vector quadMovement) {
- boolean circleFullyInsideQuad = false;
- if (circle.getPosition().getX() + circle.getRadius() <= quad.getRightEdge() && circle
- .getPosition().getX() - circle.getRadius() >= quad.getLeftEdge()) {
- if (circle.getPosition().getY() + circle.getRadius() <= quad.getTopEdge() && circle
- .getPosition().getY() - circle.getRadius() >= quad.getBottomEdge()) {
- circleFullyInsideQuad = true;
- }
- }
- if (circleFullyInsideQuad)
- return circleCenterInQuadCollisionEdge(circle, circleMovement, quad, quadMovement);
- return circlePartlyOutsideQuadCollisionEdge(circle, circleMovement, quad, quadMovement);
- }
-
- private Edge circlePartlyOutsideQuadCollisionEdge(Circle circle, Vector circleMovement, Quad quad, Vector quadMovement) {
- Vector relativeMovement = new Vector(circleMovement).translate(quadMovement.negate());
-
- Edge edge = Edge.NONE;
- if (circle.getPosition().getY() + circle.getRadius() >= quad.getTopEdge())
- edge = Edge.TOP;
- else if (circle.getPosition().getY() - circle.getRadius() <= quad.getBottomEdge())
- edge = Edge.BOTTOM;
- if (circle.getPosition().getX() - circle.getRadius() <= quad.getLeftEdge()) {
- if (edge != Edge.NONE) {
- if (edge == Edge.TOP) {
- float m = -1;
- float t = quad.getTopEdge() - m * quad.getLeftEdge();
- if (circle.getPosition().getY() >= m * circle.getPosition().getX() + t)
- edge = Edge.TOP;
- else
- edge = Edge.LEFT;
- } else if (edge == Edge.BOTTOM) {
- float m = 1;
- float t = quad.getBottomEdge() - m * quad.getLeftEdge();
- if (circle.getPosition().getY() <= m * circle.getPosition().getX() + t)
- edge = Edge.BOTTOM;
- else
- edge = Edge.LEFT;
- }
- } else
- edge = Edge.LEFT;
- } else if (circle.getPosition().getX() + circle.getRadius() >= quad.getRightEdge()) {
- if (edge != Edge.NONE) {
- if (edge == Edge.TOP) {
- //This movement check is because if player falls with too much speed on topLeft Vertex, sometimes RIGHT-Edge is returned
- if (relativeMovement.getY() < 0) {
- return Edge.TOP;
- } else {
- float m = 1;
- float t = quad.getTopEdge() - m * quad.getRightEdge();
- if (circle.getPosition().getY() >= m * circle.getPosition().getX() + t)
- edge = Edge.TOP;
- else
- edge = Edge.RIGHT;
- }
- } else if (edge == Edge.BOTTOM) {
- float m = -1;
- float t = quad.getBottomEdge() - m * quad.getRightEdge();
- if (circle.getPosition().getY() <= m * circle.getPosition().getX() + t)
- edge = Edge.BOTTOM;
- else
- edge = Edge.RIGHT;
- }
- } else
- edge = Edge.RIGHT;
- }
- return edge;
- }
-
- private Edge circleCenterInQuadCollisionEdge(Circle circle, Vector circleMovement, Quad quad, Vector quadMovement) {
- Vector relativeMovement = new Vector(circleMovement).translate(quadMovement.negate());
-
- float m = relativeMovement.getY() / relativeMovement.getX();
- float t = circle.getPosition().getY() - m * circle.getPosition().getX();
-
- float yAtLeftEdge = m * quad.getLeftEdge() + t;
- boolean touchingLeftEdge = yAtLeftEdge < quad.getTopEdge() && yAtLeftEdge > quad
- .getBottomEdge();
- float yAtRightEdge = m * quad.getRightEdge() + t;
- boolean touchingRightEdge = yAtRightEdge < quad.getTopEdge() && yAtRightEdge > quad
- .getBottomEdge();
-
- float xAtTopEdge = (quad.getTopEdge() - t) / m;
- boolean touchingTopEdge = xAtTopEdge >= quad.getLeftEdge() && xAtTopEdge <= quad
- .getRightEdge();
- float xAtBottomEdge = (quad.getBottomEdge() - t) / m;
- boolean touchingBottomEdge = xAtBottomEdge >= quad.getLeftEdge() && xAtBottomEdge <= quad
- .getRightEdge();
-
- if (relativeMovement.getX() == 0) {
- if (circle.getPosition().getX() - circle.getRadius() <= quad.getRightEdge() && circle
- .getPosition().getX() + circle.getRadius() >= quad.getLeftEdge()) {
- touchingTopEdge = true;
- touchingBottomEdge = true;
- }
- }
-
- // CORNERS BELONGING TO TOP / BOTTOM EDGES
- if (touchingLeftEdge) {
- if (touchingRightEdge) {
- if (circle.getPosition().getX() <= quad.getPosition().getX())
- return Edge.LEFT;
- return Edge.RIGHT;
- } else if (touchingTopEdge) {
- // Normale through vertex
- float mn = -1 / m;
- float tn = quad.getTopEdge() - mn * quad.getLeftEdge();
- if (circle.getPosition().getY() < mn * circle.getPosition().getX() + tn)
- return Edge.LEFT;
- return Edge.TOP;
- } else if (touchingBottomEdge) {
- // Normale through vertex
- float mn = -1 / m;
- float tn = quad.getBottomEdge() - mn * quad.getLeftEdge();
- if (circle.getPosition().getY() > mn * circle.getPosition().getX() + tn)
- return Edge.LEFT;
- return Edge.BOTTOM;
- } else {
- return Edge.LEFT;
- }
- } else if (touchingRightEdge) {
- if (touchingTopEdge) {
- // Normale through vertex
- float mn = -1 / m;
- float tn = quad.getTopEdge() - mn * quad.getRightEdge();
- if (circle.getPosition().getY() < mn * circle.getPosition().getX() + tn)
- return Edge.RIGHT;
- return Edge.TOP;
- } else if (touchingBottomEdge) {
- // Normale through vertex
- float mn = -1 / m;
- float tn = quad.getBottomEdge() - mn * quad.getRightEdge();
- if (circle.getPosition().getY() > mn * circle.getPosition().getX() + tn)
- return Edge.RIGHT;
- return Edge.BOTTOM;
- } else {
- return Edge.RIGHT;
- }
- } else if (touchingTopEdge) {
- if (touchingBottomEdge) {
- if (circle.getPosition().getY() >= quad.getPosition().getY())
- return Edge.TOP;
- return Edge.BOTTOM;
- } else {
- return Edge.TOP;
- }
- } else if (touchingBottomEdge) {
- return Edge.BOTTOM;
- }
- return Edge.NONE;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collision.collisionData.EntityCollisionData;
+import de.frajul.endlessroll.entities.collision.geometry.Circle;
+import de.frajul.endlessroll.entities.collision.geometry.Geometry;
+import de.frajul.endlessroll.entities.collision.geometry.Quad;
+import de.frajul.endlessroll.entities.collision.geometry.Triangle;
+import de.frajul.endlessroll.entities.tileLists.Tile;
+
+/**
+ * Created by Julian on 01.12.2015.
+ */
+public class CollisionDetector {
+
+ private CircleTriangleCollisionDetector triangleDetector;
+
+ public CollisionDetector() {
+ triangleDetector = new CircleTriangleCollisionDetector();
+ }
+
+ public boolean isCollision(Geometry g1, Geometry g2) {
+ if (g1 instanceof Triangle) {
+ if (g2 instanceof Triangle)
+ return isTriangleTriangleCollision((Triangle) g1, (Triangle) g2);
+ if (g2 instanceof Quad)
+ return isQuadTriangleCollision((Quad) g2, (Triangle) g1);
+ if (g2 instanceof Circle)
+ return isCircleTriangleCollision((Circle) g2, (Triangle) g1);
+ }
+ if (g1 instanceof Quad) {
+ if (g2 instanceof Triangle)
+ return isQuadTriangleCollision((Quad) g1, (Triangle) g2);
+ if (g2 instanceof Quad)
+ return isQuadQuadCollision((Quad) g1, (Quad) g2);
+ if (g2 instanceof Circle)
+ return isCircleQuadCollision((Circle) g2, (Quad) g1);
+ }
+ if (g1 instanceof Circle) {
+ if (g2 instanceof Triangle)
+ return isCircleTriangleCollision((Circle) g1, (Triangle) g2);
+ if (g2 instanceof Quad)
+ return isCircleQuadCollision((Circle) g1, (Quad) g2);
+ if (g2 instanceof Circle)
+ return isCircleCircleCollision((Circle) g1, (Circle) g2);
+ }
+ return false;
+ }
+
+ public boolean isPointInQuad(Vector point, Quad quad) {
+ if (point.getX() >= quad.getLeftEdge() && point.getX() <= quad.getRightEdge()) {
+ return point.getY() >= quad.getBottomEdge() && point.getY() <= quad.getTopEdge();
+ }
+ return false;
+ }
+
+ public boolean isCircleCircleCollision(Circle c1, Circle c2) {
+ float distance = Math.abs(c1.getPosition().vectorTo(c2.getPosition()).length());
+ float radiusSum = c1.getRadius() + c2.getRadius();
+ return distance < radiusSum;
+ }
+
+ public boolean isCircleQuadCollision(Circle circle, Quad quad) {
+ Vector distance = circle.getPosition().vectorTo(quad.getPosition());
+ distance.x = Math.abs(distance.x);
+ distance.y = Math.abs(distance.y);
+
+ if (distance.x > circle.getRadius() + quad.getWidth() / 2)
+ return false;
+ if (distance.y > circle.getRadius() + quad.getHeight() / 2)
+ return false;
+
+ if (distance.x <= quad.getWidth() / 2)
+ return true;
+ if (distance.y <= quad.getHeight() / 2)
+ return true;
+
+ float cornerDistance_sq = (distance.x - quad.getWidth() / 2) * (distance.x - quad
+ .getWidth() / 2) + (distance.y - quad.getHeight() / 2) * (distance.y - quad
+ .getHeight() / 2);
+ return cornerDistance_sq <= circle.getRadius() * circle.getRadius();
+ }
+
+ public boolean isCircleTriangleCollision(Circle circle, Triangle triangle) {
+ return triangleDetector.isCircleTriangleCollision(circle, triangle);
+ }
+
+ public boolean isQuadQuadCollision(Quad q1, Quad q2) {
+ float xDistance = Math.abs(q2.getPosition().x - q1.getPosition().x);
+ float yDistance = Math.abs(q2.getPosition().y - q1.getPosition().y);
+ if (xDistance >= q1.getWidth() / 2 + q2.getWidth() / 2)
+ return false;
+ return !(yDistance >= q1.getHeight() / 2 + q2.getHeight() / 2);
+ }
+
+ public boolean isTriangleTriangleCollision(Triangle triangle1, Triangle triangle2) {
+ boolean triangle1Vertex1InTriangle2 = isVertexInTriangle(triangle1.getBottomRightVertex(), triangle2);
+ if (triangle1Vertex1InTriangle2)
+ return true;
+ boolean triangle1Vertex2InTriangle2 = isVertexInTriangle(triangle1.getTopRightVertex(), triangle2);
+ if (triangle1Vertex2InTriangle2)
+ return true;
+ boolean triangle1Vertex3InTriangle2 = isVertexInTriangle(triangle1.getBottomLeftVertex(), triangle2);
+ if (triangle1Vertex3InTriangle2)
+ return true;
+ boolean triangle2Vertex1InTriangle1 = isVertexInTriangle(triangle2.getBottomRightVertex(), triangle1);
+ if (triangle2Vertex1InTriangle1)
+ return true;
+ boolean triangle2Vertex2InTriangle1 = isVertexInTriangle(triangle2.getTopRightVertex(), triangle1);
+ if (triangle2Vertex2InTriangle1)
+ return true;
+ boolean triangle2Vertex3InTriangle1 = isVertexInTriangle(triangle2.getBottomLeftVertex(), triangle1);
+ return triangle2Vertex3InTriangle1;
+ }
+
+ public boolean isQuadTriangleCollision(Quad quad, Triangle triangle) {
+ boolean quadVertex1InTriangle = isVertexInTriangle(
+ new Vector(quad.getLeftEdge(), quad.getTopEdge()), triangle);
+ if (quadVertex1InTriangle)
+ return true;
+ boolean quadVertex2InTriangle = isVertexInTriangle(
+ new Vector(quad.getRightEdge(), quad.getTopEdge()), triangle);
+ if (quadVertex2InTriangle)
+ return true;
+ boolean quadVertex3InTriangle = isVertexInTriangle(
+ new Vector(quad.getRightEdge(), quad.getBottomEdge()), triangle);
+ if (quadVertex3InTriangle)
+ return true;
+ boolean quadVertex4InTriangle = isVertexInTriangle(
+ new Vector(quad.getLeftEdge(), quad.getBottomEdge()), triangle);
+ if (quadVertex4InTriangle)
+ return true;
+ boolean triangleVertex1InQuad = isPointInQuad(triangle.getBottomRightVertex(), quad);
+ if (triangleVertex1InQuad)
+ return true;
+ boolean triangleVertex2InQuad = isPointInQuad(triangle.getTopRightVertex(), quad);
+ if (triangleVertex2InQuad)
+ return true;
+ boolean triangleVertex3InQuad = isPointInQuad(triangle.getBottomLeftVertex(), quad);
+ if (triangleVertex3InQuad)
+ return true;
+ return triangle.getTopEdge() >= quad.getTopEdge() && triangle.getBottomEdge() <= quad.getBottomEdge() && ((triangle.getLeftEdge() <= quad.getRightEdge() && triangle.getLeftEdge() >= quad.getLeftEdge()) || (triangle.getRightEdge() <= quad.getRightEdge() && triangle.getRightEdge() >= quad.getLeftEdge()));
+ }
+
+ private boolean isVertexInTriangle(Vector vertex, Triangle triangle) {
+ if (!isPointInQuad(vertex, triangle))
+ return false;
+ float gradient = triangle.getGradient();
+ float maxVertexY = vertex.getX() * gradient + triangle.getBottomEdge();
+ return vertex.getY() <= maxVertexY;
+ }
+
+ public EntityCollisionData playerTerrainCollision(Player player, Tile terrainTile) {
+ Circle circle = new Circle(player);
+ if (circle.getTopEdge() < terrainTile.getTopEdge()) {
+ float xDistance = Math.abs(circle.getPosition().x - terrainTile.getPosition().x);
+ if (xDistance < circle.getRadius() + terrainTile.getWidth() / 2)
+ return new EntityCollisionData(terrainTile, Edge.LEFT);
+ }
+
+ if (isCircleQuadCollision(circle, terrainTile)) {
+ Edge edge = circleQuadCollisionEdge(circle, player.getMovement(), terrainTile,
+ terrainTile.getMovement());
+ return new EntityCollisionData(terrainTile, edge);
+ }
+ return new EntityCollisionData(null, null);
+ }
+
+ public EntityCollisionData playerCeilingCollision(Player player, Tile ceilingTile) {
+ Circle circle = new Circle(player);
+ if (circle.getBottomEdge() > ceilingTile.getBottomEdge()) {
+ float xDistance = Math.abs(circle.getPosition().x - ceilingTile.getPosition().x);
+ if (xDistance < circle.getRadius() + ceilingTile.getWidth() / 2)
+ return new EntityCollisionData(ceilingTile, Edge.LEFT);
+ }
+
+ if (isCircleQuadCollision(circle, ceilingTile)) {
+ Edge edge = circleQuadCollisionEdge(circle, player.getMovement(), ceilingTile,
+ ceilingTile.getMovement());
+ return new EntityCollisionData(ceilingTile, edge);
+ }
+ return new EntityCollisionData(null, null);
+ }
+
+ public EntityCollisionData playerEntityCollision(Player player, Entity entity) {
+ Circle circle = new Circle(player);
+ Quad quad = entity;
+ if (isCircleQuadCollision(circle, quad)) {
+ Edge edge = circleQuadCollisionEdge(circle, player.getMovement(), quad,
+ entity.getMovement());
+ return new EntityCollisionData(entity, edge);
+ }
+ return new EntityCollisionData(null, null);
+ }
+
+ private Edge circleQuadCollisionEdge(Circle circle, Vector circleMovement, Quad quad, Vector quadMovement) {
+ boolean circleFullyInsideQuad = false;
+ if (circle.getPosition().getX() + circle.getRadius() <= quad.getRightEdge() && circle
+ .getPosition().getX() - circle.getRadius() >= quad.getLeftEdge()) {
+ if (circle.getPosition().getY() + circle.getRadius() <= quad.getTopEdge() && circle
+ .getPosition().getY() - circle.getRadius() >= quad.getBottomEdge()) {
+ circleFullyInsideQuad = true;
+ }
+ }
+ if (circleFullyInsideQuad)
+ return circleCenterInQuadCollisionEdge(circle, circleMovement, quad, quadMovement);
+ return circlePartlyOutsideQuadCollisionEdge(circle, circleMovement, quad, quadMovement);
+ }
+
+ private Edge circlePartlyOutsideQuadCollisionEdge(Circle circle, Vector circleMovement, Quad quad, Vector quadMovement) {
+ Vector relativeMovement = new Vector(circleMovement).translate(quadMovement.negate());
+
+ Edge edge = Edge.NONE;
+ if (circle.getPosition().getY() + circle.getRadius() >= quad.getTopEdge())
+ edge = Edge.TOP;
+ else if (circle.getPosition().getY() - circle.getRadius() <= quad.getBottomEdge())
+ edge = Edge.BOTTOM;
+ if (circle.getPosition().getX() - circle.getRadius() <= quad.getLeftEdge()) {
+ if (edge != Edge.NONE) {
+ if (edge == Edge.TOP) {
+ float m = -1;
+ float t = quad.getTopEdge() - m * quad.getLeftEdge();
+ if (circle.getPosition().getY() >= m * circle.getPosition().getX() + t)
+ edge = Edge.TOP;
+ else
+ edge = Edge.LEFT;
+ } else if (edge == Edge.BOTTOM) {
+ float m = 1;
+ float t = quad.getBottomEdge() - m * quad.getLeftEdge();
+ if (circle.getPosition().getY() <= m * circle.getPosition().getX() + t)
+ edge = Edge.BOTTOM;
+ else
+ edge = Edge.LEFT;
+ }
+ } else
+ edge = Edge.LEFT;
+ } else if (circle.getPosition().getX() + circle.getRadius() >= quad.getRightEdge()) {
+ if (edge != Edge.NONE) {
+ if (edge == Edge.TOP) {
+ //This movement check is because if player falls with too much speed on topLeft Vertex, sometimes RIGHT-Edge is returned
+ if (relativeMovement.getY() < 0) {
+ return Edge.TOP;
+ } else {
+ float m = 1;
+ float t = quad.getTopEdge() - m * quad.getRightEdge();
+ if (circle.getPosition().getY() >= m * circle.getPosition().getX() + t)
+ edge = Edge.TOP;
+ else
+ edge = Edge.RIGHT;
+ }
+ } else if (edge == Edge.BOTTOM) {
+ float m = -1;
+ float t = quad.getBottomEdge() - m * quad.getRightEdge();
+ if (circle.getPosition().getY() <= m * circle.getPosition().getX() + t)
+ edge = Edge.BOTTOM;
+ else
+ edge = Edge.RIGHT;
+ }
+ } else
+ edge = Edge.RIGHT;
+ }
+ return edge;
+ }
+
+ private Edge circleCenterInQuadCollisionEdge(Circle circle, Vector circleMovement, Quad quad, Vector quadMovement) {
+ Vector relativeMovement = new Vector(circleMovement).translate(quadMovement.negate());
+
+ float m = relativeMovement.getY() / relativeMovement.getX();
+ float t = circle.getPosition().getY() - m * circle.getPosition().getX();
+
+ float yAtLeftEdge = m * quad.getLeftEdge() + t;
+ boolean touchingLeftEdge = yAtLeftEdge < quad.getTopEdge() && yAtLeftEdge > quad
+ .getBottomEdge();
+ float yAtRightEdge = m * quad.getRightEdge() + t;
+ boolean touchingRightEdge = yAtRightEdge < quad.getTopEdge() && yAtRightEdge > quad
+ .getBottomEdge();
+
+ float xAtTopEdge = (quad.getTopEdge() - t) / m;
+ boolean touchingTopEdge = xAtTopEdge >= quad.getLeftEdge() && xAtTopEdge <= quad
+ .getRightEdge();
+ float xAtBottomEdge = (quad.getBottomEdge() - t) / m;
+ boolean touchingBottomEdge = xAtBottomEdge >= quad.getLeftEdge() && xAtBottomEdge <= quad
+ .getRightEdge();
+
+ if (relativeMovement.getX() == 0) {
+ if (circle.getPosition().getX() - circle.getRadius() <= quad.getRightEdge() && circle
+ .getPosition().getX() + circle.getRadius() >= quad.getLeftEdge()) {
+ touchingTopEdge = true;
+ touchingBottomEdge = true;
+ }
+ }
+
+ // CORNERS BELONGING TO TOP / BOTTOM EDGES
+ if (touchingLeftEdge) {
+ if (touchingRightEdge) {
+ if (circle.getPosition().getX() <= quad.getPosition().getX())
+ return Edge.LEFT;
+ return Edge.RIGHT;
+ } else if (touchingTopEdge) {
+ // Normale through vertex
+ float mn = -1 / m;
+ float tn = quad.getTopEdge() - mn * quad.getLeftEdge();
+ if (circle.getPosition().getY() < mn * circle.getPosition().getX() + tn)
+ return Edge.LEFT;
+ return Edge.TOP;
+ } else if (touchingBottomEdge) {
+ // Normale through vertex
+ float mn = -1 / m;
+ float tn = quad.getBottomEdge() - mn * quad.getLeftEdge();
+ if (circle.getPosition().getY() > mn * circle.getPosition().getX() + tn)
+ return Edge.LEFT;
+ return Edge.BOTTOM;
+ } else {
+ return Edge.LEFT;
+ }
+ } else if (touchingRightEdge) {
+ if (touchingTopEdge) {
+ // Normale through vertex
+ float mn = -1 / m;
+ float tn = quad.getTopEdge() - mn * quad.getRightEdge();
+ if (circle.getPosition().getY() < mn * circle.getPosition().getX() + tn)
+ return Edge.RIGHT;
+ return Edge.TOP;
+ } else if (touchingBottomEdge) {
+ // Normale through vertex
+ float mn = -1 / m;
+ float tn = quad.getBottomEdge() - mn * quad.getRightEdge();
+ if (circle.getPosition().getY() > mn * circle.getPosition().getX() + tn)
+ return Edge.RIGHT;
+ return Edge.BOTTOM;
+ } else {
+ return Edge.RIGHT;
+ }
+ } else if (touchingTopEdge) {
+ if (touchingBottomEdge) {
+ if (circle.getPosition().getY() >= quad.getPosition().getY())
+ return Edge.TOP;
+ return Edge.BOTTOM;
+ } else {
+ return Edge.TOP;
+ }
+ } else if (touchingBottomEdge) {
+ return Edge.BOTTOM;
+ }
+ return Edge.NONE;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/CollisionManager.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/CollisionManager.java
index 90c95b6..e3be439 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/CollisionManager.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/CollisionManager.java
@@ -1,109 +1,109 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision;
-
-import de.frajul.endlessroll.entities.DestroyEffect;
-import de.frajul.endlessroll.entities.Obstacle;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collectables.Energy;
-import de.frajul.endlessroll.entities.collectables.Star;
-import de.frajul.endlessroll.entities.collision.collisionData.EntityCollisionData;
-import de.frajul.endlessroll.entities.collision.collisionData.ObstacleCollisionData;
-import de.frajul.endlessroll.entities.collision.collisionData.PlayerCollisionData;
-import de.frajul.endlessroll.entities.collision.collisionData.ToolCollisionData;
-import de.frajul.endlessroll.entities.tools.Tool;
-import de.frajul.endlessroll.main.game.Game;
-import de.frajul.endlessroll.main.game.GameScene;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.main.physics.Physics;
-
-/**
- * Created by Julian on 02.01.2016.
- */
-public class CollisionManager {
-
- private Game game;
- private Player player;
- private Timer timer;
-
- public CollisionManager(Game game) {
- this.game = game;
- }
-
- //Check Obstacle always before tool, because at tool, player could be moved etc.
- public void update(Physics physics, GameScene scene, Timer timer) {
- physics.checkToolCollision(scene);
-
- this.player = scene.getPlayer();
- this.timer = timer;
- PlayerCollisionData data = physics.getPlayerCollisionData(scene);
- if (data.isTerrainCollision())
- checkTerrainCollision(data.getTerrainCollisionData());
- if (data.isCeilingCollision())
- checkCeilingCollision(data.getCeilingCollisionData());
- if (data.isObstacleCollision())
- checkObstacleCollision(data.getObstacleCollisionData(), player.hasSuperPower());
- if (data.isToolCollision())
- checkToolCollision(data.getToolCollisionData());
- if (data.isStarCollision())
- game.onStarCollision((Star) data.getStarCollisionData().getEntity());
- if (data.isEnergyCollision())
- game.onEnergyCollision((Energy) data.getEnergyCollisionData().getEntity());
- }
-
- private void checkTerrainCollision(EntityCollisionData data) {
- checkEntityCollision(data);
- if (data.getEdge() != Edge.TOP)
- game.onGameOver(true);
- }
-
- private void checkCeilingCollision(EntityCollisionData data) {
- checkEntityCollision(data);
- if (data.getEdge() != Edge.BOTTOM)
- game.onGameOver(true);
- }
-
- private void checkToolCollision(ToolCollisionData data) {
- for (Tool tool : data.getTools())
- tool.onPlayerCollision(player, timer);
- }
-
- private void checkObstacleCollision(ObstacleCollisionData data, boolean playerHasSuperpower) {
- for (EntityCollisionData entityData : data.getCollisions()) {
- if (playerHasSuperpower) {
- entityData.getEntity().destroy(DestroyEffect.EXPLOSION);
- } else {
- if (entityData.getEdge() != Edge.TOP || ((Obstacle) entityData.getEntity())
- .isDeadly())
- game.onGameOver(true);
- else
- checkEntityCollision(entityData);
- }
- }
- }
-
- private void checkEntityCollision(EntityCollisionData data) {
- switch (data.getEdge()) {
- case TOP:
- player.getMovement().y = 0;
- player.setToTerrain(data.getEntity().getTopEdge());
- break;
- case BOTTOM:
- player.getMovement().y = 0;
- player.setTopEdge(data.getEntity().getBottomEdge());
- break;
- case LEFT:
- player.getPosition().x = data.getEntity().getLeftEdge() - player.RADIUS;
- break;
- case RIGHT:
- player.getPosition().x = data.getEntity().getRightEdge() + player.RADIUS;
- break;
- }
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision;
+
+import de.frajul.endlessroll.entities.DestroyEffect;
+import de.frajul.endlessroll.entities.Obstacle;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collectables.Energy;
+import de.frajul.endlessroll.entities.collectables.Star;
+import de.frajul.endlessroll.entities.collision.collisionData.EntityCollisionData;
+import de.frajul.endlessroll.entities.collision.collisionData.ObstacleCollisionData;
+import de.frajul.endlessroll.entities.collision.collisionData.PlayerCollisionData;
+import de.frajul.endlessroll.entities.collision.collisionData.ToolCollisionData;
+import de.frajul.endlessroll.entities.tools.Tool;
+import de.frajul.endlessroll.main.game.Game;
+import de.frajul.endlessroll.main.game.GameScene;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.main.physics.Physics;
+
+/**
+ * Created by Julian on 02.01.2016.
+ */
+public class CollisionManager {
+
+ private Game game;
+ private Player player;
+ private Timer timer;
+
+ public CollisionManager(Game game) {
+ this.game = game;
+ }
+
+ //Check Obstacle always before tool, because at tool, player could be moved etc.
+ public void update(Physics physics, GameScene scene, Timer timer) {
+ physics.checkToolCollision(scene);
+
+ this.player = scene.getPlayer();
+ this.timer = timer;
+ PlayerCollisionData data = physics.getPlayerCollisionData(scene);
+ if (data.isTerrainCollision())
+ checkTerrainCollision(data.getTerrainCollisionData());
+ if (data.isCeilingCollision())
+ checkCeilingCollision(data.getCeilingCollisionData());
+ if (data.isObstacleCollision())
+ checkObstacleCollision(data.getObstacleCollisionData(), player.hasSuperPower());
+ if (data.isToolCollision())
+ checkToolCollision(data.getToolCollisionData());
+ if (data.isStarCollision())
+ game.onStarCollision((Star) data.getStarCollisionData().getEntity());
+ if (data.isEnergyCollision())
+ game.onEnergyCollision((Energy) data.getEnergyCollisionData().getEntity());
+ }
+
+ private void checkTerrainCollision(EntityCollisionData data) {
+ checkEntityCollision(data);
+ if (data.getEdge() != Edge.TOP)
+ game.onGameOver(true);
+ }
+
+ private void checkCeilingCollision(EntityCollisionData data) {
+ checkEntityCollision(data);
+ if (data.getEdge() != Edge.BOTTOM)
+ game.onGameOver(true);
+ }
+
+ private void checkToolCollision(ToolCollisionData data) {
+ for (Tool tool : data.getTools())
+ tool.onPlayerCollision(player, timer);
+ }
+
+ private void checkObstacleCollision(ObstacleCollisionData data, boolean playerHasSuperpower) {
+ for (EntityCollisionData entityData : data.getCollisions()) {
+ if (playerHasSuperpower) {
+ entityData.getEntity().destroy(DestroyEffect.EXPLOSION);
+ } else {
+ if (entityData.getEdge() != Edge.TOP || ((Obstacle) entityData.getEntity())
+ .isDeadly())
+ game.onGameOver(true);
+ else
+ checkEntityCollision(entityData);
+ }
+ }
+ }
+
+ private void checkEntityCollision(EntityCollisionData data) {
+ switch (data.getEdge()) {
+ case TOP:
+ player.getMovement().y = 0;
+ player.setToTerrain(data.getEntity().getTopEdge());
+ break;
+ case BOTTOM:
+ player.getMovement().y = 0;
+ player.setTopEdge(data.getEntity().getBottomEdge());
+ break;
+ case LEFT:
+ player.getPosition().x = data.getEntity().getLeftEdge() - player.RADIUS;
+ break;
+ case RIGHT:
+ player.getPosition().x = data.getEntity().getRightEdge() + player.RADIUS;
+ break;
+ }
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/Edge.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/Edge.java
index 50e23cd..d79c0a8 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/Edge.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/Edge.java
@@ -1,12 +1,12 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision;
-
-public enum Edge {
- LEFT, RIGHT, TOP, BOTTOM, NONE
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision;
+
+public enum Edge {
+ LEFT, RIGHT, TOP, BOTTOM, NONE
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/EntityCollisionData.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/EntityCollisionData.java
index 5d0d691..c179032 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/EntityCollisionData.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/EntityCollisionData.java
@@ -1,37 +1,37 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision.collisionData;
-
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.collision.Edge;
-
-/**
- * Created by Julian on 01.01.2016.
- */
-public class EntityCollisionData {
-
- private Entity entity;
- private Edge edge;
-
- public EntityCollisionData(Entity entity, Edge edge) {
- this.entity = entity;
- this.edge = edge;
- }
-
- public boolean isCollision() {
- return entity != null && edge != null;
- }
-
- public Entity getEntity() {
- return entity;
- }
-
- public Edge getEdge() {
- return edge;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision.collisionData;
+
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.collision.Edge;
+
+/**
+ * Created by Julian on 01.01.2016.
+ */
+public class EntityCollisionData {
+
+ private Entity entity;
+ private Edge edge;
+
+ public EntityCollisionData(Entity entity, Edge edge) {
+ this.entity = entity;
+ this.edge = edge;
+ }
+
+ public boolean isCollision() {
+ return entity != null && edge != null;
+ }
+
+ public Entity getEntity() {
+ return entity;
+ }
+
+ public Edge getEdge() {
+ return edge;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/ObstacleCollisionData.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/ObstacleCollisionData.java
index 22c09f1..7240bdb 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/ObstacleCollisionData.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/ObstacleCollisionData.java
@@ -1,30 +1,30 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision.collisionData;
-
-import java.util.List;
-
-/**
- * Created by Julian on 04.01.2016.
- */
-public class ObstacleCollisionData {
-
- private List collisions;
-
- public ObstacleCollisionData(List collisions) {
- this.collisions = collisions;
- }
-
- public boolean isCollision() {
- return collisions.size() > 0;
- }
-
- public List getCollisions() {
- return collisions;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision.collisionData;
+
+import java.util.List;
+
+/**
+ * Created by Julian on 04.01.2016.
+ */
+public class ObstacleCollisionData {
+
+ private List collisions;
+
+ public ObstacleCollisionData(List collisions) {
+ this.collisions = collisions;
+ }
+
+ public boolean isCollision() {
+ return collisions.size() > 0;
+ }
+
+ public List getCollisions() {
+ return collisions;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/PlayerCollisionData.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/PlayerCollisionData.java
index 6225c55..9b86b57 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/PlayerCollisionData.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/PlayerCollisionData.java
@@ -1,78 +1,78 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision.collisionData;
-
-/**
- * Created by Julian on 05.12.2015.
- */
-public class PlayerCollisionData {
-
- private EntityCollisionData terrainCollision;
- private EntityCollisionData ceilingCollision;
- private ObstacleCollisionData obstacleCollision;
- private ToolCollisionData toolCollision;
- private EntityCollisionData starCollision;
- private EntityCollisionData energyCollision;
-
- public PlayerCollisionData(EntityCollisionData terrainCollision, EntityCollisionData ceilingCollision, ObstacleCollisionData obstacleCollision, ToolCollisionData toolCollision, EntityCollisionData starCollision, EntityCollisionData energyCollision) {
- this.terrainCollision = terrainCollision;
- this.ceilingCollision = ceilingCollision;
- this.obstacleCollision = obstacleCollision;
- this.toolCollision = toolCollision;
- this.starCollision = starCollision;
- this.energyCollision = energyCollision;
- }
-
- public boolean isTerrainCollision() {
- return terrainCollision.isCollision();
- }
-
- public EntityCollisionData getTerrainCollisionData() {
- return terrainCollision;
- }
-
- public boolean isCeilingCollision() {
- return ceilingCollision.isCollision();
- }
-
- public EntityCollisionData getCeilingCollisionData() {
- return ceilingCollision;
- }
-
- public boolean isObstacleCollision() {
- return obstacleCollision.isCollision();
- }
-
- public ObstacleCollisionData getObstacleCollisionData() {
- return obstacleCollision;
- }
-
- public boolean isToolCollision() {
- return toolCollision.isCollision();
- }
-
- public ToolCollisionData getToolCollisionData() {
- return toolCollision;
- }
-
- public boolean isStarCollision() {
- return starCollision.isCollision();
- }
-
- public EntityCollisionData getStarCollisionData() {
- return starCollision;
- }
-
- public boolean isEnergyCollision() {
- return energyCollision.isCollision();
- }
-
- public EntityCollisionData getEnergyCollisionData() {
- return energyCollision;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision.collisionData;
+
+/**
+ * Created by Julian on 05.12.2015.
+ */
+public class PlayerCollisionData {
+
+ private EntityCollisionData terrainCollision;
+ private EntityCollisionData ceilingCollision;
+ private ObstacleCollisionData obstacleCollision;
+ private ToolCollisionData toolCollision;
+ private EntityCollisionData starCollision;
+ private EntityCollisionData energyCollision;
+
+ public PlayerCollisionData(EntityCollisionData terrainCollision, EntityCollisionData ceilingCollision, ObstacleCollisionData obstacleCollision, ToolCollisionData toolCollision, EntityCollisionData starCollision, EntityCollisionData energyCollision) {
+ this.terrainCollision = terrainCollision;
+ this.ceilingCollision = ceilingCollision;
+ this.obstacleCollision = obstacleCollision;
+ this.toolCollision = toolCollision;
+ this.starCollision = starCollision;
+ this.energyCollision = energyCollision;
+ }
+
+ public boolean isTerrainCollision() {
+ return terrainCollision.isCollision();
+ }
+
+ public EntityCollisionData getTerrainCollisionData() {
+ return terrainCollision;
+ }
+
+ public boolean isCeilingCollision() {
+ return ceilingCollision.isCollision();
+ }
+
+ public EntityCollisionData getCeilingCollisionData() {
+ return ceilingCollision;
+ }
+
+ public boolean isObstacleCollision() {
+ return obstacleCollision.isCollision();
+ }
+
+ public ObstacleCollisionData getObstacleCollisionData() {
+ return obstacleCollision;
+ }
+
+ public boolean isToolCollision() {
+ return toolCollision.isCollision();
+ }
+
+ public ToolCollisionData getToolCollisionData() {
+ return toolCollision;
+ }
+
+ public boolean isStarCollision() {
+ return starCollision.isCollision();
+ }
+
+ public EntityCollisionData getStarCollisionData() {
+ return starCollision;
+ }
+
+ public boolean isEnergyCollision() {
+ return energyCollision.isCollision();
+ }
+
+ public EntityCollisionData getEnergyCollisionData() {
+ return energyCollision;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/ToolCollisionData.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/ToolCollisionData.java
index 09c7ca1..888e73a 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/ToolCollisionData.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/collisionData/ToolCollisionData.java
@@ -1,32 +1,32 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision.collisionData;
-
-import java.util.List;
-
-import de.frajul.endlessroll.entities.tools.Tool;
-
-/**
- * Created by Julian on 21.02.2016.
- */
-public class ToolCollisionData {
-
- private List tools;
-
- public ToolCollisionData(List tools) {
- this.tools = tools;
- }
-
- public boolean isCollision() {
- return tools.size() > 0;
- }
-
- public List getTools() {
- return tools;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision.collisionData;
+
+import java.util.List;
+
+import de.frajul.endlessroll.entities.tools.Tool;
+
+/**
+ * Created by Julian on 21.02.2016.
+ */
+public class ToolCollisionData {
+
+ private List tools;
+
+ public ToolCollisionData(List tools) {
+ this.tools = tools;
+ }
+
+ public boolean isCollision() {
+ return tools.size() > 0;
+ }
+
+ public List getTools() {
+ return tools;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Circle.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Circle.java
index bd14c0c..f91f439 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Circle.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Circle.java
@@ -1,62 +1,62 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision.geometry;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Player;
-
-/**
- * Created by Julian on 01.12.2015.
- */
-public class Circle extends Geometry {
-
- private Vector center;
- private float radius;
-
- public Circle(Player ball) {
- this(new Vector(ball.getPosition()), ball.getWidth() / 2);
- }
-
- public Circle(Vector center, float radius) {
- this.center = center;
- this.radius = radius;
- }
-
- @Override
- public float getRightEdge() {
- return center.x + radius;
- }
-
- @Override
- public float getLeftEdge() {
- return center.x - radius;
- }
-
- @Override
- public float getTopEdge() {
- return center.y + radius;
- }
-
- @Override
- public float getBottomEdge() {
- return center.y - radius;
- }
-
- public Vector getPosition() {
- return center;
- }
-
- public float getRadius() {
- return radius;
- }
-
- public void setRadius(float radius) {
- this.radius = radius;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision.geometry;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Player;
+
+/**
+ * Created by Julian on 01.12.2015.
+ */
+public class Circle extends Geometry {
+
+ private Vector center;
+ private float radius;
+
+ public Circle(Player ball) {
+ this(new Vector(ball.getPosition()), ball.getWidth() / 2);
+ }
+
+ public Circle(Vector center, float radius) {
+ this.center = center;
+ this.radius = radius;
+ }
+
+ @Override
+ public float getRightEdge() {
+ return center.x + radius;
+ }
+
+ @Override
+ public float getLeftEdge() {
+ return center.x - radius;
+ }
+
+ @Override
+ public float getTopEdge() {
+ return center.y + radius;
+ }
+
+ @Override
+ public float getBottomEdge() {
+ return center.y - radius;
+ }
+
+ public Vector getPosition() {
+ return center;
+ }
+
+ public float getRadius() {
+ return radius;
+ }
+
+ public void setRadius(float radius) {
+ this.radius = radius;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Geometry.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Geometry.java
index 49ed297..adf9d0a 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Geometry.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Geometry.java
@@ -1,23 +1,23 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision.geometry;
-
-/**
- * Created by Julian on 28.02.2016.
- */
-public abstract class Geometry {
-
- public abstract float getTopEdge();
-
- public abstract float getBottomEdge();
-
- public abstract float getRightEdge();
-
- public abstract float getLeftEdge();
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision.geometry;
+
+/**
+ * Created by Julian on 28.02.2016.
+ */
+public abstract class Geometry {
+
+ public abstract float getTopEdge();
+
+ public abstract float getBottomEdge();
+
+ public abstract float getRightEdge();
+
+ public abstract float getLeftEdge();
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Quad.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Quad.java
index f7b3fad..2dcc311 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Quad.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Quad.java
@@ -1,70 +1,70 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision.geometry;
-
-import de.frajul.endlessroll.data.Vector;
-
-/**
- * Created by Julian on 01.12.2015.
- */
-public class Quad extends Geometry {
-
- protected Vector position;
- protected float width, height;
-
- public Quad(Vector position, float width, float height) {
- this.position = position;
- this.width = width;
- this.height = height;
- }
-
- @Override
- public float getRightEdge() {
- return position.x + width / 2;
- }
-
- @Override
- public float getLeftEdge() {
- return position.x - width / 2;
- }
-
- @Override
- public float getTopEdge() {
- return position.y + height / 2;
- }
-
- @Override
- public float getBottomEdge() {
- return position.y - height / 2;
- }
-
- public Vector getPosition() {
- return position;
- }
-
- public void setPosition(Vector position) {
- this.position = position;
- }
-
- public float getWidth() {
- return width;
- }
-
- public void setWidth(float width) {
- this.width = width;
- }
-
- public float getHeight() {
- return height;
- }
-
- public void setHeight(float height) {
- this.height = height;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision.geometry;
+
+import de.frajul.endlessroll.data.Vector;
+
+/**
+ * Created by Julian on 01.12.2015.
+ */
+public class Quad extends Geometry {
+
+ protected Vector position;
+ protected float width, height;
+
+ public Quad(Vector position, float width, float height) {
+ this.position = position;
+ this.width = width;
+ this.height = height;
+ }
+
+ @Override
+ public float getRightEdge() {
+ return position.x + width / 2;
+ }
+
+ @Override
+ public float getLeftEdge() {
+ return position.x - width / 2;
+ }
+
+ @Override
+ public float getTopEdge() {
+ return position.y + height / 2;
+ }
+
+ @Override
+ public float getBottomEdge() {
+ return position.y - height / 2;
+ }
+
+ public Vector getPosition() {
+ return position;
+ }
+
+ public void setPosition(Vector position) {
+ this.position = position;
+ }
+
+ public float getWidth() {
+ return width;
+ }
+
+ public void setWidth(float width) {
+ this.width = width;
+ }
+
+ public float getHeight() {
+ return height;
+ }
+
+ public void setHeight(float height) {
+ this.height = height;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Triangle.java b/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Triangle.java
index d3b4d26..e127b54 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Triangle.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/collision/geometry/Triangle.java
@@ -1,38 +1,38 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.collision.geometry;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.tools.Ramp;
-
-/**
- * Created by Julian on 01.12.2015.
- */
-public class Triangle extends Quad {
-
- public Triangle(Ramp ramp) {
- super(ramp.getPosition(), ramp.getWidth(), ramp.getHeight());
- }
-
- public float getGradient() {
- return super.getHeight() / super.getWidth();
- }
-
- public Vector getBottomRightVertex() {
- return new Vector(getRightEdge(), getBottomEdge());
- }
-
- public Vector getBottomLeftVertex() {
- return new Vector(getLeftEdge(), getBottomEdge());
- }
-
- public Vector getTopRightVertex() {
- return new Vector(getRightEdge(), getTopEdge());
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.collision.geometry;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.tools.Ramp;
+
+/**
+ * Created by Julian on 01.12.2015.
+ */
+public class Triangle extends Quad {
+
+ public Triangle(Ramp ramp) {
+ super(ramp.getPosition(), ramp.getWidth(), ramp.getHeight());
+ }
+
+ public float getGradient() {
+ return super.getHeight() / super.getWidth();
+ }
+
+ public Vector getBottomRightVertex() {
+ return new Vector(getRightEdge(), getBottomEdge());
+ }
+
+ public Vector getBottomLeftVertex() {
+ return new Vector(getLeftEdge(), getBottomEdge());
+ }
+
+ public Vector getTopRightVertex() {
+ return new Vector(getRightEdge(), getTopEdge());
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/guis/Countdown.java b/app/src/main/java/de/frajul/endlessroll/entities/guis/Countdown.java
index fe1c15a..cd99d60 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/guis/Countdown.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/guis/Countdown.java
@@ -1,101 +1,101 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.guis;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.main.game.Game;
-import de.frajul.endlessroll.sounds.SoundManager;
-import de.frajul.endlessroll.sounds.SoundStream;
-
-/**
- * Created by Julian on 31.07.2016.
- */
-public class Countdown extends Gui {
-
- private Game game;
- private SoundManager soundManager;
- private SoundStream soundStream;
- private Texture texture3;
- private Texture texture2;
- private Texture texture1;
-
- private AtomicBoolean running;
- private int currentSeconds = 0;
- private float time = 0;
-
- public Countdown(Game game, SoundManager soundManager, TexturePack texturePack) {
- super(texturePack.countdown3, new Vector(), 0.8f, 0.8f);
- this.game = game;
- this.soundManager = soundManager;
- this.texture3 = texturePack.countdown1;
- this.texture2 = texturePack.countdown2;
- this.texture1 = texturePack.countdown3;
- running = new AtomicBoolean(false);
- }
-
- public void update(float delta) {
- if (running.get()) {
- time += delta;
- if (time >= 1000 && currentSeconds == 0) {
- currentSeconds = 1;
- onNextSecondThread(currentSeconds, true);
-
- }
- if (time >= 2000 && currentSeconds == 1) {
- currentSeconds = 2;
- onNextSecondThread(currentSeconds, true);
- }
- if (time >= 3000 && currentSeconds == 2) {
- currentSeconds = 3;
- running.set(false);
- game.countdownFinished();
- }
- }
- }
-
- public void start() {
- reset();
- running.set(true);
- soundStream = soundManager.playSound(soundManager.countdownSoundSingle);
- }
-
- public void stop() {
- running.set(false);
- if (soundStream != null)
- soundManager.stopSound(soundStream);
- }
-
- private void reset() {
- time = 0;
- currentSeconds = 0;
- onNextSecondThread(0, false);
- }
-
- private void onNextSecondThread(final int second, final boolean playSound) {
- if (playSound) {
- if (second == 2)
- soundStream = soundManager.playSound(soundManager.countdownSoundLast);
- else
- soundStream = soundManager.playSound(soundManager.countdownSoundSingle);
- }
- super.setTexture(texture1);
- if (second == 1)
- super.setTexture(texture2);
- else if (second == 2)
- super.setTexture(texture3);
- }
-
- @Override
- public boolean isVisible() {
- return running.get();
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.guis;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.main.game.Game;
+import de.frajul.endlessroll.sounds.SoundManager;
+import de.frajul.endlessroll.sounds.SoundStream;
+
+/**
+ * Created by Julian on 31.07.2016.
+ */
+public class Countdown extends Gui {
+
+ private Game game;
+ private SoundManager soundManager;
+ private SoundStream soundStream;
+ private Texture texture3;
+ private Texture texture2;
+ private Texture texture1;
+
+ private AtomicBoolean running;
+ private int currentSeconds = 0;
+ private float time = 0;
+
+ public Countdown(Game game, SoundManager soundManager, TexturePack texturePack) {
+ super(texturePack.countdown3, new Vector(), 0.8f, 0.8f);
+ this.game = game;
+ this.soundManager = soundManager;
+ this.texture3 = texturePack.countdown1;
+ this.texture2 = texturePack.countdown2;
+ this.texture1 = texturePack.countdown3;
+ running = new AtomicBoolean(false);
+ }
+
+ public void update(float delta) {
+ if (running.get()) {
+ time += delta;
+ if (time >= 1000 && currentSeconds == 0) {
+ currentSeconds = 1;
+ onNextSecondThread(currentSeconds, true);
+
+ }
+ if (time >= 2000 && currentSeconds == 1) {
+ currentSeconds = 2;
+ onNextSecondThread(currentSeconds, true);
+ }
+ if (time >= 3000 && currentSeconds == 2) {
+ currentSeconds = 3;
+ running.set(false);
+ game.countdownFinished();
+ }
+ }
+ }
+
+ public void start() {
+ reset();
+ running.set(true);
+ soundStream = soundManager.playSound(soundManager.countdownSoundSingle);
+ }
+
+ public void stop() {
+ running.set(false);
+ if (soundStream != null)
+ soundManager.stopSound(soundStream);
+ }
+
+ private void reset() {
+ time = 0;
+ currentSeconds = 0;
+ onNextSecondThread(0, false);
+ }
+
+ private void onNextSecondThread(final int second, final boolean playSound) {
+ if (playSound) {
+ if (second == 2)
+ soundStream = soundManager.playSound(soundManager.countdownSoundLast);
+ else
+ soundStream = soundManager.playSound(soundManager.countdownSoundSingle);
+ }
+ super.setTexture(texture1);
+ if (second == 1)
+ super.setTexture(texture2);
+ else if (second == 2)
+ super.setTexture(texture3);
+ }
+
+ @Override
+ public boolean isVisible() {
+ return running.get();
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/guis/Gui.java b/app/src/main/java/de/frajul/endlessroll/entities/guis/Gui.java
index dfda139..ca23f21 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/guis/Gui.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/guis/Gui.java
@@ -1,31 +1,31 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.guis;
-
-import de.frajul.endlessroll.data.Color4f;
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.textures.Texture;
-
-public class Gui extends Entity {
-
- protected float roundValue = 0;
-
- public Gui(Texture texture, Vector position, float width, float height) {
- super(texture, position, width, height);
- }
-
- public float getRoundValue() {
- return roundValue;
- }
-
- public void setRoundValue(float roundValue) {
- this.roundValue = roundValue;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.guis;
+
+import de.frajul.endlessroll.data.Color4f;
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.textures.Texture;
+
+public class Gui extends Entity {
+
+ protected float roundValue = 0;
+
+ public Gui(Texture texture, Vector position, float width, float height) {
+ super(texture, position, width, height);
+ }
+
+ public float getRoundValue() {
+ return roundValue;
+ }
+
+ public void setRoundValue(float roundValue) {
+ this.roundValue = roundValue;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/guis/Progressbar.java b/app/src/main/java/de/frajul/endlessroll/entities/guis/Progressbar.java
index 0670bdd..82c961e 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/guis/Progressbar.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/guis/Progressbar.java
@@ -1,48 +1,48 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.guis;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.textures.Texture;
-
-public class Progressbar extends Gui {
-
- private float maxTime;
- private float progress;
-
- public Progressbar(Texture texture, Vector position, float width, float height, float maxTime) {
- super(texture, position, width, height);
- this.maxTime = maxTime;
- }
-
- public void update(float frameTime) {
- progress += frameTime / maxTime;
- if (progress >= 1f)
- progress = 1f;
- }
-
- public boolean hasFinished() {
- return progress == 1;
- }
-
- public float getProgress() {
- return progress;
- }
-
- public void setProgress(float progress) {
- this.progress = progress;
- }
-
- public float getMaxTime() {
- return maxTime;
- }
-
- public void setMaxTime(float maxTime) {
- this.maxTime = maxTime;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.guis;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.textures.Texture;
+
+public class Progressbar extends Gui {
+
+ private float maxTime;
+ private float progress;
+
+ public Progressbar(Texture texture, Vector position, float width, float height, float maxTime) {
+ super(texture, position, width, height);
+ this.maxTime = maxTime;
+ }
+
+ public void update(float frameTime) {
+ progress += frameTime / maxTime;
+ if (progress >= 1f)
+ progress = 1f;
+ }
+
+ public boolean hasFinished() {
+ return progress == 1;
+ }
+
+ public float getProgress() {
+ return progress;
+ }
+
+ public void setProgress(float progress) {
+ this.progress = progress;
+ }
+
+ public float getMaxTime() {
+ return maxTime;
+ }
+
+ public void setMaxTime(float maxTime) {
+ this.maxTime = maxTime;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButton.java b/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButton.java
index 3622f15..38f72af 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButton.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButton.java
@@ -1,157 +1,157 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.guis;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import de.frajul.endlessroll.data.Color3f;
-import de.frajul.endlessroll.data.Color4f;
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.entities.tools.ToolSlot;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.entities.tools.ToolUpgradeType;
-import de.frajul.endlessroll.main.game.Game;
-
-public class ToolButton {
-
- private final Color3f LOCKED = new Color3f(0.29f, 0.29f, 0.29f);
- private final Color3f ACTIVE_READY = new Color3f(0.25f, 0.89f, 0.17f);
- private final Color3f ACTIVE_NOT_READY = new Color3f(0.86f, 0.08f, 0.13f);
- private final Color3f INACTIVE_READY = new Color3f(1.0f, 0.95f, 0.0f);
- private final Color3f INACTIVE_NOT_READY = new Color3f(0.57f, 0.11f, 0.06f);
-
- private Gui border;
- private Gui background;
- private Progressbar progressbar;
- private ToolButtonAnimationLayer animationLayer;
-
- private Game game;
- private ToolType toolType;
- private boolean locked;
- private AtomicBoolean active;
- private Texture toolButtonLockedTexture;
- private Texture toolButtonEmptyTexture;
-
- public ToolButton(Vector position, float width, float height, TexturePack texturePack, Game game) {
- this.game = game;
- active = new AtomicBoolean(false);
- toolButtonLockedTexture = texturePack.toolButtonLocked;
- toolButtonEmptyTexture = texturePack.toolButtonEmpty;
-
- border = new Gui(texturePack.white, position, width, height);
- border.setRoundValue(0.3f);
- border.setAlpha(0.9f);
- background = new Gui(null, position, height, height);
- progressbar = new Progressbar(texturePack.white, position, height, height, 0);
- progressbar.setColor(new Color3f(0.4f, 0.4f, 0.4f));
- progressbar.setAlpha(0.6f);
- progressbar.setRoundValue(1);
- progressbar.setProgress(0.6f);
- animationLayer = new ToolButtonAnimationLayer(toolButtonLockedTexture, position, height,
- height);
- }
-
- public void setToolSlot(ToolSlot toolSlot) {
- this.toolType = toolSlot.getToolType();
- this.locked = toolSlot.isLocked();
-
- if (locked) {
- background.setTexture(toolButtonLockedTexture);
- } else if (toolType == null) {
- background.setTexture(toolButtonEmptyTexture);
- } else {
- background.setTexture(toolType.getToolButtonTexture());
- animationLayer.setTexture(toolType.getToolButtonTexture());
- }
- if (toolType != null)
- progressbar.setMaxTime(toolType.getCurrentUpgradeValue(ToolUpgradeType.COOLDOWN));
-
- if (locked || toolType == null)
- border.setColor(LOCKED);
- else
- border.setColor(INACTIVE_NOT_READY);
- }
-
- public void setProgress(float progress) {
- progressbar.setProgress(progress);
- updateBorderColor();
- }
-
- public boolean hasFinishedLoading() {
- return progressbar.hasFinished();
- }
-
- public void update(float frameTime, boolean gameRunning) {
- if (gameRunning) {
- if (!progressbar.hasFinished()) {
- progressbar.update(frameTime);
- if (progressbar.hasFinished()) {
- animationLayer.startAnimation();
- if (active.get())
- game.onToolButtonFinishedLoading(toolType);
- }
- }
- updateBorderColor();
- }
-
- animationLayer.update(frameTime);
- }
-
- public synchronized void updateBorderColor() {
- if (!locked && toolType != null) {
- if (active.get()) {
- if (progressbar.hasFinished())
- border.setColor(ACTIVE_READY);
- else
- border.setColor(ACTIVE_NOT_READY);
- } else {
- if (progressbar.hasFinished())
- border.setColor(INACTIVE_READY);
- else
- border.setColor(INACTIVE_NOT_READY);
- }
- }
- }
-
- public void setVisible(boolean visible){
- border.setVisible(visible);
- background.setVisible(visible);
- progressbar.setVisible(visible);
- animationLayer.setVisible(visible);
- }
-
- public void setActive(boolean active) {
- this.active.set(active);
- }
-
- public AtomicBoolean getActive() {
- return active;
- }
-
- public Gui getBorder() {
- return border;
- }
-
- public Gui getBackground() {
- return background;
- }
-
- public Progressbar getProgressbar() {
- return progressbar;
- }
-
- public ToolButtonAnimationLayer getAnimationLayer() {
- return animationLayer;
- }
-
- public ToolType getToolType() {
- return toolType;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.guis;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import de.frajul.endlessroll.data.Color3f;
+import de.frajul.endlessroll.data.Color4f;
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.entities.tools.ToolSlot;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.entities.tools.ToolUpgradeType;
+import de.frajul.endlessroll.main.game.Game;
+
+public class ToolButton {
+
+ private final Color3f LOCKED = new Color3f(0.29f, 0.29f, 0.29f);
+ private final Color3f ACTIVE_READY = new Color3f(0.25f, 0.89f, 0.17f);
+ private final Color3f ACTIVE_NOT_READY = new Color3f(0.86f, 0.08f, 0.13f);
+ private final Color3f INACTIVE_READY = new Color3f(1.0f, 0.95f, 0.0f);
+ private final Color3f INACTIVE_NOT_READY = new Color3f(0.57f, 0.11f, 0.06f);
+
+ private Gui border;
+ private Gui background;
+ private Progressbar progressbar;
+ private ToolButtonAnimationLayer animationLayer;
+
+ private Game game;
+ private ToolType toolType;
+ private boolean locked;
+ private AtomicBoolean active;
+ private Texture toolButtonLockedTexture;
+ private Texture toolButtonEmptyTexture;
+
+ public ToolButton(Vector position, float width, float height, TexturePack texturePack, Game game) {
+ this.game = game;
+ active = new AtomicBoolean(false);
+ toolButtonLockedTexture = texturePack.toolButtonLocked;
+ toolButtonEmptyTexture = texturePack.toolButtonEmpty;
+
+ border = new Gui(texturePack.white, position, width, height);
+ border.setRoundValue(0.3f);
+ border.setAlpha(0.9f);
+ background = new Gui(null, position, height, height);
+ progressbar = new Progressbar(texturePack.white, position, height, height, 0);
+ progressbar.setColor(new Color3f(0.4f, 0.4f, 0.4f));
+ progressbar.setAlpha(0.6f);
+ progressbar.setRoundValue(1);
+ progressbar.setProgress(0.6f);
+ animationLayer = new ToolButtonAnimationLayer(toolButtonLockedTexture, position, height,
+ height);
+ }
+
+ public void setToolSlot(ToolSlot toolSlot) {
+ this.toolType = toolSlot.getToolType();
+ this.locked = toolSlot.isLocked();
+
+ if (locked) {
+ background.setTexture(toolButtonLockedTexture);
+ } else if (toolType == null) {
+ background.setTexture(toolButtonEmptyTexture);
+ } else {
+ background.setTexture(toolType.getToolButtonTexture());
+ animationLayer.setTexture(toolType.getToolButtonTexture());
+ }
+ if (toolType != null)
+ progressbar.setMaxTime(toolType.getCurrentUpgradeValue(ToolUpgradeType.COOLDOWN));
+
+ if (locked || toolType == null)
+ border.setColor(LOCKED);
+ else
+ border.setColor(INACTIVE_NOT_READY);
+ }
+
+ public void setProgress(float progress) {
+ progressbar.setProgress(progress);
+ updateBorderColor();
+ }
+
+ public boolean hasFinishedLoading() {
+ return progressbar.hasFinished();
+ }
+
+ public void update(float frameTime, boolean gameRunning) {
+ if (gameRunning) {
+ if (!progressbar.hasFinished()) {
+ progressbar.update(frameTime);
+ if (progressbar.hasFinished()) {
+ animationLayer.startAnimation();
+ if (active.get())
+ game.onToolButtonFinishedLoading(toolType);
+ }
+ }
+ updateBorderColor();
+ }
+
+ animationLayer.update(frameTime);
+ }
+
+ public synchronized void updateBorderColor() {
+ if (!locked && toolType != null) {
+ if (active.get()) {
+ if (progressbar.hasFinished())
+ border.setColor(ACTIVE_READY);
+ else
+ border.setColor(ACTIVE_NOT_READY);
+ } else {
+ if (progressbar.hasFinished())
+ border.setColor(INACTIVE_READY);
+ else
+ border.setColor(INACTIVE_NOT_READY);
+ }
+ }
+ }
+
+ public void setVisible(boolean visible){
+ border.setVisible(visible);
+ background.setVisible(visible);
+ progressbar.setVisible(visible);
+ animationLayer.setVisible(visible);
+ }
+
+ public void setActive(boolean active) {
+ this.active.set(active);
+ }
+
+ public AtomicBoolean getActive() {
+ return active;
+ }
+
+ public Gui getBorder() {
+ return border;
+ }
+
+ public Gui getBackground() {
+ return background;
+ }
+
+ public Progressbar getProgressbar() {
+ return progressbar;
+ }
+
+ public ToolButtonAnimationLayer getAnimationLayer() {
+ return animationLayer;
+ }
+
+ public ToolType getToolType() {
+ return toolType;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButtonAnimationLayer.java b/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButtonAnimationLayer.java
index 73207f8..5dbd4d2 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButtonAnimationLayer.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButtonAnimationLayer.java
@@ -1,58 +1,58 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.guis;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.textures.Texture;
-
-public class ToolButtonAnimationLayer extends Gui {
-
- private final float ANIMATION_TIME = 500;
-
- private float startWidth;
- private float startHeight;
- private boolean animationRunning = false;
- private float elapsedTime = 0;
-
- public ToolButtonAnimationLayer(Texture texture, Vector position, float width, float height) {
- super(texture, position, width, height);
- super.setVisible(false);
- this.startWidth = width;
- this.startHeight = height;
- }
-
- public void startAnimation() {
- reset();
- super.setVisible(true);
- animationRunning = true;
- }
-
- public void update(float frameTime) {
- if (animationRunning) {
- elapsedTime += frameTime;
- if (elapsedTime >= ANIMATION_TIME) {
- reset();
- }
- float progress = elapsedTime / ANIMATION_TIME;
- super.setAlpha(0.5f - 0.5f * progress);
- float scaleFactor = 1 + 2 * progress;
- super.setWidth(scaleFactor * startWidth);
- super.setHeight(scaleFactor * startHeight);
- }
- }
-
- public void reset() {
- animationRunning = false;
- elapsedTime = 0;
- super.setVisible(false);
- super.setAlpha(0.5f);
- super.setWidth(startWidth);
- super.setHeight(startHeight);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.guis;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.textures.Texture;
+
+public class ToolButtonAnimationLayer extends Gui {
+
+ private final float ANIMATION_TIME = 500;
+
+ private float startWidth;
+ private float startHeight;
+ private boolean animationRunning = false;
+ private float elapsedTime = 0;
+
+ public ToolButtonAnimationLayer(Texture texture, Vector position, float width, float height) {
+ super(texture, position, width, height);
+ super.setVisible(false);
+ this.startWidth = width;
+ this.startHeight = height;
+ }
+
+ public void startAnimation() {
+ reset();
+ super.setVisible(true);
+ animationRunning = true;
+ }
+
+ public void update(float frameTime) {
+ if (animationRunning) {
+ elapsedTime += frameTime;
+ if (elapsedTime >= ANIMATION_TIME) {
+ reset();
+ }
+ float progress = elapsedTime / ANIMATION_TIME;
+ super.setAlpha(0.5f - 0.5f * progress);
+ float scaleFactor = 1 + 2 * progress;
+ super.setWidth(scaleFactor * startWidth);
+ super.setHeight(scaleFactor * startHeight);
+ }
+ }
+
+ public void reset() {
+ animationRunning = false;
+ elapsedTime = 0;
+ super.setVisible(false);
+ super.setAlpha(0.5f);
+ super.setWidth(startWidth);
+ super.setHeight(startHeight);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButtonBar.java b/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButtonBar.java
index 01a929f..3e99e50 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButtonBar.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/guis/ToolButtonBar.java
@@ -1,101 +1,101 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.guis;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.main.game.Game;
-import de.frajul.endlessroll.user.ToolSlotSettings;
-
-public class ToolButtonBar {
-
- private final int BUTTON_COUNT = 4;
- private final float BUTTON_HEIGHT = 0.34f;
- private final float BUTTON_WIDTH = BUTTON_HEIGHT * 1.17f;
- private final float BUTTON_MARGIN = 0.012f;
-
- private List toolButtons = new ArrayList<>();
-
- public ToolButtonBar(TexturePack texturePack, Game game, ToolSlotSettings toolSlotSettings) {
- float buttonWidth = BUTTON_WIDTH + 2 * BUTTON_MARGIN;
- float totalWidth = BUTTON_COUNT * buttonWidth;
-
- for (int i = 0; i < BUTTON_COUNT; i++) {
- Vector position = new Vector(-totalWidth / 2 + (i + 0.5f) * buttonWidth,
- 1 - (0.5f * BUTTON_HEIGHT + BUTTON_MARGIN * 2));
- ToolButton toolButton = new ToolButton(position, BUTTON_WIDTH, BUTTON_HEIGHT,
- texturePack, game);
- toolButton.setToolSlot(toolSlotSettings.get(i));
- toolButtons.add(toolButton);
- }
- }
-
- public void update(float frameTime, boolean gameRunning) {
- for (ToolButton button : toolButtons)
- button.update(frameTime, gameRunning);
- }
-
- public void changeToolButtonTypes(ToolSlotSettings toolSlotSettings) {
- for (int i = 0; i < 4; i++) {
- toolButtons.get(i).setToolSlot(toolSlotSettings.get(i));
- }
- }
-
- public void reset(ToolSlotSettings toolSlotSettings) {
- changeToolButtonTypes(toolSlotSettings);
-
- boolean activeButtonAlreadySet = false;
- for (ToolButton toolButton : toolButtons) {
- if (!activeButtonAlreadySet && toolButton.getToolType() != null) {
- toolButton.setActive(true);
- activeButtonAlreadySet = true;
- } else
- toolButton.setActive(false);
- toolButton.updateBorderColor();
- toolButton.setProgress(1);
- toolButton.getAnimationLayer().reset();
- }
- }
-
- public void setActive(ToolType activeType) {
- for (ToolButton button : toolButtons)
- button.setActive(button.getToolType() == activeType);
- }
-
- public ToolButton getActiveButton() {
- for (ToolButton button : toolButtons)
- if (button.getActive().get())
- return button;
- return null;
- }
-
- public List toGuiList() {
- List list = new ArrayList<>();
- for (ToolButton button : toolButtons) {
- list.add(button.getBorder());
- list.add(button.getBackground());
- list.add(button.getProgressbar());
- list.add(button.getAnimationLayer());
- }
- return list;
- }
-
- public void setVisible(boolean visible) {
- for (ToolButton button : toolButtons) {
- button.setVisible(visible);
- }
- }
-
- public List getToolButtons() {
- return toolButtons;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.guis;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.main.game.Game;
+import de.frajul.endlessroll.user.ToolSlotSettings;
+
+public class ToolButtonBar {
+
+ private final int BUTTON_COUNT = 4;
+ private final float BUTTON_HEIGHT = 0.34f;
+ private final float BUTTON_WIDTH = BUTTON_HEIGHT * 1.17f;
+ private final float BUTTON_MARGIN = 0.012f;
+
+ private List toolButtons = new ArrayList<>();
+
+ public ToolButtonBar(TexturePack texturePack, Game game, ToolSlotSettings toolSlotSettings) {
+ float buttonWidth = BUTTON_WIDTH + 2 * BUTTON_MARGIN;
+ float totalWidth = BUTTON_COUNT * buttonWidth;
+
+ for (int i = 0; i < BUTTON_COUNT; i++) {
+ Vector position = new Vector(-totalWidth / 2 + (i + 0.5f) * buttonWidth,
+ 1 - (0.5f * BUTTON_HEIGHT + BUTTON_MARGIN * 2));
+ ToolButton toolButton = new ToolButton(position, BUTTON_WIDTH, BUTTON_HEIGHT,
+ texturePack, game);
+ toolButton.setToolSlot(toolSlotSettings.get(i));
+ toolButtons.add(toolButton);
+ }
+ }
+
+ public void update(float frameTime, boolean gameRunning) {
+ for (ToolButton button : toolButtons)
+ button.update(frameTime, gameRunning);
+ }
+
+ public void changeToolButtonTypes(ToolSlotSettings toolSlotSettings) {
+ for (int i = 0; i < 4; i++) {
+ toolButtons.get(i).setToolSlot(toolSlotSettings.get(i));
+ }
+ }
+
+ public void reset(ToolSlotSettings toolSlotSettings) {
+ changeToolButtonTypes(toolSlotSettings);
+
+ boolean activeButtonAlreadySet = false;
+ for (ToolButton toolButton : toolButtons) {
+ if (!activeButtonAlreadySet && toolButton.getToolType() != null) {
+ toolButton.setActive(true);
+ activeButtonAlreadySet = true;
+ } else
+ toolButton.setActive(false);
+ toolButton.updateBorderColor();
+ toolButton.setProgress(1);
+ toolButton.getAnimationLayer().reset();
+ }
+ }
+
+ public void setActive(ToolType activeType) {
+ for (ToolButton button : toolButtons)
+ button.setActive(button.getToolType() == activeType);
+ }
+
+ public ToolButton getActiveButton() {
+ for (ToolButton button : toolButtons)
+ if (button.getActive().get())
+ return button;
+ return null;
+ }
+
+ public List toGuiList() {
+ List list = new ArrayList<>();
+ for (ToolButton button : toolButtons) {
+ list.add(button.getBorder());
+ list.add(button.getBackground());
+ list.add(button.getProgressbar());
+ list.add(button.getAnimationLayer());
+ }
+ return list;
+ }
+
+ public void setVisible(boolean visible) {
+ for (ToolButton button : toolButtons) {
+ button.setVisible(visible);
+ }
+ }
+
+ public List getToolButtons() {
+ return toolButtons;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/Firework.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/Firework.java
index 4dd6146..28a8717 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/Firework.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/Firework.java
@@ -1,50 +1,50 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles;
-
-import java.util.Random;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.main.game.Camera;
-
-/**
- * Created by Julian on 15.07.2017.
- */
-
-public class Firework {
-
- private ParticleEffect effect;
- private Camera camera;
- private Random random;
-
- public Firework(ParticleEffect effect, Camera camera) {
- this.effect = effect;
- this.camera = camera;
- this.random = new Random();
- }
-
- public void start() {
- randomExplosion(0);
- randomExplosion(100);
- randomExplosion(300);
- }
-
- private void randomExplosion(float delay) {
- ParticleSource explosion = new ParticleSource(randomPosition(), effect);
- explosion.setDelayMS(delay);
- explosion.start();
- }
-
- private Vector randomPosition() {
- float x = camera.getX() + (random.nextFloat() - 0.5f) * 2.5f;
- float y = camera.getY() + (random.nextFloat() * 0.5f) - 1f;
- return new Vector(x, y);
- }
-
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles;
+
+import java.util.Random;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.main.game.Camera;
+
+/**
+ * Created by Julian on 15.07.2017.
+ */
+
+public class Firework {
+
+ private ParticleEffect effect;
+ private Camera camera;
+ private Random random;
+
+ public Firework(ParticleEffect effect, Camera camera) {
+ this.effect = effect;
+ this.camera = camera;
+ this.random = new Random();
+ }
+
+ public void start() {
+ randomExplosion(0);
+ randomExplosion(100);
+ randomExplosion(300);
+ }
+
+ private void randomExplosion(float delay) {
+ ParticleSource explosion = new ParticleSource(randomPosition(), effect);
+ explosion.setDelayMS(delay);
+ explosion.start();
+ }
+
+ private Vector randomPosition() {
+ float x = camera.getX() + (random.nextFloat() - 0.5f) * 2.5f;
+ float y = camera.getY() + (random.nextFloat() * 0.5f) - 1f;
+ return new Vector(x, y);
+ }
+
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/Particle.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/Particle.java
index d23e213..46c0c30 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/Particle.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/Particle.java
@@ -1,118 +1,118 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles;
-
-import java.util.Random;
-
-import de.frajul.endlessroll.data.Color3f;
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class Particle extends Entity {
-
- private Color3f color;
- private Random random;
- private boolean active;
- private float maxLife;
- private float passedLifetime;
-
- private Timeline scaleTimeline;
- private Range scale;
- private Timeline velocityTimeline;
- private Range velocity;
- private Timeline angleTimeline;
- private Range angle;
- private Timeline rotationTimeline;
- private Range rotation;
- private Timeline transparencyTimeline;
- private TintTimeline tintTimeline;
- private Timeline windTimeline;
- private Range wind;
- private Timeline gravityTimeline;
- private Range gravity;
-
- public Particle(Random random) {
- super(null, new Vector(), 1, 1);
- this.random = random;
- }
-
- public void activate(Vector position, float liveValue, ParticleData particleData) {
- active = true;
- passedLifetime = 0;
- super.setPosition(position);
- maxLife = particleData.getLife().createValue(random, liveValue);
- scaleTimeline = particleData.getScaleTR().getTimeline();
- scale = particleData.getScaleTR().getRange().createNormalizedInstance(random);
- velocityTimeline = particleData.getVelocityTR().getTimeline();
- velocity = particleData.getVelocityTR().getRange().createNormalizedInstance(random);
- angleTimeline = particleData.getAngleTR().getTimeline();
- angle = particleData.getAngleTR().getRange().createNormalizedInstance(random);
- rotationTimeline = particleData.getRotationTR().getTimeline();
- rotation = particleData.getRotationTR().getRange().createNormalizedInstance(random);
- transparencyTimeline = particleData.getTransparencyT();
- tintTimeline = particleData.getTint();
- windTimeline = particleData.getWindTR().getTimeline();
- wind = particleData.getWindTR().getRange().createNormalizedInstance(random);
- gravityTimeline = particleData.getGravityTR().getTimeline();
- gravity = particleData.getGravityTR().getRange().createNormalizedInstance(random);
- }
-
- public void update(Timer timer) {
- if (active) {
- passedLifetime += timer.getFrameTimeMilliseconds();
- if (passedLifetime >= maxLife)
- active = false;
- float lifetimePercent = passedLifetime / maxLife;
- setScale(scale.createValue(random, scaleTimeline.getValueAtTime(lifetimePercent)));
- setMovement(
- velocity.createValue(random, velocityTimeline.getValueAtTime(lifetimePercent)),
- angle.createValue(random, angleTimeline.getValueAtTime(lifetimePercent)),
- wind.createValue(random, windTimeline.getValueAtTime(lifetimePercent)),
- gravity.createValue(random, gravityTimeline.getValueAtTime(lifetimePercent)));
- super.setRotation(-rotation
- .createValue(random, rotationTimeline.getValueAtTime(lifetimePercent)));
- super.setAlpha(transparencyTimeline.getValueAtTime(lifetimePercent));
- setColor(tintTimeline.getValueAtTime(lifetimePercent));
- }
- }
-
- private void setScale(float scale) {
- super.setWidth(scale * ParticleSystem.TRANSFER_VALUE);
- super.setHeight(scale * ParticleSystem.TRANSFER_VALUE);
- }
-
- private void setMovement(float velocity, float angle, float windStrength, float gravityStrength) {
- float radians = (float) Math.toRadians(angle);
- Vector normalMovement = new Vector();
- normalMovement.setX((float) Math.cos(radians));
- normalMovement.setY((float) Math.sin(radians));
- normalMovement.mul(velocity * ParticleSystem.TRANSFER_VALUE);
- normalMovement.translate(windStrength * ParticleSystem.TRANSFER_VALUE,
- gravityStrength * ParticleSystem.TRANSFER_VALUE);
- super.setMovement(normalMovement);
- }
-
- public boolean isActive() {
- return active;
- }
-
- public void setColor(Color3f color) {
- this.color = color;
- }
-
- public Color3f getColor() {
- return color;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles;
+
+import java.util.Random;
+
+import de.frajul.endlessroll.data.Color3f;
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class Particle extends Entity {
+
+ private Color3f color;
+ private Random random;
+ private boolean active;
+ private float maxLife;
+ private float passedLifetime;
+
+ private Timeline scaleTimeline;
+ private Range scale;
+ private Timeline velocityTimeline;
+ private Range velocity;
+ private Timeline angleTimeline;
+ private Range angle;
+ private Timeline rotationTimeline;
+ private Range rotation;
+ private Timeline transparencyTimeline;
+ private TintTimeline tintTimeline;
+ private Timeline windTimeline;
+ private Range wind;
+ private Timeline gravityTimeline;
+ private Range gravity;
+
+ public Particle(Random random) {
+ super(null, new Vector(), 1, 1);
+ this.random = random;
+ }
+
+ public void activate(Vector position, float liveValue, ParticleData particleData) {
+ active = true;
+ passedLifetime = 0;
+ super.setPosition(position);
+ maxLife = particleData.getLife().createValue(random, liveValue);
+ scaleTimeline = particleData.getScaleTR().getTimeline();
+ scale = particleData.getScaleTR().getRange().createNormalizedInstance(random);
+ velocityTimeline = particleData.getVelocityTR().getTimeline();
+ velocity = particleData.getVelocityTR().getRange().createNormalizedInstance(random);
+ angleTimeline = particleData.getAngleTR().getTimeline();
+ angle = particleData.getAngleTR().getRange().createNormalizedInstance(random);
+ rotationTimeline = particleData.getRotationTR().getTimeline();
+ rotation = particleData.getRotationTR().getRange().createNormalizedInstance(random);
+ transparencyTimeline = particleData.getTransparencyT();
+ tintTimeline = particleData.getTint();
+ windTimeline = particleData.getWindTR().getTimeline();
+ wind = particleData.getWindTR().getRange().createNormalizedInstance(random);
+ gravityTimeline = particleData.getGravityTR().getTimeline();
+ gravity = particleData.getGravityTR().getRange().createNormalizedInstance(random);
+ }
+
+ public void update(Timer timer) {
+ if (active) {
+ passedLifetime += timer.getFrameTimeMilliseconds();
+ if (passedLifetime >= maxLife)
+ active = false;
+ float lifetimePercent = passedLifetime / maxLife;
+ setScale(scale.createValue(random, scaleTimeline.getValueAtTime(lifetimePercent)));
+ setMovement(
+ velocity.createValue(random, velocityTimeline.getValueAtTime(lifetimePercent)),
+ angle.createValue(random, angleTimeline.getValueAtTime(lifetimePercent)),
+ wind.createValue(random, windTimeline.getValueAtTime(lifetimePercent)),
+ gravity.createValue(random, gravityTimeline.getValueAtTime(lifetimePercent)));
+ super.setRotation(-rotation
+ .createValue(random, rotationTimeline.getValueAtTime(lifetimePercent)));
+ super.setAlpha(transparencyTimeline.getValueAtTime(lifetimePercent));
+ setColor(tintTimeline.getValueAtTime(lifetimePercent));
+ }
+ }
+
+ private void setScale(float scale) {
+ super.setWidth(scale * ParticleSystem.TRANSFER_VALUE);
+ super.setHeight(scale * ParticleSystem.TRANSFER_VALUE);
+ }
+
+ private void setMovement(float velocity, float angle, float windStrength, float gravityStrength) {
+ float radians = (float) Math.toRadians(angle);
+ Vector normalMovement = new Vector();
+ normalMovement.setX((float) Math.cos(radians));
+ normalMovement.setY((float) Math.sin(radians));
+ normalMovement.mul(velocity * ParticleSystem.TRANSFER_VALUE);
+ normalMovement.translate(windStrength * ParticleSystem.TRANSFER_VALUE,
+ gravityStrength * ParticleSystem.TRANSFER_VALUE);
+ super.setMovement(normalMovement);
+ }
+
+ public boolean isActive() {
+ return active;
+ }
+
+ public void setColor(Color3f color) {
+ this.color = color;
+ }
+
+ public Color3f getColor() {
+ return color;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleData.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleData.java
index 913d47e..ed3dee9 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleData.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleData.java
@@ -1,77 +1,77 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles;
-
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TimelineRange;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
-
-/**
- * Created by Julian on 03.08.2016.
- */
-public class ParticleData {
-
- private Range life;
- private TimelineRange scaleTR;
- private TimelineRange velocityTR;
- private TimelineRange angleTR;
- private TimelineRange rotationTR;
- private Timeline transparencyT;
- private TintTimeline tint;
- private TimelineRange windTR;
- private TimelineRange gravityTR;
-
- public ParticleData(Range life, TimelineRange scaleTR, TimelineRange velocityTR, TimelineRange angleTR, TimelineRange rotationTR, Timeline transparencyT, TintTimeline tint, TimelineRange windTR, TimelineRange gravityTR) {
- this.life = life;
- this.scaleTR = scaleTR;
- this.velocityTR = velocityTR;
- this.angleTR = angleTR;
- this.rotationTR = rotationTR;
- this.transparencyT = transparencyT;
- this.tint = tint;
- this.windTR = windTR;
- this.gravityTR = gravityTR;
- }
-
- public Range getLife() {
- return life;
- }
-
- public TimelineRange getScaleTR() {
- return scaleTR;
- }
-
- public TimelineRange getVelocityTR() {
- return velocityTR;
- }
-
- public TimelineRange getAngleTR() {
- return angleTR;
- }
-
- public TimelineRange getRotationTR() {
- return rotationTR;
- }
-
- public Timeline getTransparencyT() {
- return transparencyT;
- }
-
- public TintTimeline getTint() {
- return tint;
- }
-
- public TimelineRange getWindTR() {
- return windTR;
- }
-
- public TimelineRange getGravityTR() {
- return gravityTR;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles;
+
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TimelineRange;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
+
+/**
+ * Created by Julian on 03.08.2016.
+ */
+public class ParticleData {
+
+ private Range life;
+ private TimelineRange scaleTR;
+ private TimelineRange velocityTR;
+ private TimelineRange angleTR;
+ private TimelineRange rotationTR;
+ private Timeline transparencyT;
+ private TintTimeline tint;
+ private TimelineRange windTR;
+ private TimelineRange gravityTR;
+
+ public ParticleData(Range life, TimelineRange scaleTR, TimelineRange velocityTR, TimelineRange angleTR, TimelineRange rotationTR, Timeline transparencyT, TintTimeline tint, TimelineRange windTR, TimelineRange gravityTR) {
+ this.life = life;
+ this.scaleTR = scaleTR;
+ this.velocityTR = velocityTR;
+ this.angleTR = angleTR;
+ this.rotationTR = rotationTR;
+ this.transparencyT = transparencyT;
+ this.tint = tint;
+ this.windTR = windTR;
+ this.gravityTR = gravityTR;
+ }
+
+ public Range getLife() {
+ return life;
+ }
+
+ public TimelineRange getScaleTR() {
+ return scaleTR;
+ }
+
+ public TimelineRange getVelocityTR() {
+ return velocityTR;
+ }
+
+ public TimelineRange getAngleTR() {
+ return angleTR;
+ }
+
+ public TimelineRange getRotationTR() {
+ return rotationTR;
+ }
+
+ public Timeline getTransparencyT() {
+ return transparencyT;
+ }
+
+ public TintTimeline getTint() {
+ return tint;
+ }
+
+ public TimelineRange getWindTR() {
+ return windTR;
+ }
+
+ public TimelineRange getGravityTR() {
+ return gravityTR;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleEffect.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleEffect.java
index adb38ac..85f3de8 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleEffect.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleEffect.java
@@ -1,236 +1,236 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Options;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.SpawnShape;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TimelineRange;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 05.08.2016.
- */
-public class ParticleEffect {
-
- private TimelineRange life;
- //Particle Timeline
- private TimelineRange scale;
- private TimelineRange velocity;
- private TimelineRange angle;
- private TimelineRange rotation;
- private Timeline transparency;
- private TintTimeline tint;
- private TimelineRange wind;
- private TimelineRange gravity;
-
- //Source Timeline
- private Range delay;
- private Range duration;
- private TimelineRange emission;
- private Range xOffset;
- private Range yOffset;
- private SpawnShape.Shape spawnShape;
- private TimelineRange spawnWidth;
- private TimelineRange spawnHeight;
-
- private Options options;
- private Texture texture;
- private String textureName;
-
- private Random random;
- private List sources = Collections.synchronizedList(new ArrayList());
-
- public ParticleEffect() {
- this.random = new Random();
- }
-
- public void update(Timer timer) {
- synchronized (sources) {
- for (ParticleSource source : sources)
- source.update(timer);
- }
- }
-
- public ParticleData createParticleData() {
- return new ParticleData(life.getRange(), scale, velocity, angle, rotation, transparency, tint, wind, gravity);
- }
-
- public Random getRandom() {
- return random;
- }
-
- public void addSource(ParticleSource source) {
- sources.add(source);
- }
-
- public void setDelay(Range delay) {
- this.delay = delay;
- }
-
- public void setDuration(Range duration) {
- this.duration = duration;
- }
-
- public void setEmission(TimelineRange emission) {
- this.emission = emission;
- }
-
- public void setLife(TimelineRange life) {
- this.life = life;
- }
-
- public void setxOffset(Range xOffset) {
- this.xOffset = xOffset;
- }
-
- public void setyOffset(Range yOffset) {
- this.yOffset = yOffset;
- }
-
- public void setSpawnShape(SpawnShape.Shape spawnShape) {
- this.spawnShape = spawnShape;
- }
-
- public void setSpawnWidth(TimelineRange spawnWidth) {
- this.spawnWidth = spawnWidth;
- }
-
- public void setSpawnHeight(TimelineRange spawnHeight) {
- this.spawnHeight = spawnHeight;
- }
-
- public void setScale(TimelineRange scale) {
- this.scale = scale;
- }
-
- public void setVelocity(TimelineRange velocity) {
- this.velocity = velocity;
- }
-
- public void setAngle(TimelineRange angle) {
- this.angle = angle;
- }
-
- public void setRotation(TimelineRange rotation) {
- this.rotation = rotation;
- }
-
- public void setWind(TimelineRange wind) {
- this.wind = wind;
- }
-
- public void setGravity(TimelineRange gravity) {
- this.gravity = gravity;
- }
-
- public void setTint(TintTimeline tint) {
- this.tint = tint;
- }
-
- public void setTransparency(Timeline transparency) {
- this.transparency = transparency;
- }
-
- public Timeline getTransparency() {
- return transparency;
- }
-
- public TintTimeline getTint() {
- return tint;
- }
-
- public void setOptions(Options options) {
- this.options = options;
- }
-
- public void setTexture(Texture texture) {
- this.texture = texture;
- }
-
- public void setTextureName(String textureName) {
- this.textureName = textureName;
- }
-
- public String getTextureName() {
- return textureName;
- }
-
- public Texture getTexture() {
- return texture;
- }
-
- public Range getDelay() {
- return delay;
- }
-
- public Range getDuration() {
- return duration;
- }
-
- public TimelineRange getEmission() {
- return emission;
- }
-
- public Options getOptions() {
- return options;
- }
-
- public TimelineRange getWind() {
- return wind;
- }
-
- public TimelineRange getGravity() {
- return gravity;
- }
-
- public Range getxOffset() {
- return xOffset;
- }
-
- public Range getyOffset() {
- return yOffset;
- }
-
- public synchronized List getSources() {
- return sources;
- }
-
- public TimelineRange getLife() {
- return life;
- }
-
- public SpawnShape.Shape getSpawnShape() {
- return spawnShape;
- }
-
- public TimelineRange getSpawnHeight() {
- return spawnHeight;
- }
-
- public void deleteSources() {
- synchronized (sources) {
- for (ParticleSource source : sources)
- source.kill();
- sources.clear();
- }
- }
-
- public TimelineRange getSpawnWidth() {
- return spawnWidth;
- }
-}
-
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Options;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.SpawnShape;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TimelineRange;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 05.08.2016.
+ */
+public class ParticleEffect {
+
+ private TimelineRange life;
+ //Particle Timeline
+ private TimelineRange scale;
+ private TimelineRange velocity;
+ private TimelineRange angle;
+ private TimelineRange rotation;
+ private Timeline transparency;
+ private TintTimeline tint;
+ private TimelineRange wind;
+ private TimelineRange gravity;
+
+ //Source Timeline
+ private Range delay;
+ private Range duration;
+ private TimelineRange emission;
+ private Range xOffset;
+ private Range yOffset;
+ private SpawnShape.Shape spawnShape;
+ private TimelineRange spawnWidth;
+ private TimelineRange spawnHeight;
+
+ private Options options;
+ private Texture texture;
+ private String textureName;
+
+ private Random random;
+ private List sources = Collections.synchronizedList(new ArrayList());
+
+ public ParticleEffect() {
+ this.random = new Random();
+ }
+
+ public void update(Timer timer) {
+ synchronized (sources) {
+ for (ParticleSource source : sources)
+ source.update(timer);
+ }
+ }
+
+ public ParticleData createParticleData() {
+ return new ParticleData(life.getRange(), scale, velocity, angle, rotation, transparency, tint, wind, gravity);
+ }
+
+ public Random getRandom() {
+ return random;
+ }
+
+ public void addSource(ParticleSource source) {
+ sources.add(source);
+ }
+
+ public void setDelay(Range delay) {
+ this.delay = delay;
+ }
+
+ public void setDuration(Range duration) {
+ this.duration = duration;
+ }
+
+ public void setEmission(TimelineRange emission) {
+ this.emission = emission;
+ }
+
+ public void setLife(TimelineRange life) {
+ this.life = life;
+ }
+
+ public void setxOffset(Range xOffset) {
+ this.xOffset = xOffset;
+ }
+
+ public void setyOffset(Range yOffset) {
+ this.yOffset = yOffset;
+ }
+
+ public void setSpawnShape(SpawnShape.Shape spawnShape) {
+ this.spawnShape = spawnShape;
+ }
+
+ public void setSpawnWidth(TimelineRange spawnWidth) {
+ this.spawnWidth = spawnWidth;
+ }
+
+ public void setSpawnHeight(TimelineRange spawnHeight) {
+ this.spawnHeight = spawnHeight;
+ }
+
+ public void setScale(TimelineRange scale) {
+ this.scale = scale;
+ }
+
+ public void setVelocity(TimelineRange velocity) {
+ this.velocity = velocity;
+ }
+
+ public void setAngle(TimelineRange angle) {
+ this.angle = angle;
+ }
+
+ public void setRotation(TimelineRange rotation) {
+ this.rotation = rotation;
+ }
+
+ public void setWind(TimelineRange wind) {
+ this.wind = wind;
+ }
+
+ public void setGravity(TimelineRange gravity) {
+ this.gravity = gravity;
+ }
+
+ public void setTint(TintTimeline tint) {
+ this.tint = tint;
+ }
+
+ public void setTransparency(Timeline transparency) {
+ this.transparency = transparency;
+ }
+
+ public Timeline getTransparency() {
+ return transparency;
+ }
+
+ public TintTimeline getTint() {
+ return tint;
+ }
+
+ public void setOptions(Options options) {
+ this.options = options;
+ }
+
+ public void setTexture(Texture texture) {
+ this.texture = texture;
+ }
+
+ public void setTextureName(String textureName) {
+ this.textureName = textureName;
+ }
+
+ public String getTextureName() {
+ return textureName;
+ }
+
+ public Texture getTexture() {
+ return texture;
+ }
+
+ public Range getDelay() {
+ return delay;
+ }
+
+ public Range getDuration() {
+ return duration;
+ }
+
+ public TimelineRange getEmission() {
+ return emission;
+ }
+
+ public Options getOptions() {
+ return options;
+ }
+
+ public TimelineRange getWind() {
+ return wind;
+ }
+
+ public TimelineRange getGravity() {
+ return gravity;
+ }
+
+ public Range getxOffset() {
+ return xOffset;
+ }
+
+ public Range getyOffset() {
+ return yOffset;
+ }
+
+ public synchronized List getSources() {
+ return sources;
+ }
+
+ public TimelineRange getLife() {
+ return life;
+ }
+
+ public SpawnShape.Shape getSpawnShape() {
+ return spawnShape;
+ }
+
+ public TimelineRange getSpawnHeight() {
+ return spawnHeight;
+ }
+
+ public void deleteSources() {
+ synchronized (sources) {
+ for (ParticleSource source : sources)
+ source.kill();
+ sources.clear();
+ }
+ }
+
+ public TimelineRange getSpawnWidth() {
+ return spawnWidth;
+ }
+}
+
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleReader.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleReader.java
index 34fe1a4..dfeffd2 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleReader.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleReader.java
@@ -1,170 +1,170 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles;
-
-import android.content.Context;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.entities.particles.attributes.Attribute;
-import de.frajul.endlessroll.entities.particles.attributes.AttributeValueReader;
-import de.frajul.endlessroll.entities.particles.attributes.ParticleAttributeType;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ImagePath;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Options;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValueType;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.SpawnShape;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TimelineRange;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class ParticleReader {
-
- private Context context;
- private AttributeValueReader attributeValueReader;
-
- private List attributes;
- private Attribute currentAttribute;
-
- public ParticleReader(Context context) {
- this.context = context;
- attributeValueReader = new AttributeValueReader();
- }
-
- /**
- * reads ParticleEffect from *.pe files
- * !Ignores COUNT, LIFE_OFFSET!
- */
- public ParticleEffect read(String filename) throws Exception {
- try {
- attributes = new ArrayList<>();
- currentAttribute = null;
- InputStream is = context.getAssets().open(filename);
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
- String line;
- while ((line = reader.readLine()) != null) {
- line = line.trim();
- handleLine(line);
- }
- reader.close();
- return createParticleEffect();
- } catch (Exception e) {
- throw new Exception("Could not read particleFile: ", e);
- }
- }
-
- private void handleLine(String line) throws Exception {
- if (line.startsWith("- ")) {
- Attribute attrib = ParticleAttributeType.getByInFileTitle(line).createInstance();
- attributes.add(attrib);
- currentAttribute = attrib;
- } else if (currentAttribute != null)
- attributeValueReader.addValueForAttribute(currentAttribute, line);
- }
-
- private ParticleEffect createParticleEffect() throws Exception {
- ParticleEffect effect = new ParticleEffect();
- Timeline timeline = null;
- Range range = null;
- for (Attribute attribute : attributes) {
- switch (attribute.getType()) {
- case DELAY:
- effect.setDelay((Range) attribute.get(ParticleAttributeValueType.RANGE));
- break;
- case DURATION:
- effect.setDuration((Range) attribute.get(ParticleAttributeValueType.RANGE));
- break;
- case COUNT:
- break;
- case EMISSION:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setEmission(new TimelineRange(timeline, range));
- break;
- case LIFE:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setLife(new TimelineRange(timeline, range));
- break;
- case LIFE_OFFSET:
- break;
- case X_OFFSET:
- effect.setxOffset((Range) attribute.get(ParticleAttributeValueType.RANGE));
- break;
- case Y_OFFSET:
- effect.setyOffset((Range) attribute.get(ParticleAttributeValueType.RANGE));
- break;
- case SPAWN_SHAPE:
- effect.setSpawnShape(((SpawnShape) attribute.get(ParticleAttributeValueType.SPAWN_SHAPE)).getShape());
- break;
- case SPAWN_WIDTH:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setSpawnWidth(new TimelineRange(timeline, range));
- break;
- case SPAWN_HEIGHT:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setSpawnHeight(new TimelineRange(timeline, range));
- break;
- case SCALE:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setScale(new TimelineRange(timeline, range));
- break;
- case VELOCITY:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setVelocity(new TimelineRange(timeline, range));
- break;
- case ANGLE:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setAngle(new TimelineRange(timeline, range));
- break;
- case ROTATION:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setRotation(new TimelineRange(timeline, range));
- break;
- case WIND:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setWind(new TimelineRange(timeline, range));
- break;
- case GRAVITY:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
- effect.setGravity(new TimelineRange(timeline, range));
- break;
- case TINT:
- effect.setTint((TintTimeline) attribute.get(ParticleAttributeValueType.TINT_TIMELINE));
- break;
- case TRANSPARENCY:
- timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
- effect.setTransparency(timeline);
- break;
- case OPTIONS:
- effect.setOptions((Options) attribute.get(ParticleAttributeValueType.OPTIONS));
- break;
- case IMAGE_PATH:
- String path = ((ImagePath) attribute.get(ParticleAttributeValueType.IMAGE_PATH)).getImagePath();
- effect.setTextureName(path);
- break;
- }
- }
- return effect;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles;
+
+import android.content.Context;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.entities.particles.attributes.Attribute;
+import de.frajul.endlessroll.entities.particles.attributes.AttributeValueReader;
+import de.frajul.endlessroll.entities.particles.attributes.ParticleAttributeType;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ImagePath;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Options;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValueType;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.SpawnShape;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TimelineRange;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class ParticleReader {
+
+ private Context context;
+ private AttributeValueReader attributeValueReader;
+
+ private List attributes;
+ private Attribute currentAttribute;
+
+ public ParticleReader(Context context) {
+ this.context = context;
+ attributeValueReader = new AttributeValueReader();
+ }
+
+ /**
+ * reads ParticleEffect from *.pe files
+ * !Ignores COUNT, LIFE_OFFSET!
+ */
+ public ParticleEffect read(String filename) throws Exception {
+ try {
+ attributes = new ArrayList<>();
+ currentAttribute = null;
+ InputStream is = context.getAssets().open(filename);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+ String line;
+ while ((line = reader.readLine()) != null) {
+ line = line.trim();
+ handleLine(line);
+ }
+ reader.close();
+ return createParticleEffect();
+ } catch (Exception e) {
+ throw new Exception("Could not read particleFile: ", e);
+ }
+ }
+
+ private void handleLine(String line) throws Exception {
+ if (line.startsWith("- ")) {
+ Attribute attrib = ParticleAttributeType.getByInFileTitle(line).createInstance();
+ attributes.add(attrib);
+ currentAttribute = attrib;
+ } else if (currentAttribute != null)
+ attributeValueReader.addValueForAttribute(currentAttribute, line);
+ }
+
+ private ParticleEffect createParticleEffect() throws Exception {
+ ParticleEffect effect = new ParticleEffect();
+ Timeline timeline = null;
+ Range range = null;
+ for (Attribute attribute : attributes) {
+ switch (attribute.getType()) {
+ case DELAY:
+ effect.setDelay((Range) attribute.get(ParticleAttributeValueType.RANGE));
+ break;
+ case DURATION:
+ effect.setDuration((Range) attribute.get(ParticleAttributeValueType.RANGE));
+ break;
+ case COUNT:
+ break;
+ case EMISSION:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setEmission(new TimelineRange(timeline, range));
+ break;
+ case LIFE:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setLife(new TimelineRange(timeline, range));
+ break;
+ case LIFE_OFFSET:
+ break;
+ case X_OFFSET:
+ effect.setxOffset((Range) attribute.get(ParticleAttributeValueType.RANGE));
+ break;
+ case Y_OFFSET:
+ effect.setyOffset((Range) attribute.get(ParticleAttributeValueType.RANGE));
+ break;
+ case SPAWN_SHAPE:
+ effect.setSpawnShape(((SpawnShape) attribute.get(ParticleAttributeValueType.SPAWN_SHAPE)).getShape());
+ break;
+ case SPAWN_WIDTH:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setSpawnWidth(new TimelineRange(timeline, range));
+ break;
+ case SPAWN_HEIGHT:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setSpawnHeight(new TimelineRange(timeline, range));
+ break;
+ case SCALE:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setScale(new TimelineRange(timeline, range));
+ break;
+ case VELOCITY:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setVelocity(new TimelineRange(timeline, range));
+ break;
+ case ANGLE:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setAngle(new TimelineRange(timeline, range));
+ break;
+ case ROTATION:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setRotation(new TimelineRange(timeline, range));
+ break;
+ case WIND:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setWind(new TimelineRange(timeline, range));
+ break;
+ case GRAVITY:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ range = (Range) attribute.get(ParticleAttributeValueType.RANGE);
+ effect.setGravity(new TimelineRange(timeline, range));
+ break;
+ case TINT:
+ effect.setTint((TintTimeline) attribute.get(ParticleAttributeValueType.TINT_TIMELINE));
+ break;
+ case TRANSPARENCY:
+ timeline = (Timeline) attribute.get(ParticleAttributeValueType.TIMELINE);
+ effect.setTransparency(timeline);
+ break;
+ case OPTIONS:
+ effect.setOptions((Options) attribute.get(ParticleAttributeValueType.OPTIONS));
+ break;
+ case IMAGE_PATH:
+ String path = ((ImagePath) attribute.get(ParticleAttributeValueType.IMAGE_PATH)).getImagePath();
+ effect.setTextureName(path);
+ break;
+ }
+ }
+ return effect;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleSource.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleSource.java
index aab2bf8..8e43131 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleSource.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleSource.java
@@ -1,183 +1,183 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Random;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.SpawnShape;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.rendering.Lock;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class ParticleSource {
-
- private Vector position;
- private ParticleEffect effect;
- private Random random;
-
- private boolean delayManuallySet = false;
-
- private boolean alife;
- private float currentDelay;
- private float lifePercent;
- private float maxTime = -1;
- private float passedTime;
- private float emittPause;
- private float passedEmittPause;
- private float passedSecond;
-
- private Vector spawnSize = null;
- private ParticleData particleData;
- private List activeParticles = new ArrayList<>();
- private List inactiveParticles = new ArrayList<>();
- private Lock activeParticleLock = new Lock();
-
- public ParticleSource(Vector position, ParticleEffect effect) {
- this.position = position;
- this.effect = effect;
- random = effect.getRandom();
- effect.addSource(this);
- }
-
- public void start() {
- alife = true;
- if (!delayManuallySet)
- currentDelay = effect.getDelay().createValue(random, 0);
- maxTime = effect.getDuration().createValue(random, 0) + currentDelay;
- passedTime = 0;
- emittPause = calcEmittPause();
- passedEmittPause = 0;
- passedSecond = 0;
- lifePercent = 0;
- }
-
- public void update(Timer timer) {
- if (alife) {
- passedTime += timer.getFrameTimeMilliseconds();
- lifePercent = passedTime / maxTime;
-
- if (passedTime >= currentDelay) {
- passedEmittPause += timer.getFrameTimeMilliseconds();
- while (passedEmittPause >= emittPause) {
- passedEmittPause -= emittPause;
- emitt();
- }
-
- passedSecond += timer.getFrameTimeMilliseconds();
- if (passedSecond >= 1000) {
- passedSecond -= 1000;
- calcEmittPause();
- }
- }
- if (passedTime >= maxTime)
- die();
- }
- updateParticles(timer);
- }
-
- private void updateParticles(Timer timer) {
- activeParticleLock.lock();
- Iterator iter = activeParticles.iterator();
- while (iter.hasNext()) {
- Particle particle = iter.next();
- particle.update(timer);
- if (!particle.isActive()) {
- inactiveParticles.add(particle);
- iter.remove();
- } else {
- particle.move(
- new Vector(particle.getMovement()).mul(timer.getFrameTimeMilliseconds() / 1000));
- }
- }
- activeParticleLock.unlock();
- }
-
- private void die() {
- alife = false;
- if (effect.getOptions().isContinuous())
- start();
- }
-
- public void kill() {
- alife = false;
- }
-
- public void emitt() {
- if (particleData == null)
- particleData = effect.createParticleData();
- float xOff = effect.getxOffset().createValue(random, 0) * ParticleSystem.TRANSFER_VALUE;
- float yOff = effect.getyOffset().createValue(random, 0) * ParticleSystem.TRANSFER_VALUE;
- if (effect.getSpawnShape() == SpawnShape.Shape.SQUARE || effect.getSpawnShape() == SpawnShape.Shape.LINE) {
- float width, height;
- if (spawnSize == null) {
- width = effect.getSpawnWidth().getRange().createValue(random,
- effect.getSpawnWidth().getTimeline().getValueAtTime(lifePercent));
- height = effect.getSpawnHeight().getRange().createValue(random,
- effect.getSpawnHeight().getTimeline().getValueAtTime(lifePercent));
- } else {
- width = spawnSize.getX() / ParticleSystem.TRANSFER_VALUE;
- height = spawnSize.getY() / ParticleSystem.TRANSFER_VALUE;
- }
- xOff += (random.nextFloat() * width - width * 0.5f) * ParticleSystem.TRANSFER_VALUE;
- yOff += (random.nextFloat() * height - height * 0.5f) * ParticleSystem.TRANSFER_VALUE;
- }
- setUpParticle(new Vector(position).translate(xOff, yOff));
- }
-
- private void setUpParticle(Vector position) {
- Particle particle;
- if (inactiveParticles.size() > 0)
- particle = inactiveParticles.remove(0);
- else
- particle = new Particle(random);
-
- particle.activate(position, effect.getLife().getTimeline().getValueAtTime(lifePercent),
- particleData);
- activeParticleLock.lock();
- activeParticles.add(particle);
- activeParticleLock.unlock();
- }
-
- private float calcEmittPause() {
- float emittedPerSecond = effect.getEmission().getRange().createValue(random,
- effect.getEmission().getTimeline().getValueAtTime(passedTime / maxTime));
- return 1000 / emittedPerSecond;
- }
-
- public Lock getActiveParticleLock() {
- return activeParticleLock;
- }
-
- public List getActiveParticles() {
- return activeParticles;
- }
-
- public void setSpawnSize(Vector spawnSize) {
- this.spawnSize = spawnSize;
- }
-
- public void setPosition(Vector position) {
- this.position = position;
- }
-
- public Vector getPosition() {
- return position;
- }
-
- public void setDelayMS(float delay) {
- currentDelay = delay;
- delayManuallySet = true;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.SpawnShape;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.rendering.Lock;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class ParticleSource {
+
+ private Vector position;
+ private ParticleEffect effect;
+ private Random random;
+
+ private boolean delayManuallySet = false;
+
+ private boolean alife;
+ private float currentDelay;
+ private float lifePercent;
+ private float maxTime = -1;
+ private float passedTime;
+ private float emittPause;
+ private float passedEmittPause;
+ private float passedSecond;
+
+ private Vector spawnSize = null;
+ private ParticleData particleData;
+ private List activeParticles = new ArrayList<>();
+ private List inactiveParticles = new ArrayList<>();
+ private Lock activeParticleLock = new Lock();
+
+ public ParticleSource(Vector position, ParticleEffect effect) {
+ this.position = position;
+ this.effect = effect;
+ random = effect.getRandom();
+ effect.addSource(this);
+ }
+
+ public void start() {
+ alife = true;
+ if (!delayManuallySet)
+ currentDelay = effect.getDelay().createValue(random, 0);
+ maxTime = effect.getDuration().createValue(random, 0) + currentDelay;
+ passedTime = 0;
+ emittPause = calcEmittPause();
+ passedEmittPause = 0;
+ passedSecond = 0;
+ lifePercent = 0;
+ }
+
+ public void update(Timer timer) {
+ if (alife) {
+ passedTime += timer.getFrameTimeMilliseconds();
+ lifePercent = passedTime / maxTime;
+
+ if (passedTime >= currentDelay) {
+ passedEmittPause += timer.getFrameTimeMilliseconds();
+ while (passedEmittPause >= emittPause) {
+ passedEmittPause -= emittPause;
+ emitt();
+ }
+
+ passedSecond += timer.getFrameTimeMilliseconds();
+ if (passedSecond >= 1000) {
+ passedSecond -= 1000;
+ calcEmittPause();
+ }
+ }
+ if (passedTime >= maxTime)
+ die();
+ }
+ updateParticles(timer);
+ }
+
+ private void updateParticles(Timer timer) {
+ activeParticleLock.lock();
+ Iterator iter = activeParticles.iterator();
+ while (iter.hasNext()) {
+ Particle particle = iter.next();
+ particle.update(timer);
+ if (!particle.isActive()) {
+ inactiveParticles.add(particle);
+ iter.remove();
+ } else {
+ particle.move(
+ new Vector(particle.getMovement()).mul(timer.getFrameTimeMilliseconds() / 1000));
+ }
+ }
+ activeParticleLock.unlock();
+ }
+
+ private void die() {
+ alife = false;
+ if (effect.getOptions().isContinuous())
+ start();
+ }
+
+ public void kill() {
+ alife = false;
+ }
+
+ public void emitt() {
+ if (particleData == null)
+ particleData = effect.createParticleData();
+ float xOff = effect.getxOffset().createValue(random, 0) * ParticleSystem.TRANSFER_VALUE;
+ float yOff = effect.getyOffset().createValue(random, 0) * ParticleSystem.TRANSFER_VALUE;
+ if (effect.getSpawnShape() == SpawnShape.Shape.SQUARE || effect.getSpawnShape() == SpawnShape.Shape.LINE) {
+ float width, height;
+ if (spawnSize == null) {
+ width = effect.getSpawnWidth().getRange().createValue(random,
+ effect.getSpawnWidth().getTimeline().getValueAtTime(lifePercent));
+ height = effect.getSpawnHeight().getRange().createValue(random,
+ effect.getSpawnHeight().getTimeline().getValueAtTime(lifePercent));
+ } else {
+ width = spawnSize.getX() / ParticleSystem.TRANSFER_VALUE;
+ height = spawnSize.getY() / ParticleSystem.TRANSFER_VALUE;
+ }
+ xOff += (random.nextFloat() * width - width * 0.5f) * ParticleSystem.TRANSFER_VALUE;
+ yOff += (random.nextFloat() * height - height * 0.5f) * ParticleSystem.TRANSFER_VALUE;
+ }
+ setUpParticle(new Vector(position).translate(xOff, yOff));
+ }
+
+ private void setUpParticle(Vector position) {
+ Particle particle;
+ if (inactiveParticles.size() > 0)
+ particle = inactiveParticles.remove(0);
+ else
+ particle = new Particle(random);
+
+ particle.activate(position, effect.getLife().getTimeline().getValueAtTime(lifePercent),
+ particleData);
+ activeParticleLock.lock();
+ activeParticles.add(particle);
+ activeParticleLock.unlock();
+ }
+
+ private float calcEmittPause() {
+ float emittedPerSecond = effect.getEmission().getRange().createValue(random,
+ effect.getEmission().getTimeline().getValueAtTime(passedTime / maxTime));
+ return 1000 / emittedPerSecond;
+ }
+
+ public Lock getActiveParticleLock() {
+ return activeParticleLock;
+ }
+
+ public List getActiveParticles() {
+ return activeParticles;
+ }
+
+ public void setSpawnSize(Vector spawnSize) {
+ this.spawnSize = spawnSize;
+ }
+
+ public void setPosition(Vector position) {
+ this.position = position;
+ }
+
+ public Vector getPosition() {
+ return position;
+ }
+
+ public void setDelayMS(float delay) {
+ currentDelay = delay;
+ delayManuallySet = true;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleSystem.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleSystem.java
index b6ca2de..03c23ca 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleSystem.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/ParticleSystem.java
@@ -1,78 +1,78 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles;
-
-import android.content.Context;
-
-import de.frajul.endlessroll.entities.textures.TextureLoader;
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class ParticleSystem {
-
- public static final float TRANSFER_VALUE = 0.002f;
- public final ParticleEffect stasis;
- public final ParticleEffect testFire;
- public final ParticleEffect colorChange;
- public final ParticleEffect explosion;
- public final ParticleEffect magnet;
- public final ParticleEffect starCollect;
- public final ParticleEffect energyCollect;
- public final ParticleEffect firework;
- public final ParticleEffect superPower;
- public final ParticleEffect snow;
- private ParticleEffect[] effects;
-
- private TextureLoader textureLoader;
-
- public ParticleSystem(Context context) throws Exception {
- this.textureLoader = new TextureLoader(context);
- ParticleReader reader = new ParticleReader(context);
- stasis = reader.read("particleEffects/stasis.pe");
- testFire = reader.read("particleEffects/test_fire.pe");
- colorChange = reader.read("particleEffects/colorChange.pe");
- explosion = reader.read("particleEffects/explosion.pe");
- magnet = reader.read("particleEffects/magnet.pe");
- starCollect = reader.read("particleEffects/collectStar.pe");
- energyCollect = reader.read("particleEffects/collectEnergy.pe");
- firework = reader.read("particleEffects/firework.pe");
- superPower = reader.read("particleEffects/superPower.pe");
- snow = reader.read("particleEffects/snow.pe");
-
- effects = new ParticleEffect[]{stasis, testFire, colorChange, explosion, magnet, starCollect, energyCollect, firework, superPower, snow};
- }
-
- public void update(Timer timer) {
- synchronized (effects) {
- for (ParticleEffect effect : effects)
- effect.update(timer);
- }
- }
-
- public void loadTextures() throws Exception {
- synchronized (effects) {
- for (ParticleEffect effect : effects)
- effect.setTexture(
- textureLoader.loadTexture("particleEffects/" + effect.getTextureName()));
- }
- }
-
- public void deleteAllSources() {
- synchronized (effects) {
- for (ParticleEffect effect : effects) {
- effect.deleteSources();
- }
- }
- }
-
- public synchronized ParticleEffect[] getEffects() {
- return effects;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles;
+
+import android.content.Context;
+
+import de.frajul.endlessroll.entities.textures.TextureLoader;
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class ParticleSystem {
+
+ public static final float TRANSFER_VALUE = 0.002f;
+ public final ParticleEffect stasis;
+ public final ParticleEffect testFire;
+ public final ParticleEffect colorChange;
+ public final ParticleEffect explosion;
+ public final ParticleEffect magnet;
+ public final ParticleEffect starCollect;
+ public final ParticleEffect energyCollect;
+ public final ParticleEffect firework;
+ public final ParticleEffect superPower;
+ public final ParticleEffect snow;
+ private ParticleEffect[] effects;
+
+ private TextureLoader textureLoader;
+
+ public ParticleSystem(Context context) throws Exception {
+ this.textureLoader = new TextureLoader(context);
+ ParticleReader reader = new ParticleReader(context);
+ stasis = reader.read("particleEffects/stasis.pe");
+ testFire = reader.read("particleEffects/test_fire.pe");
+ colorChange = reader.read("particleEffects/colorChange.pe");
+ explosion = reader.read("particleEffects/explosion.pe");
+ magnet = reader.read("particleEffects/magnet.pe");
+ starCollect = reader.read("particleEffects/collectStar.pe");
+ energyCollect = reader.read("particleEffects/collectEnergy.pe");
+ firework = reader.read("particleEffects/firework.pe");
+ superPower = reader.read("particleEffects/superPower.pe");
+ snow = reader.read("particleEffects/snow.pe");
+
+ effects = new ParticleEffect[]{stasis, testFire, colorChange, explosion, magnet, starCollect, energyCollect, firework, superPower, snow};
+ }
+
+ public void update(Timer timer) {
+ synchronized (effects) {
+ for (ParticleEffect effect : effects)
+ effect.update(timer);
+ }
+ }
+
+ public void loadTextures() throws Exception {
+ synchronized (effects) {
+ for (ParticleEffect effect : effects)
+ effect.setTexture(
+ textureLoader.loadTexture("particleEffects/" + effect.getTextureName()));
+ }
+ }
+
+ public void deleteAllSources() {
+ synchronized (effects) {
+ for (ParticleEffect effect : effects) {
+ effect.deleteSources();
+ }
+ }
+ }
+
+ public synchronized ParticleEffect[] getEffects() {
+ return effects;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/Attribute.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/Attribute.java
index 66eb89e..c569a11 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/Attribute.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/Attribute.java
@@ -1,40 +1,40 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValue;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValueType;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class Attribute {
-
- private ParticleAttributeType type;
- private List values = new ArrayList<>();
-
- public Attribute(ParticleAttributeType type, ParticleAttributeValueType... valueTypes) {
- this.type = type;
- for (ParticleAttributeValueType valueType : valueTypes)
- values.add(valueType.createInstance());
- }
-
- public ParticleAttributeValue get(ParticleAttributeValueType valueType) throws Exception {
- for (ParticleAttributeValue v : values)
- if (v.getType() == valueType)
- return v;
- throw new Exception("ParticleAttributeValue with type: " + valueType + " does not exist in Attribute " + type);
- }
-
- public ParticleAttributeType getType() {
- return type;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValue;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValueType;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class Attribute {
+
+ private ParticleAttributeType type;
+ private List values = new ArrayList<>();
+
+ public Attribute(ParticleAttributeType type, ParticleAttributeValueType... valueTypes) {
+ this.type = type;
+ for (ParticleAttributeValueType valueType : valueTypes)
+ values.add(valueType.createInstance());
+ }
+
+ public ParticleAttributeValue get(ParticleAttributeValueType valueType) throws Exception {
+ for (ParticleAttributeValue v : values)
+ if (v.getType() == valueType)
+ return v;
+ throw new Exception("ParticleAttributeValue with type: " + valueType + " does not exist in Attribute " + type);
+ }
+
+ public ParticleAttributeType getType() {
+ return type;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/AttributeValueReader.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/AttributeValueReader.java
index b85ede5..ac53ef6 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/AttributeValueReader.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/AttributeValueReader.java
@@ -1,84 +1,84 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes;
-
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ImagePath;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Options;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValueType;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.SpawnShape;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class AttributeValueReader {
-
- public void addValueForAttribute(Attribute attribute, String line) throws Exception {
- //RANGE
- if (line.startsWith("lowMin:") || line.startsWith("min:"))
- ((Range) attribute.get(ParticleAttributeValueType.RANGE)).setLowMin(parseFloat(line));
- else if (line.startsWith("lowMax:") || line.startsWith("max:"))
- ((Range) attribute.get(ParticleAttributeValueType.RANGE)).setLowMax(parseFloat(line));
- else if (line.startsWith("highMin:"))
- ((Range) attribute.get(ParticleAttributeValueType.RANGE)).setHighMin(parseFloat(line));
- else if (line.startsWith("highMax:"))
- ((Range) attribute.get(ParticleAttributeValueType.RANGE)).setHighMax(parseFloat(line));
- //TIMELINE
- else if (!line.startsWith("scalingCount") && line.startsWith("scaling"))
- ((Timeline) attribute.get(ParticleAttributeValueType.TIMELINE)).setValueOfPoint(parseTimeLineIndex("scaling", line), parseFloat(line));
- else if (!line.startsWith("timelineCount") && line.startsWith("timeline") && attribute.getType() != ParticleAttributeType.TINT)
- ((Timeline) attribute.get(ParticleAttributeValueType.TIMELINE)).setTimeOfPoint(parseTimeLineIndex("timeline", line), parseFloat(line));
- //TINT_TIMELINE
- else if (!line.startsWith("colorsCount") && line.startsWith("colors")) {
- int index = parseTimeLineIndex("colors", line);
- ((TintTimeline) attribute.get(ParticleAttributeValueType.TINT_TIMELINE)).setValueOfPoint((int) (index / 3f), index % 3, parseFloat(line));
- } else if (!line.startsWith("timelineCount") && line.startsWith("timeline") && attribute.getType() == ParticleAttributeType.TINT)
- ((TintTimeline) attribute.get(ParticleAttributeValueType.TINT_TIMELINE)).setTimeOfPoint(parseTimeLineIndex("timeline", line), parseFloat(line));
- //SPAWN_SHAPE
- else if (line.startsWith("shape:"))
- ((SpawnShape) attribute.get(ParticleAttributeValueType.SPAWN_SHAPE)).setShape(SpawnShape.Shape.byName(parseString(line)));
- //OPTIONS
- else if (line.startsWith("attached:"))
- ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setAttached(parseBoolean(line));
- else if (line.startsWith("continuous:"))
- ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setContinuous(parseBoolean(line));
- else if (line.startsWith("aligned:"))
- ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setAligned(parseBoolean(line));
- else if (line.startsWith("additive:"))
- ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setAdditive(parseBoolean(line));
- else if (line.startsWith("behind:"))
- ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setBehind(parseBoolean(line));
- else if (line.startsWith("premultipliedAlpha:"))
- ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setPremultipliedAlpha(parseBoolean(line));
- //IMAGE PATH
- else if (attribute.getType() == ParticleAttributeType.IMAGE_PATH)
- ((ImagePath) attribute.get(ParticleAttributeValueType.IMAGE_PATH)).setImagePath(line);
- }
-
- private int parseTimeLineIndex(String start, String line) {
- String asString = line.split(start)[1].split(":")[0];
- return Integer.parseInt(asString);
- }
-
- private float parseFloat(String line) {
- String asString = line.split(" ")[1];
- return Float.parseFloat(asString);
- }
-
- private String parseString(String line) {
- return line.split(" ")[1];
- }
-
- private boolean parseBoolean(String line) {
- String asString = line.split(" ")[1];
- return Boolean.parseBoolean(asString);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes;
+
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ImagePath;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Options;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValueType;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Range;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.SpawnShape;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.Timeline;
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.TintTimeline;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class AttributeValueReader {
+
+ public void addValueForAttribute(Attribute attribute, String line) throws Exception {
+ //RANGE
+ if (line.startsWith("lowMin:") || line.startsWith("min:"))
+ ((Range) attribute.get(ParticleAttributeValueType.RANGE)).setLowMin(parseFloat(line));
+ else if (line.startsWith("lowMax:") || line.startsWith("max:"))
+ ((Range) attribute.get(ParticleAttributeValueType.RANGE)).setLowMax(parseFloat(line));
+ else if (line.startsWith("highMin:"))
+ ((Range) attribute.get(ParticleAttributeValueType.RANGE)).setHighMin(parseFloat(line));
+ else if (line.startsWith("highMax:"))
+ ((Range) attribute.get(ParticleAttributeValueType.RANGE)).setHighMax(parseFloat(line));
+ //TIMELINE
+ else if (!line.startsWith("scalingCount") && line.startsWith("scaling"))
+ ((Timeline) attribute.get(ParticleAttributeValueType.TIMELINE)).setValueOfPoint(parseTimeLineIndex("scaling", line), parseFloat(line));
+ else if (!line.startsWith("timelineCount") && line.startsWith("timeline") && attribute.getType() != ParticleAttributeType.TINT)
+ ((Timeline) attribute.get(ParticleAttributeValueType.TIMELINE)).setTimeOfPoint(parseTimeLineIndex("timeline", line), parseFloat(line));
+ //TINT_TIMELINE
+ else if (!line.startsWith("colorsCount") && line.startsWith("colors")) {
+ int index = parseTimeLineIndex("colors", line);
+ ((TintTimeline) attribute.get(ParticleAttributeValueType.TINT_TIMELINE)).setValueOfPoint((int) (index / 3f), index % 3, parseFloat(line));
+ } else if (!line.startsWith("timelineCount") && line.startsWith("timeline") && attribute.getType() == ParticleAttributeType.TINT)
+ ((TintTimeline) attribute.get(ParticleAttributeValueType.TINT_TIMELINE)).setTimeOfPoint(parseTimeLineIndex("timeline", line), parseFloat(line));
+ //SPAWN_SHAPE
+ else if (line.startsWith("shape:"))
+ ((SpawnShape) attribute.get(ParticleAttributeValueType.SPAWN_SHAPE)).setShape(SpawnShape.Shape.byName(parseString(line)));
+ //OPTIONS
+ else if (line.startsWith("attached:"))
+ ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setAttached(parseBoolean(line));
+ else if (line.startsWith("continuous:"))
+ ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setContinuous(parseBoolean(line));
+ else if (line.startsWith("aligned:"))
+ ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setAligned(parseBoolean(line));
+ else if (line.startsWith("additive:"))
+ ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setAdditive(parseBoolean(line));
+ else if (line.startsWith("behind:"))
+ ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setBehind(parseBoolean(line));
+ else if (line.startsWith("premultipliedAlpha:"))
+ ((Options) attribute.get(ParticleAttributeValueType.OPTIONS)).setPremultipliedAlpha(parseBoolean(line));
+ //IMAGE PATH
+ else if (attribute.getType() == ParticleAttributeType.IMAGE_PATH)
+ ((ImagePath) attribute.get(ParticleAttributeValueType.IMAGE_PATH)).setImagePath(line);
+ }
+
+ private int parseTimeLineIndex(String start, String line) {
+ String asString = line.split(start)[1].split(":")[0];
+ return Integer.parseInt(asString);
+ }
+
+ private float parseFloat(String line) {
+ String asString = line.split(" ")[1];
+ return Float.parseFloat(asString);
+ }
+
+ private String parseString(String line) {
+ return line.split(" ")[1];
+ }
+
+ private boolean parseBoolean(String line) {
+ String asString = line.split(" ")[1];
+ return Boolean.parseBoolean(asString);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/ParticleAttributeType.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/ParticleAttributeType.java
index 8dfec21..867f021 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/ParticleAttributeType.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/ParticleAttributeType.java
@@ -1,62 +1,62 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes;
-
-import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValueType;
-
-public enum ParticleAttributeType {
- NONE(""),
- DELAY("Delay", ParticleAttributeValueType.RANGE),
- DURATION("Duration", ParticleAttributeValueType.RANGE),
- COUNT("Count", ParticleAttributeValueType.RANGE),
- EMISSION("Emission", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- LIFE("Life", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- LIFE_OFFSET("Life Offset", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- X_OFFSET("X Offset", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- Y_OFFSET("Y Offset", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- SPAWN_SHAPE("Spawn Shape", ParticleAttributeValueType.SPAWN_SHAPE),
- SPAWN_WIDTH("Spawn Width", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- SPAWN_HEIGHT("Spawn Height", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- SCALE("Scale", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- VELOCITY("Velocity", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- ANGLE("Angle", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- ROTATION("Rotation", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- WIND("Wind", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- GRAVITY("Gravity", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- TINT("Tint", ParticleAttributeValueType.TINT_TIMELINE),
- TRANSPARENCY("Transparency", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
- OPTIONS("Options", ParticleAttributeValueType.OPTIONS),
- IMAGE_PATH("Image Path", ParticleAttributeValueType.IMAGE_PATH);
-
- private String name;
- private ParticleAttributeValueType[] valueTypes;
-
- ParticleAttributeType(String name, ParticleAttributeValueType... valueTypes) {
- this.name = name;
- this.valueTypes = valueTypes;
- }
-
- private String getInFileTitle() {
- return "- " + name + " -";
- }
-
- public static ParticleAttributeType getByInFileTitle(String title) throws Exception {
- for (ParticleAttributeType setting : values()) {
- if (setting != NONE && setting.getInFileTitle().equals(title))
- return setting;
- }
- throw new Exception("Could not find ParticleAttributeType by title: " + title);
- }
-
- public Attribute createInstance() throws Exception {
- if (this == NONE)
- throw new Exception("Cannot create Instance from Attribute NONE");
- return new Attribute(this, valueTypes);
- }
-
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes;
+
+import de.frajul.endlessroll.entities.particles.attributes.attributeValues.ParticleAttributeValueType;
+
+public enum ParticleAttributeType {
+ NONE(""),
+ DELAY("Delay", ParticleAttributeValueType.RANGE),
+ DURATION("Duration", ParticleAttributeValueType.RANGE),
+ COUNT("Count", ParticleAttributeValueType.RANGE),
+ EMISSION("Emission", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ LIFE("Life", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ LIFE_OFFSET("Life Offset", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ X_OFFSET("X Offset", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ Y_OFFSET("Y Offset", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ SPAWN_SHAPE("Spawn Shape", ParticleAttributeValueType.SPAWN_SHAPE),
+ SPAWN_WIDTH("Spawn Width", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ SPAWN_HEIGHT("Spawn Height", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ SCALE("Scale", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ VELOCITY("Velocity", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ ANGLE("Angle", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ ROTATION("Rotation", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ WIND("Wind", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ GRAVITY("Gravity", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ TINT("Tint", ParticleAttributeValueType.TINT_TIMELINE),
+ TRANSPARENCY("Transparency", ParticleAttributeValueType.RANGE, ParticleAttributeValueType.TIMELINE),
+ OPTIONS("Options", ParticleAttributeValueType.OPTIONS),
+ IMAGE_PATH("Image Path", ParticleAttributeValueType.IMAGE_PATH);
+
+ private String name;
+ private ParticleAttributeValueType[] valueTypes;
+
+ ParticleAttributeType(String name, ParticleAttributeValueType... valueTypes) {
+ this.name = name;
+ this.valueTypes = valueTypes;
+ }
+
+ private String getInFileTitle() {
+ return "- " + name + " -";
+ }
+
+ public static ParticleAttributeType getByInFileTitle(String title) throws Exception {
+ for (ParticleAttributeType setting : values()) {
+ if (setting != NONE && setting.getInFileTitle().equals(title))
+ return setting;
+ }
+ throw new Exception("Could not find ParticleAttributeType by title: " + title);
+ }
+
+ public Attribute createInstance() throws Exception {
+ if (this == NONE)
+ throw new Exception("Cannot create Instance from Attribute NONE");
+ return new Attribute(this, valueTypes);
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ImagePath.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ImagePath.java
index a20acf5..e6453e6 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ImagePath.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ImagePath.java
@@ -1,28 +1,28 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class ImagePath extends ParticleAttributeValue {
-
- private String imagePath;
-
- public ImagePath() {
- super(ParticleAttributeValueType.IMAGE_PATH);
- }
-
- public String getImagePath() {
- return imagePath;
- }
-
- public void setImagePath(String imagePath) {
- this.imagePath = imagePath;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class ImagePath extends ParticleAttributeValue {
+
+ private String imagePath;
+
+ public ImagePath() {
+ super(ParticleAttributeValueType.IMAGE_PATH);
+ }
+
+ public String getImagePath() {
+ return imagePath;
+ }
+
+ public void setImagePath(String imagePath) {
+ this.imagePath = imagePath;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Options.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Options.java
index 467a14a..a1eb862 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Options.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Options.java
@@ -1,73 +1,73 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class Options extends ParticleAttributeValue {
-
- private boolean attached;
- private boolean continuous;
- private boolean aligned;
- private boolean additive;
- private boolean behind;
- private boolean premultipliedAlpha;
-
- public Options() {
- super(ParticleAttributeValueType.OPTIONS);
- }
-
- public boolean isAttached() {
- return attached;
- }
-
- public void setAttached(boolean attached) {
- this.attached = attached;
- }
-
- public boolean isContinuous() {
- return continuous;
- }
-
- public void setContinuous(boolean continuous) {
- this.continuous = continuous;
- }
-
- public boolean isAligned() {
- return aligned;
- }
-
- public void setAligned(boolean aligned) {
- this.aligned = aligned;
- }
-
- public boolean isAdditive() {
- return additive;
- }
-
- public void setAdditive(boolean additive) {
- this.additive = additive;
- }
-
- public boolean isBehind() {
- return behind;
- }
-
- public void setBehind(boolean behind) {
- this.behind = behind;
- }
-
- public boolean isPremultipliedAlpha() {
- return premultipliedAlpha;
- }
-
- public void setPremultipliedAlpha(boolean premultipliedAlpha) {
- this.premultipliedAlpha = premultipliedAlpha;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class Options extends ParticleAttributeValue {
+
+ private boolean attached;
+ private boolean continuous;
+ private boolean aligned;
+ private boolean additive;
+ private boolean behind;
+ private boolean premultipliedAlpha;
+
+ public Options() {
+ super(ParticleAttributeValueType.OPTIONS);
+ }
+
+ public boolean isAttached() {
+ return attached;
+ }
+
+ public void setAttached(boolean attached) {
+ this.attached = attached;
+ }
+
+ public boolean isContinuous() {
+ return continuous;
+ }
+
+ public void setContinuous(boolean continuous) {
+ this.continuous = continuous;
+ }
+
+ public boolean isAligned() {
+ return aligned;
+ }
+
+ public void setAligned(boolean aligned) {
+ this.aligned = aligned;
+ }
+
+ public boolean isAdditive() {
+ return additive;
+ }
+
+ public void setAdditive(boolean additive) {
+ this.additive = additive;
+ }
+
+ public boolean isBehind() {
+ return behind;
+ }
+
+ public void setBehind(boolean behind) {
+ this.behind = behind;
+ }
+
+ public boolean isPremultipliedAlpha() {
+ return premultipliedAlpha;
+ }
+
+ public void setPremultipliedAlpha(boolean premultipliedAlpha) {
+ this.premultipliedAlpha = premultipliedAlpha;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ParticleAttributeValue.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ParticleAttributeValue.java
index 5deb6c6..20684b4 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ParticleAttributeValue.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ParticleAttributeValue.java
@@ -1,24 +1,24 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public abstract class ParticleAttributeValue {
-
- private ParticleAttributeValueType type;
-
- public ParticleAttributeValue(ParticleAttributeValueType type) {
- this.type = type;
- }
-
- public ParticleAttributeValueType getType() {
- return type;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public abstract class ParticleAttributeValue {
+
+ private ParticleAttributeValueType type;
+
+ public ParticleAttributeValue(ParticleAttributeValueType type) {
+ this.type = type;
+ }
+
+ public ParticleAttributeValueType getType() {
+ return type;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ParticleAttributeValueType.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ParticleAttributeValueType.java
index 86e8e9c..5adef54 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ParticleAttributeValueType.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/ParticleAttributeValueType.java
@@ -1,35 +1,35 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public enum ParticleAttributeValueType {
-
- RANGE, TIMELINE, TINT_TIMELINE, SPAWN_SHAPE, OPTIONS, IMAGE_PATH;
-
- public ParticleAttributeValue createInstance() {
- switch (this) {
- case RANGE:
- return new Range();
- case TIMELINE:
- return new Timeline();
- case TINT_TIMELINE:
- return new TintTimeline();
- case SPAWN_SHAPE:
- return new SpawnShape();
- case OPTIONS:
- return new Options();
- case IMAGE_PATH:
- return new ImagePath();
- }
- return null;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public enum ParticleAttributeValueType {
+
+ RANGE, TIMELINE, TINT_TIMELINE, SPAWN_SHAPE, OPTIONS, IMAGE_PATH;
+
+ public ParticleAttributeValue createInstance() {
+ switch (this) {
+ case RANGE:
+ return new Range();
+ case TIMELINE:
+ return new Timeline();
+ case TINT_TIMELINE:
+ return new TintTimeline();
+ case SPAWN_SHAPE:
+ return new SpawnShape();
+ case OPTIONS:
+ return new Options();
+ case IMAGE_PATH:
+ return new ImagePath();
+ }
+ return null;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Range.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Range.java
index f0992af..494de15 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Range.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Range.java
@@ -1,89 +1,89 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-import java.util.Random;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class Range extends ParticleAttributeValue {
-
- private float lowMin;
- private float lowMax;
- private float highMin;
- private float highMax;
-
- public Range() {
- super(ParticleAttributeValueType.RANGE);
- }
-
- public Range createNormalizedInstance(Random random) {
- Range range = new Range();
- float high = createHighValue(random);
- range.setHighMax(high);
- range.setHighMin(high);
- float low = createLowValue(random);
- range.setLowMax(low);
- range.setLowMin(low);
- return range;
- }
-
- public float createValue(Random random, float mix) {
- if (mix == 1)
- return createHighValue(random);
- else if (mix == 0)
- return createLowValue(random);
- else {
- float highValue = createHighValue(random);
- float lowValue = createLowValue(random);
- return mix * (highValue - lowValue) + lowValue;
- }
- }
-
- private float createHighValue(Random random) {
- float min = highMin;
- float max = highMax;
- if (min == max)
- return min;
- return random.nextFloat() * (max - min) + min;
- }
-
- private float createLowValue(Random random) {
- float min = lowMin;
- float max = lowMax;
- if (min == max)
- return min;
- return random.nextFloat() * (max - min) + min;
- }
-
- public void setLowMin(float lowMin) {
- this.lowMin = lowMin;
- }
-
- public void setLowMax(float lowMax) {
- this.lowMax = lowMax;
- }
-
- public void setHighMin(float highMin) {
- this.highMin = highMin;
- }
-
- public void setHighMax(float highMax) {
- this.highMax = highMax;
- }
-
- private boolean isLowDifference() {
- return lowMin - lowMax != 0;
- }
-
- private boolean isHighDifference() {
- return highMin - highMax != 0;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+import java.util.Random;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class Range extends ParticleAttributeValue {
+
+ private float lowMin;
+ private float lowMax;
+ private float highMin;
+ private float highMax;
+
+ public Range() {
+ super(ParticleAttributeValueType.RANGE);
+ }
+
+ public Range createNormalizedInstance(Random random) {
+ Range range = new Range();
+ float high = createHighValue(random);
+ range.setHighMax(high);
+ range.setHighMin(high);
+ float low = createLowValue(random);
+ range.setLowMax(low);
+ range.setLowMin(low);
+ return range;
+ }
+
+ public float createValue(Random random, float mix) {
+ if (mix == 1)
+ return createHighValue(random);
+ else if (mix == 0)
+ return createLowValue(random);
+ else {
+ float highValue = createHighValue(random);
+ float lowValue = createLowValue(random);
+ return mix * (highValue - lowValue) + lowValue;
+ }
+ }
+
+ private float createHighValue(Random random) {
+ float min = highMin;
+ float max = highMax;
+ if (min == max)
+ return min;
+ return random.nextFloat() * (max - min) + min;
+ }
+
+ private float createLowValue(Random random) {
+ float min = lowMin;
+ float max = lowMax;
+ if (min == max)
+ return min;
+ return random.nextFloat() * (max - min) + min;
+ }
+
+ public void setLowMin(float lowMin) {
+ this.lowMin = lowMin;
+ }
+
+ public void setLowMax(float lowMax) {
+ this.lowMax = lowMax;
+ }
+
+ public void setHighMin(float highMin) {
+ this.highMin = highMin;
+ }
+
+ public void setHighMax(float highMax) {
+ this.highMax = highMax;
+ }
+
+ private boolean isLowDifference() {
+ return lowMin - lowMax != 0;
+ }
+
+ private boolean isHighDifference() {
+ return highMin - highMax != 0;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/SpawnShape.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/SpawnShape.java
index ca3f9a6..55db6cc 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/SpawnShape.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/SpawnShape.java
@@ -1,45 +1,45 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class SpawnShape extends ParticleAttributeValue {
-
- public enum Shape {
- POINT("point"), SQUARE("square"), LINE("line");
-
- private String name;
-
- Shape(String name) {
- this.name = name;
- }
-
- public static Shape byName(String text) throws Exception {
- for (Shape shape : values())
- if (shape.name.equals(text))
- return shape;
- throw new Exception("spawnShape with name \"" + text + "\" does not exist");
- }
- }
-
- private Shape shape;
-
- public SpawnShape() {
- super(ParticleAttributeValueType.SPAWN_SHAPE);
- }
-
- public Shape getShape() {
- return shape;
- }
-
- public void setShape(Shape shape) {
- this.shape = shape;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class SpawnShape extends ParticleAttributeValue {
+
+ public enum Shape {
+ POINT("point"), SQUARE("square"), LINE("line");
+
+ private String name;
+
+ Shape(String name) {
+ this.name = name;
+ }
+
+ public static Shape byName(String text) throws Exception {
+ for (Shape shape : values())
+ if (shape.name.equals(text))
+ return shape;
+ throw new Exception("spawnShape with name \"" + text + "\" does not exist");
+ }
+ }
+
+ private Shape shape;
+
+ public SpawnShape() {
+ super(ParticleAttributeValueType.SPAWN_SHAPE);
+ }
+
+ public Shape getShape() {
+ return shape;
+ }
+
+ public void setShape(Shape shape) {
+ this.shape = shape;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Timeline.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Timeline.java
index f2f60e5..2efc88d 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Timeline.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/Timeline.java
@@ -1,61 +1,61 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class Timeline extends ParticleAttributeValue {
-
- private List points = new ArrayList<>();
-
- public Timeline() {
- super(ParticleAttributeValueType.TIMELINE);
- }
-
- public void setValueOfPoint(int index, float value) {
- if (points.size() <= index) {
- points.add(new TimelinePoint());
- }
- points.get(index).setValue(value);
- }
-
- public void setTimeOfPoint(int index, float time) {
- if (points.size() <= index) {
- points.add(new TimelinePoint());
- }
- points.get(index).setTime(time);
- }
-
- public float getValueAtTime(float time) {
- TimelinePoint left = null, right = null;
- for (TimelinePoint point : points) {
- if (point.getTime() <= time) {
- if (left == null || left.getTime() < point.getTime())
- left = point;
- } else if (right == null || right.getTime() > point.getTime())
- right = point;
- }
- if (left != null) {
- if (right != null) {
- float leftDist = Math.abs(left.getTime() - time);
- float rightDist = Math.abs(right.getTime() - time);
- float totalDist = leftDist + rightDist;
- float leftMultiplier = 1 - (leftDist / totalDist);
- float rightMultiplier = 1 - (rightDist / totalDist);
- return left.getValue() * leftMultiplier + right.getValue() * rightMultiplier;
- }
- return left.getValue();
- }
- return 0;
- }
-
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class Timeline extends ParticleAttributeValue {
+
+ private List points = new ArrayList<>();
+
+ public Timeline() {
+ super(ParticleAttributeValueType.TIMELINE);
+ }
+
+ public void setValueOfPoint(int index, float value) {
+ if (points.size() <= index) {
+ points.add(new TimelinePoint());
+ }
+ points.get(index).setValue(value);
+ }
+
+ public void setTimeOfPoint(int index, float time) {
+ if (points.size() <= index) {
+ points.add(new TimelinePoint());
+ }
+ points.get(index).setTime(time);
+ }
+
+ public float getValueAtTime(float time) {
+ TimelinePoint left = null, right = null;
+ for (TimelinePoint point : points) {
+ if (point.getTime() <= time) {
+ if (left == null || left.getTime() < point.getTime())
+ left = point;
+ } else if (right == null || right.getTime() > point.getTime())
+ right = point;
+ }
+ if (left != null) {
+ if (right != null) {
+ float leftDist = Math.abs(left.getTime() - time);
+ float rightDist = Math.abs(right.getTime() - time);
+ float totalDist = leftDist + rightDist;
+ float leftMultiplier = 1 - (leftDist / totalDist);
+ float rightMultiplier = 1 - (rightDist / totalDist);
+ return left.getValue() * leftMultiplier + right.getValue() * rightMultiplier;
+ }
+ return left.getValue();
+ }
+ return 0;
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TimelinePoint.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TimelinePoint.java
index a8cb10a..d6396f7 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TimelinePoint.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TimelinePoint.java
@@ -1,30 +1,30 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-public class TimelinePoint {
-
- private float time, value;
-
- public float getTime() {
- return time;
- }
-
- public void setTime(float time) {
- this.time = time;
- }
-
- public float getValue() {
- return value;
- }
-
- public void setValue(float value) {
- this.value = value;
- }
-
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+public class TimelinePoint {
+
+ private float time, value;
+
+ public float getTime() {
+ return time;
+ }
+
+ public void setTime(float time) {
+ this.time = time;
+ }
+
+ public float getValue() {
+ return value;
+ }
+
+ public void setValue(float value) {
+ this.value = value;
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TimelineRange.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TimelineRange.java
index e8b5055..23a46b6 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TimelineRange.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TimelineRange.java
@@ -1,38 +1,38 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class TimelineRange {
-
- private Timeline timeline;
- private Range range;
-
- public TimelineRange(Timeline timeline, Range range) {
- this.timeline = timeline;
- this.range = range;
- }
-
- public Timeline getTimeline() {
- return timeline;
- }
-
- public void setTimeline(Timeline timeline) {
- this.timeline = timeline;
- }
-
- public Range getRange() {
- return range;
- }
-
- public void setRange(Range range) {
- this.range = range;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class TimelineRange {
+
+ private Timeline timeline;
+ private Range range;
+
+ public TimelineRange(Timeline timeline, Range range) {
+ this.timeline = timeline;
+ this.range = range;
+ }
+
+ public Timeline getTimeline() {
+ return timeline;
+ }
+
+ public void setTimeline(Timeline timeline) {
+ this.timeline = timeline;
+ }
+
+ public Range getRange() {
+ return range;
+ }
+
+ public void setRange(Range range) {
+ this.range = range;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TintTimeline.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TintTimeline.java
index 3f0c754..1a1a51b 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TintTimeline.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TintTimeline.java
@@ -1,64 +1,64 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.data.Color3f;
-
-/**
- * Created by Julian on 02.08.2016.
- */
-public class TintTimeline extends ParticleAttributeValue {
-
- private List points = new ArrayList<>();
-
- public TintTimeline() {
- super(ParticleAttributeValueType.TINT_TIMELINE);
- }
-
- public void setValueOfPoint(int index, int colorIndex, float value) {
- if (points.size() <= index) {
- points.add(new TintTimelinePoint());
- }
- points.get(index).setValue(colorIndex, value);
- }
-
- public void setTimeOfPoint(int index, float time) {
- if (points.size() <= index) {
- points.add(new TintTimelinePoint());
- }
- points.get(index).setTime(time);
- }
-
- public Color3f getValueAtTime(float time) {
- TintTimelinePoint left = null, right = null;
- for (TintTimelinePoint point : points) {
- if (point.getTime() <= time) {
- if (left == null || left.getTime() < point.getTime())
- left = point;
- } else if (right == null || right.getTime() > point.getTime())
- right = point;
- }
- if (left != null) {
- if (right != null) {
- float leftDist = Math.abs(left.getTime() - time);
- float rightDist = Math.abs(right.getTime() - time);
- float totalDist = leftDist + rightDist;
- float leftMultiplier = leftDist / totalDist;
- float rightMultiplier = rightDist / totalDist;
-
- return left.getColor().interpolate(leftMultiplier, rightMultiplier, right.getColor());
- }
- return left.getColor();
- }
- return new Color3f();
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.data.Color3f;
+
+/**
+ * Created by Julian on 02.08.2016.
+ */
+public class TintTimeline extends ParticleAttributeValue {
+
+ private List points = new ArrayList<>();
+
+ public TintTimeline() {
+ super(ParticleAttributeValueType.TINT_TIMELINE);
+ }
+
+ public void setValueOfPoint(int index, int colorIndex, float value) {
+ if (points.size() <= index) {
+ points.add(new TintTimelinePoint());
+ }
+ points.get(index).setValue(colorIndex, value);
+ }
+
+ public void setTimeOfPoint(int index, float time) {
+ if (points.size() <= index) {
+ points.add(new TintTimelinePoint());
+ }
+ points.get(index).setTime(time);
+ }
+
+ public Color3f getValueAtTime(float time) {
+ TintTimelinePoint left = null, right = null;
+ for (TintTimelinePoint point : points) {
+ if (point.getTime() <= time) {
+ if (left == null || left.getTime() < point.getTime())
+ left = point;
+ } else if (right == null || right.getTime() > point.getTime())
+ right = point;
+ }
+ if (left != null) {
+ if (right != null) {
+ float leftDist = Math.abs(left.getTime() - time);
+ float rightDist = Math.abs(right.getTime() - time);
+ float totalDist = leftDist + rightDist;
+ float leftMultiplier = leftDist / totalDist;
+ float rightMultiplier = rightDist / totalDist;
+
+ return left.getColor().interpolate(leftMultiplier, rightMultiplier, right.getColor());
+ }
+ return left.getColor();
+ }
+ return new Color3f();
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TintTimelinePoint.java b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TintTimelinePoint.java
index a82032e..50f198b 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TintTimelinePoint.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/particles/attributes/attributeValues/TintTimelinePoint.java
@@ -1,40 +1,40 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
-
-import de.frajul.endlessroll.data.Color3f;
-
-public class TintTimelinePoint {
-
- private float time;
- private Color3f color;
-
- public float getTime() {
- return time;
- }
-
- public void setTime(float time) {
- this.time = time;
- }
-
- public Color3f getColor() {
- return color;
- }
-
- public void setValue(int colorIndex, float value) {
- if (color == null)
- color = new Color3f();
- if (colorIndex == 0)
- color.setR(value);
- else if (colorIndex == 1)
- color.setG(value);
- else if (colorIndex == 2)
- color.setB(value);
- }
-
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.particles.attributes.attributeValues;
+
+import de.frajul.endlessroll.data.Color3f;
+
+public class TintTimelinePoint {
+
+ private float time;
+ private Color3f color;
+
+ public float getTime() {
+ return time;
+ }
+
+ public void setTime(float time) {
+ this.time = time;
+ }
+
+ public Color3f getColor() {
+ return color;
+ }
+
+ public void setValue(int colorIndex, float value) {
+ if (color == null)
+ color = new Color3f();
+ if (colorIndex == 0)
+ color.setR(value);
+ else if (colorIndex == 1)
+ color.setG(value);
+ else if (colorIndex == 2)
+ color.setB(value);
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/shapes/CollectEnergyTask.java b/app/src/main/java/de/frajul/endlessroll/entities/shapes/CollectEnergyTask.java
index 3f762f3..8b2ce53 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/shapes/CollectEnergyTask.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/shapes/CollectEnergyTask.java
@@ -1,38 +1,38 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.shapes;
-
-import android.content.Context;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.LevelManager;
-
-/**
- * Created by Julian on 30.10.2017.
- */
-
-public class CollectEnergyTask extends Task {
-
- public CollectEnergyTask(int condition) {
- super(condition);
- }
-
- @Override
- protected boolean checkConditionFulfilled(LevelManager levelManager) {
- return levelManager.getTotalCollectedEnergyCount() >= condition;
- }
-
- @Override
- public String toString(Context context, LevelManager levelManager) {
- if (conditionFulfilled) {
- return context.getString(R.string.task_collect_energy_format_d, condition);
- }
- return context.getString(R.string.task_collect_energy_progress_format_ddd, condition,
- levelManager.getTotalCollectedEnergyCount(), condition);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.shapes;
+
+import android.content.Context;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.LevelManager;
+
+/**
+ * Created by Julian on 30.10.2017.
+ */
+
+public class CollectEnergyTask extends Task {
+
+ public CollectEnergyTask(int condition) {
+ super(condition);
+ }
+
+ @Override
+ protected boolean checkConditionFulfilled(LevelManager levelManager) {
+ return levelManager.getTotalCollectedEnergyCount() >= condition;
+ }
+
+ @Override
+ public String toString(Context context, LevelManager levelManager) {
+ if (conditionFulfilled) {
+ return context.getString(R.string.task_collect_energy_format_d, condition);
+ }
+ return context.getString(R.string.task_collect_energy_progress_format_ddd, condition,
+ levelManager.getTotalCollectedEnergyCount(), condition);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/shapes/CollectStarTask.java b/app/src/main/java/de/frajul/endlessroll/entities/shapes/CollectStarTask.java
index 4e7712b..2be5383 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/shapes/CollectStarTask.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/shapes/CollectStarTask.java
@@ -1,38 +1,38 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.shapes;
-
-import android.content.Context;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.LevelManager;
-
-/**
- * Created by Julian on 30.10.2017.
- */
-
-public class CollectStarTask extends Task {
-
- public CollectStarTask(int condition) {
- super(condition);
- }
-
- @Override
- protected boolean checkConditionFulfilled(LevelManager levelManager) {
- return levelManager.getTotalCollectedStarCount() >= condition;
- }
-
- @Override
- public String toString(Context context, LevelManager levelManager) {
- if (conditionFulfilled) {
- return context.getString(R.string.task_collect_stars_format_d, condition);
- }
- return context.getString(R.string.task_collect_stars_progress_format_ddd, condition,
- levelManager.getTotalCollectedStarCount(), condition);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.shapes;
+
+import android.content.Context;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.LevelManager;
+
+/**
+ * Created by Julian on 30.10.2017.
+ */
+
+public class CollectStarTask extends Task {
+
+ public CollectStarTask(int condition) {
+ super(condition);
+ }
+
+ @Override
+ protected boolean checkConditionFulfilled(LevelManager levelManager) {
+ return levelManager.getTotalCollectedStarCount() >= condition;
+ }
+
+ @Override
+ public String toString(Context context, LevelManager levelManager) {
+ if (conditionFulfilled) {
+ return context.getString(R.string.task_collect_stars_format_d, condition);
+ }
+ return context.getString(R.string.task_collect_stars_progress_format_ddd, condition,
+ levelManager.getTotalCollectedStarCount(), condition);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/shapes/CompleteWorldTask.java b/app/src/main/java/de/frajul/endlessroll/entities/shapes/CompleteWorldTask.java
index 9ad2623..2762c4f 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/shapes/CompleteWorldTask.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/shapes/CompleteWorldTask.java
@@ -1,34 +1,34 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.shapes;
-
-import android.content.Context;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.LevelManager;
-
-/**
- * Created by Julian on 30.10.2017.
- */
-
-public class CompleteWorldTask extends Task {
-
- public CompleteWorldTask(int condition) {
- super(condition);
- }
-
- @Override
- protected boolean checkConditionFulfilled(LevelManager levelManager) {
- return levelManager.getPackWithId(condition).isAllLevelsFinished();
- }
-
- @Override
- public String toString(Context context, LevelManager levelManager) {
- return context.getString(R.string.task_complete_world_format_d, condition);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.shapes;
+
+import android.content.Context;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.LevelManager;
+
+/**
+ * Created by Julian on 30.10.2017.
+ */
+
+public class CompleteWorldTask extends Task {
+
+ public CompleteWorldTask(int condition) {
+ super(condition);
+ }
+
+ @Override
+ protected boolean checkConditionFulfilled(LevelManager levelManager) {
+ return levelManager.getPackWithId(condition).isAllLevelsFinished();
+ }
+
+ @Override
+ public String toString(Context context, LevelManager levelManager) {
+ return context.getString(R.string.task_complete_world_format_d, condition);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/shapes/EmptyTask.java b/app/src/main/java/de/frajul/endlessroll/entities/shapes/EmptyTask.java
index 710344e..becfc9c 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/shapes/EmptyTask.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/shapes/EmptyTask.java
@@ -1,34 +1,34 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.shapes;
-
-import android.content.Context;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.LevelManager;
-
-/**
- * Created by Julian on 30.10.2017.
- */
-
-public class EmptyTask extends Task {
-
- public EmptyTask() {
- super(0);
- }
-
- @Override
- protected boolean checkConditionFulfilled(LevelManager levelManager) {
- return true;
- }
-
- @Override
- public String toString(Context context, LevelManager levelManager) {
- return context.getString(R.string.task_empty);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.shapes;
+
+import android.content.Context;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.LevelManager;
+
+/**
+ * Created by Julian on 30.10.2017.
+ */
+
+public class EmptyTask extends Task {
+
+ public EmptyTask() {
+ super(0);
+ }
+
+ @Override
+ protected boolean checkConditionFulfilled(LevelManager levelManager) {
+ return true;
+ }
+
+ @Override
+ public String toString(Context context, LevelManager levelManager) {
+ return context.getString(R.string.task_empty);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/shapes/PlayerShape.java b/app/src/main/java/de/frajul/endlessroll/entities/shapes/PlayerShape.java
index ef88ba2..70c9938 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/shapes/PlayerShape.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/shapes/PlayerShape.java
@@ -1,99 +1,99 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.shapes;
-
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-
-/**
- * Created by Julian on 22.10.2017.
- */
-
-public enum PlayerShape {
- BALL(R.string.playershape_name_ball, R.string.playershape_description_ball,
- R.drawable.playershapes_ball, true, new EmptyTask()),
- CLOCK(R.string.playershape_name_clock, R.string.playershape_description_clock,
- R.drawable.playershapes_clock, true, new CollectStarTask(15)),
- SMILEY(R.string.playershape_name_smiley, R.string.playershape_description_smiley,
- R.drawable.playershapes_smiley, true, new CollectStarTask(50)),
- WHEEL(R.string.playershape_name_wheel, R.string.playershape_description_wheel,
- R.drawable.playershapes_wheel, true, new CollectStarTask(80)),
-
- PACMAN(R.string.playershape_name_pacman, R.string.playershape_description_pacman,
- R.drawable.playershapes_pacman, false, new CompleteWorldTask(1)),
- SOCCER(R.string.playershape_name_soccer, R.string.playershape_description_soccer, R.drawable.playershapes_soccer, false, new CompleteWorldTask(2)),
- HYPNO_SPIRAL(R.string.playershape_name_hypno_spiral,
- R.string.playershape_description_hypno_spiral, R.drawable.playershapes_hypno_spiral, false,
- new CollectEnergyTask(5)),
- BLUE(R.string.playershape_name_blue, R.string.playershape_description_blue,
- R.drawable.playershapes_blue, false, new CollectEnergyTask(20)),
- SUN(R.string.playershape_name_sun, R.string.playershape_description_sun,
- R.drawable.playershapes_sun, false, new CollectEnergyTask(30)),
- RAINBOW(R.string.playershape_name_rainbow, R.string.playershape_description_rainbow, R.drawable.playershapes_rainbow, true, new EmptyTask());
-
- @StringRes
- private int nameId;
- @StringRes
- private int descriptionId;
- @DrawableRes
- private int drawableId;
- private boolean inTopRow;
- private Task unlockTask;
-
- private Texture texture;
-
- PlayerShape(@StringRes int nameId, @StringRes int descriptionId, @DrawableRes int drawableId, boolean inTopRow, Task unlockTask) {
- this.nameId = nameId;
- this.descriptionId = descriptionId;
- this.drawableId = drawableId;
- this.inTopRow = inTopRow;
- this.unlockTask = unlockTask;
- }
-
- public static void loadAllTextures(TexturePack texturePack) {
- for (PlayerShape playerShape : values())
- playerShape.loadTexture(texturePack);
- }
-
- private void loadTexture(TexturePack texturePack) {
- if (drawableId == -1)
- return;
- texture = texturePack.loadTexture(drawableId);
- }
-
- public Task getUnlockTask() {
- return unlockTask;
- }
-
- @StringRes
- public int getNameId() {
- return nameId;
- }
-
- @StringRes
- public int getDescriptionId() {
- return descriptionId;
- }
-
- @DrawableRes
- public int getDrawableId() {
- return drawableId;
- }
-
- public Texture getTexture() {
- return texture;
- }
-
- public boolean isInTopRow() {
- return inTopRow;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.shapes;
+
+import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+
+/**
+ * Created by Julian on 22.10.2017.
+ */
+
+public enum PlayerShape {
+ BALL(R.string.playershape_name_ball, R.string.playershape_description_ball,
+ R.drawable.playershapes_ball, true, new EmptyTask()),
+ CLOCK(R.string.playershape_name_clock, R.string.playershape_description_clock,
+ R.drawable.playershapes_clock, true, new CollectStarTask(15)),
+ SMILEY(R.string.playershape_name_smiley, R.string.playershape_description_smiley,
+ R.drawable.playershapes_smiley, true, new CollectStarTask(50)),
+ WHEEL(R.string.playershape_name_wheel, R.string.playershape_description_wheel,
+ R.drawable.playershapes_wheel, true, new CollectStarTask(80)),
+
+ PACMAN(R.string.playershape_name_pacman, R.string.playershape_description_pacman,
+ R.drawable.playershapes_pacman, false, new CompleteWorldTask(1)),
+ SOCCER(R.string.playershape_name_soccer, R.string.playershape_description_soccer, R.drawable.playershapes_soccer, false, new CompleteWorldTask(2)),
+ HYPNO_SPIRAL(R.string.playershape_name_hypno_spiral,
+ R.string.playershape_description_hypno_spiral, R.drawable.playershapes_hypno_spiral, false,
+ new CollectEnergyTask(5)),
+ BLUE(R.string.playershape_name_blue, R.string.playershape_description_blue,
+ R.drawable.playershapes_blue, false, new CollectEnergyTask(20)),
+ SUN(R.string.playershape_name_sun, R.string.playershape_description_sun,
+ R.drawable.playershapes_sun, false, new CollectEnergyTask(30)),
+ RAINBOW(R.string.playershape_name_rainbow, R.string.playershape_description_rainbow, R.drawable.playershapes_rainbow, true, new EmptyTask());
+
+ @StringRes
+ private int nameId;
+ @StringRes
+ private int descriptionId;
+ @DrawableRes
+ private int drawableId;
+ private boolean inTopRow;
+ private Task unlockTask;
+
+ private Texture texture;
+
+ PlayerShape(@StringRes int nameId, @StringRes int descriptionId, @DrawableRes int drawableId, boolean inTopRow, Task unlockTask) {
+ this.nameId = nameId;
+ this.descriptionId = descriptionId;
+ this.drawableId = drawableId;
+ this.inTopRow = inTopRow;
+ this.unlockTask = unlockTask;
+ }
+
+ public static void loadAllTextures(TexturePack texturePack) {
+ for (PlayerShape playerShape : values())
+ playerShape.loadTexture(texturePack);
+ }
+
+ private void loadTexture(TexturePack texturePack) {
+ if (drawableId == -1)
+ return;
+ texture = texturePack.loadTexture(drawableId);
+ }
+
+ public Task getUnlockTask() {
+ return unlockTask;
+ }
+
+ @StringRes
+ public int getNameId() {
+ return nameId;
+ }
+
+ @StringRes
+ public int getDescriptionId() {
+ return descriptionId;
+ }
+
+ @DrawableRes
+ public int getDrawableId() {
+ return drawableId;
+ }
+
+ public Texture getTexture() {
+ return texture;
+ }
+
+ public boolean isInTopRow() {
+ return inTopRow;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/shapes/PlayerShapeButtonOnClickListener.java b/app/src/main/java/de/frajul/endlessroll/entities/shapes/PlayerShapeButtonOnClickListener.java
index 00a31ae..1da0bbc 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/shapes/PlayerShapeButtonOnClickListener.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/shapes/PlayerShapeButtonOnClickListener.java
@@ -1,20 +1,20 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.shapes;
-
-import de.frajul.endlessroll.views.PlayerShapeButton;
-
-/**
- * Created by Julian on 22.10.2017.
- */
-
-public interface PlayerShapeButtonOnClickListener {
-
- void onClick(PlayerShapeButton button);
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.shapes;
+
+import de.frajul.endlessroll.views.PlayerShapeButton;
+
+/**
+ * Created by Julian on 22.10.2017.
+ */
+
+public interface PlayerShapeButtonOnClickListener {
+
+ void onClick(PlayerShapeButton button);
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/shapes/Task.java b/app/src/main/java/de/frajul/endlessroll/entities/shapes/Task.java
index c7dd3a4..200084f 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/shapes/Task.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/shapes/Task.java
@@ -1,38 +1,38 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.shapes;
-
-import android.content.Context;
-
-import de.frajul.endlessroll.levels.LevelManager;
-
-/**
- * Created by Julian on 29.10.2017.
- */
-
-public abstract class Task {
-
- protected int condition;
- protected boolean conditionFulfilled;
-
- public Task(int condition) {
- this.condition = condition;
- }
-
- public void update(LevelManager levelManager) {
- conditionFulfilled = checkConditionFulfilled(levelManager);
- }
-
- protected abstract boolean checkConditionFulfilled(LevelManager levelManager);
-
- public abstract String toString(Context context, LevelManager levelManager);
-
- public boolean isConditionFulfilled() {
- return conditionFulfilled;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.shapes;
+
+import android.content.Context;
+
+import de.frajul.endlessroll.levels.LevelManager;
+
+/**
+ * Created by Julian on 29.10.2017.
+ */
+
+public abstract class Task {
+
+ protected int condition;
+ protected boolean conditionFulfilled;
+
+ public Task(int condition) {
+ this.condition = condition;
+ }
+
+ public void update(LevelManager levelManager) {
+ conditionFulfilled = checkConditionFulfilled(levelManager);
+ }
+
+ protected abstract boolean checkConditionFulfilled(LevelManager levelManager);
+
+ public abstract String toString(Context context, LevelManager levelManager);
+
+ public boolean isConditionFulfilled() {
+ return conditionFulfilled;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/textures/Texture.java b/app/src/main/java/de/frajul/endlessroll/entities/textures/Texture.java
index 6b918cf..6d99e86 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/textures/Texture.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/textures/Texture.java
@@ -1,43 +1,43 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.textures;
-
-/**
- * Created by Julian on 11.12.2015.
- */
-public class Texture {
-
- private int id;
- private int atlasWidth;
- private int atlasHeight;
-
- public Texture(int id, int atlasWidth, int atlasHeight) {
- this.id = id;
- this.atlasWidth = atlasWidth;
- this.atlasHeight = atlasHeight;
- }
-
- public Texture(Texture other) {
- this.id = other.getId();
- this.atlasWidth = other.getAtlasWidth();
- this.atlasHeight = other.getAtlasHeight();
- }
-
- public int getId() {
- return id;
- }
-
- public int getAtlasWidth() {
- return atlasWidth;
- }
-
- public int getAtlasHeight() {
- return atlasHeight;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.textures;
+
+/**
+ * Created by Julian on 11.12.2015.
+ */
+public class Texture {
+
+ private int id;
+ private int atlasWidth;
+ private int atlasHeight;
+
+ public Texture(int id, int atlasWidth, int atlasHeight) {
+ this.id = id;
+ this.atlasWidth = atlasWidth;
+ this.atlasHeight = atlasHeight;
+ }
+
+ public Texture(Texture other) {
+ this.id = other.getId();
+ this.atlasWidth = other.getAtlasWidth();
+ this.atlasHeight = other.getAtlasHeight();
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public int getAtlasWidth() {
+ return atlasWidth;
+ }
+
+ public int getAtlasHeight() {
+ return atlasHeight;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/textures/TextureLoader.java b/app/src/main/java/de/frajul/endlessroll/entities/textures/TextureLoader.java
index 8fcf337..1c1711b 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/textures/TextureLoader.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/textures/TextureLoader.java
@@ -1,66 +1,66 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.textures;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.opengl.GLES20;
-import android.opengl.GLUtils;
-
-import java.io.InputStream;
-
-import de.frajul.endlessroll.main.GameLog;
-
-/**
- * Created by Julian on 26.11.2015.
- */
-public class TextureLoader {
-
- private Context context;
-
- public TextureLoader(Context context) {
- this.context = context;
- }
-
- public int loadTextureId(int texture, boolean isAtlas) {
- Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), texture);
- return loadTextureId(bitmap, isAtlas);
- }
-
- public Texture loadTexture(String inAssetsLocation) throws Exception {
- InputStream is = context.getAssets().open(inAssetsLocation);
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inScaled = false;
- Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
- return new Texture(loadTextureId(bitmap, false), 1, 1);
- }
-
- private int loadTextureId(Bitmap bitmap, boolean isAtlas) {
- int id = genTexture();
-
- GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, id);
- GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,
- GLES20.GL_NEAREST);
- GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER,
- GLES20.GL_NEAREST);
-
- GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
-
- bitmap.recycle();
- GameLog.d("Texture " + id + " successfully loaded");
- return id;
- }
-
- private int genTexture() {
- int[] idField = new int[1];
- GLES20.glGenTextures(1, idField, 0);
- return idField[0];
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.textures;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.opengl.GLES20;
+import android.opengl.GLUtils;
+
+import java.io.InputStream;
+
+import de.frajul.endlessroll.main.GameLog;
+
+/**
+ * Created by Julian on 26.11.2015.
+ */
+public class TextureLoader {
+
+ private Context context;
+
+ public TextureLoader(Context context) {
+ this.context = context;
+ }
+
+ public int loadTextureId(int texture, boolean isAtlas) {
+ Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), texture);
+ return loadTextureId(bitmap, isAtlas);
+ }
+
+ public Texture loadTexture(String inAssetsLocation) throws Exception {
+ InputStream is = context.getAssets().open(inAssetsLocation);
+ BitmapFactory.Options options = new BitmapFactory.Options();
+ options.inScaled = false;
+ Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
+ return new Texture(loadTextureId(bitmap, false), 1, 1);
+ }
+
+ private int loadTextureId(Bitmap bitmap, boolean isAtlas) {
+ int id = genTexture();
+
+ GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, id);
+ GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,
+ GLES20.GL_NEAREST);
+ GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER,
+ GLES20.GL_NEAREST);
+
+ GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
+
+ bitmap.recycle();
+ GameLog.d("Texture " + id + " successfully loaded");
+ return id;
+ }
+
+ private int genTexture() {
+ int[] idField = new int[1];
+ GLES20.glGenTextures(1, idField, 0);
+ return idField[0];
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/textures/TexturePack.java b/app/src/main/java/de/frajul/endlessroll/entities/textures/TexturePack.java
index 20f59b8..404ee29 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/textures/TexturePack.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/textures/TexturePack.java
@@ -1,63 +1,63 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.textures;
-
-import android.content.Context;
-import android.support.annotation.DrawableRes;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.levels.worlds.World;
-
-/**
- * Created by Julian on 05.12.2015.
- */
-public class TexturePack {
-
- private TextureLoader loader;
-
- public final Texture white;
- public final Texture goal;
- public final Texture playerArrow;
- public final Texture star;
- public final Texture energy;
- public final Texture countdown3, countdown2, countdown1;
- public final Texture toolButtonLocked;
- public final Texture toolButtonEmpty;
-
- public TexturePack(Context context) {
- loader = new TextureLoader(context);
- white = loadTexture(R.drawable.white);
- goal = loadTexture(R.drawable.guis_goal);
- playerArrow = loadTexture(R.drawable.guis_playerarrow);
-
- star = loadTexture(R.drawable.currency_star);
- energy = loadAtlas(R.drawable.currency_energy_atlas, 2, 2);
-
- countdown3 = loadTexture(R.drawable.guis_countdown_3);
- countdown2 = loadTexture(R.drawable.guis_countdown_2);
- countdown1 = loadTexture(R.drawable.guis_countdown_1);
- toolButtonLocked = loadTexture(R.drawable.tools_button_locked);
- toolButtonEmpty = loadTexture(R.drawable.tools_button_empty);
-
- PlayerShape.loadAllTextures(this);
- ToolType.loadAllToolTextures(this);
- World.loadAllSpecificTextures(this);
- }
-
- public Texture loadTexture(@DrawableRes int id) {
- int texId = loader.loadTextureId(id, false);
- return new Texture(texId, 1, 1);
- }
-
- public Texture loadAtlas(@DrawableRes int id, int atlasWidth, int atlasHeight) {
- int texId = loader.loadTextureId(id, true);
- return new Texture(texId, atlasWidth, atlasHeight);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.textures;
+
+import android.content.Context;
+import android.support.annotation.DrawableRes;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.levels.worlds.World;
+
+/**
+ * Created by Julian on 05.12.2015.
+ */
+public class TexturePack {
+
+ private TextureLoader loader;
+
+ public final Texture white;
+ public final Texture goal;
+ public final Texture playerArrow;
+ public final Texture star;
+ public final Texture energy;
+ public final Texture countdown3, countdown2, countdown1;
+ public final Texture toolButtonLocked;
+ public final Texture toolButtonEmpty;
+
+ public TexturePack(Context context) {
+ loader = new TextureLoader(context);
+ white = loadTexture(R.drawable.white);
+ goal = loadTexture(R.drawable.guis_goal);
+ playerArrow = loadTexture(R.drawable.guis_playerarrow);
+
+ star = loadTexture(R.drawable.currency_star);
+ energy = loadAtlas(R.drawable.currency_energy_atlas, 2, 2);
+
+ countdown3 = loadTexture(R.drawable.guis_countdown_3);
+ countdown2 = loadTexture(R.drawable.guis_countdown_2);
+ countdown1 = loadTexture(R.drawable.guis_countdown_1);
+ toolButtonLocked = loadTexture(R.drawable.tools_button_locked);
+ toolButtonEmpty = loadTexture(R.drawable.tools_button_empty);
+
+ PlayerShape.loadAllTextures(this);
+ ToolType.loadAllToolTextures(this);
+ World.loadAllSpecificTextures(this);
+ }
+
+ public Texture loadTexture(@DrawableRes int id) {
+ int texId = loader.loadTextureId(id, false);
+ return new Texture(texId, 1, 1);
+ }
+
+ public Texture loadAtlas(@DrawableRes int id, int atlasWidth, int atlasHeight) {
+ int texId = loader.loadTextureId(id, true);
+ return new Texture(texId, atlasWidth, atlasHeight);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Ceiling.java b/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Ceiling.java
index 1feb39c..ec51d67 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Ceiling.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Ceiling.java
@@ -1,19 +1,19 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tileLists;
-
-import de.frajul.endlessroll.entities.textures.Texture;
-
-@SuppressWarnings("serial")
-public class Ceiling extends TileList {
-
- public Ceiling(Texture texture) {
- super(Type.CEILING, texture);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tileLists;
+
+import de.frajul.endlessroll.entities.textures.Texture;
+
+@SuppressWarnings("serial")
+public class Ceiling extends TileList {
+
+ public Ceiling(Texture texture) {
+ super(Type.CEILING, texture);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Terrain.java b/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Terrain.java
index 23efaa1..a68a790 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Terrain.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Terrain.java
@@ -1,19 +1,19 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tileLists;
-
-import de.frajul.endlessroll.entities.textures.Texture;
-
-@SuppressWarnings("serial")
-public class Terrain extends TileList {
-
- public Terrain(Texture texture) {
- super(TileList.Type.TERRAIN, texture);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tileLists;
+
+import de.frajul.endlessroll.entities.textures.Texture;
+
+@SuppressWarnings("serial")
+public class Terrain extends TileList {
+
+ public Terrain(Texture texture) {
+ super(TileList.Type.TERRAIN, texture);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Tile.java b/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Tile.java
index 58333a4..0b268cf 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Tile.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tileLists/Tile.java
@@ -1,46 +1,46 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tileLists;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.levels.TileData;
-
-/**
- * Created by Julian on 18.12.2015.
- */
-
-public class Tile extends Entity {
-
- private int gridColumnCount;
-
- public Tile(TileList.Type type, Texture texture, float edge, TileData data) {
- this(type, texture, edge, data.getX(), data.getWidth());
- }
-
- public Tile(TileList.Type type, Texture texture, float edge, float x, float width) {
- super(texture, new Vector(), width, 0);
- super.height = type.calculateTileHeightFromEdge(edge);
- super.position.x = x;
- switch (type) {
- case TERRAIN:
- super.position.y = edge - super.height / 2;
- break;
- case CEILING:
- super.position.y = edge + super.height / 2;
- break;
- }
- gridColumnCount = (int) (width / height);
- gridColumnCount = Math.max(gridColumnCount, 3);
- }
-
- public int getGridColumnCount() {
- return gridColumnCount;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tileLists;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.levels.TileData;
+
+/**
+ * Created by Julian on 18.12.2015.
+ */
+
+public class Tile extends Entity {
+
+ private int gridColumnCount;
+
+ public Tile(TileList.Type type, Texture texture, float edge, TileData data) {
+ this(type, texture, edge, data.getX(), data.getWidth());
+ }
+
+ public Tile(TileList.Type type, Texture texture, float edge, float x, float width) {
+ super(texture, new Vector(), width, 0);
+ super.height = type.calculateTileHeightFromEdge(edge);
+ super.position.x = x;
+ switch (type) {
+ case TERRAIN:
+ super.position.y = edge - super.height / 2;
+ break;
+ case CEILING:
+ super.position.y = edge + super.height / 2;
+ break;
+ }
+ gridColumnCount = (int) (width / height);
+ gridColumnCount = Math.max(gridColumnCount, 3);
+ }
+
+ public int getGridColumnCount() {
+ return gridColumnCount;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tileLists/TileList.java b/app/src/main/java/de/frajul/endlessroll/entities/tileLists/TileList.java
index 8e4d2e2..8213905 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tileLists/TileList.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tileLists/TileList.java
@@ -1,106 +1,106 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tileLists;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.data.SynchronizedArrayList;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.levels.TileData;
-import de.frajul.endlessroll.levels.worlds.World;
-import de.frajul.endlessroll.main.GameLog;
-
-@SuppressWarnings("serial")
-public class TileList extends SynchronizedArrayList {
-
- public enum Type {
- TERRAIN,
- CEILING;
-
- public float calculateTileHeightFromEdge(float edge) {
- switch (this) {
- case TERRAIN:
- if (edge <= -0.6f)
- return 0.4f;
- return 1 + edge;
- case CEILING:
- if (edge >= 0.6f)
- return 0.4f;
- return 1 - edge;
- }
- return 0;
- }
-
- }
-
- private Type type;
- private Texture texture;
- private float edge;
- private boolean endless;
-
- public TileList(Type type, Texture texture) {
- this.type = type;
- this.texture = texture;
- }
-
- public void loadData(World world, float edge, List tileData) {
- this.texture = world.getTerrainTexture();
- if (type == Type.CEILING)
- this.texture = world.getCeilingTexture();
- this.endless = false;
- super.clear();
- float lastRightEdge = -10;
- for (TileData data : tileData) {
- float leftEdge = data.getX() - data.getWidth() / 2;
- float rightEdge = data.getX() + data.getWidth() / 2;
- if (Math.abs(lastRightEdge - leftEdge) < 0.1f)
- GameLog.i("!!! Too small gap found !!! " + toMeters(lastRightEdge) + "m; " + lastRightEdge + "-" + leftEdge + "; iRight=" + tileData.indexOf(data));
- lastRightEdge = rightEdge;
- super.add(new Tile(type, texture, edge, data));
- }
- this.edge = edge;
- if (edge >= 1 || edge <= -1)
- super.clear();
- }
-
- private float toMeters(float value) {
- return ((int) (value * 20)) / 10f;
- }
-
- public void createEndless(World world, float edge) {
- loadData(world, edge, new ArrayList());
- super.add(createEndlessTile(0));
- this.endless = true;
- }
-
- public void update(float cameraX) {
- if (!super.isEmpty()) {
- if (endless) {
- Tile last = super.get(super.size() - 1);
- if (last.getRightEdge() - cameraX < 3)
- super.add(createEndlessTile(last.getRightEdge() + 2.5f));
- }
- if (super.get(0).getRightEdge() - cameraX < -3) {
- super.remove(0);
- }
- }
- }
-
- private Tile createEndlessTile(float x) {
- return new Tile(type, texture, edge, x, 5);
- }
-
- public float getEdge() {
- return edge;
- }
-
- public boolean isEndless() {
- return endless;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tileLists;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.data.SynchronizedArrayList;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.levels.TileData;
+import de.frajul.endlessroll.levels.worlds.World;
+import de.frajul.endlessroll.main.GameLog;
+
+@SuppressWarnings("serial")
+public class TileList extends SynchronizedArrayList {
+
+ public enum Type {
+ TERRAIN,
+ CEILING;
+
+ public float calculateTileHeightFromEdge(float edge) {
+ switch (this) {
+ case TERRAIN:
+ if (edge <= -0.6f)
+ return 0.4f;
+ return 1 + edge;
+ case CEILING:
+ if (edge >= 0.6f)
+ return 0.4f;
+ return 1 - edge;
+ }
+ return 0;
+ }
+
+ }
+
+ private Type type;
+ private Texture texture;
+ private float edge;
+ private boolean endless;
+
+ public TileList(Type type, Texture texture) {
+ this.type = type;
+ this.texture = texture;
+ }
+
+ public void loadData(World world, float edge, List tileData) {
+ this.texture = world.getTerrainTexture();
+ if (type == Type.CEILING)
+ this.texture = world.getCeilingTexture();
+ this.endless = false;
+ super.clear();
+ float lastRightEdge = -10;
+ for (TileData data : tileData) {
+ float leftEdge = data.getX() - data.getWidth() / 2;
+ float rightEdge = data.getX() + data.getWidth() / 2;
+ if (Math.abs(lastRightEdge - leftEdge) < 0.1f)
+ GameLog.i("!!! Too small gap found !!! " + toMeters(lastRightEdge) + "m; " + lastRightEdge + "-" + leftEdge + "; iRight=" + tileData.indexOf(data));
+ lastRightEdge = rightEdge;
+ super.add(new Tile(type, texture, edge, data));
+ }
+ this.edge = edge;
+ if (edge >= 1 || edge <= -1)
+ super.clear();
+ }
+
+ private float toMeters(float value) {
+ return ((int) (value * 20)) / 10f;
+ }
+
+ public void createEndless(World world, float edge) {
+ loadData(world, edge, new ArrayList());
+ super.add(createEndlessTile(0));
+ this.endless = true;
+ }
+
+ public void update(float cameraX) {
+ if (!super.isEmpty()) {
+ if (endless) {
+ Tile last = super.get(super.size() - 1);
+ if (last.getRightEdge() - cameraX < 3)
+ super.add(createEndlessTile(last.getRightEdge() + 2.5f));
+ }
+ if (super.get(0).getRightEdge() - cameraX < -3) {
+ super.remove(0);
+ }
+ }
+ }
+
+ private Tile createEndlessTile(float x) {
+ return new Tile(type, texture, edge, x, 5);
+ }
+
+ public float getEdge() {
+ return edge;
+ }
+
+ public boolean isEndless() {
+ return endless;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/Bomb.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/Bomb.java
index 670ac61..82a0f6e 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/Bomb.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/Bomb.java
@@ -1,80 +1,80 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.DestroyEffect;
-import de.frajul.endlessroll.entities.Obstacle;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collision.geometry.Geometry;
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 20.02.2016.
- */
-public class Bomb extends Tool {
-
- private float delta;
- private boolean exploding = false;
- private Obstacle attachedObstacle;
- private Vector offsetToObstaclePosition = new Vector();
-
- public Bomb(Vector position) {
- super(ToolType.BOMB, position, .25f, .25f, false, false);
- animation.setIndexSequence(new int[]{0, 1, 2});
- animation.setLooping(false);
- animation.setRequiredDelta(
- (int) (ToolType.BOMB.getCurrentUpgradeValue(ToolUpgradeType.DURATION) / 3f));
- super.setFloating(true);
- }
-
- @Override
- public void update(Timer timer) {
- super.update(timer);
- float explosionDuration = ToolType.BOMB.getCurrentUpgradeValue(ToolUpgradeType.DURATION);
- delta += timer.getFrameTimeMilliseconds();
- int currentExplosionState = Math.min((int) (delta / (explosionDuration / 3f)), 3);
- if (attachedObstacle != null) {
- if (attachedObstacle.isMoving())
- super.setPosition(new Vector(attachedObstacle.getPosition()).translate(offsetToObstaclePosition));
- attachedObstacle.setBombExplosionState(currentExplosionState);
- }
- if (delta >= explosionDuration)
- exploding = true;
- }
-
- @Override
- public void onPlayerCollision(Player player, Timer timer) {
- }
-
- @Override
- protected Geometry createWorldCollisionBounds() {
- return this;
- }
-
- @Override
- protected Geometry createPlayerCollisionBounds() {
- return this;
- }
-
- public void setAttachedObstacle(Obstacle attachedObstacle) {
- this.attachedObstacle = attachedObstacle;
- offsetToObstaclePosition = attachedObstacle.getPosition().vectorTo(super.getPosition());
- attachedObstacle.setBombExplosionState(0);
- }
-
- public boolean isExploding() {
- return exploding;
- }
-
- public void explode() {
- if (attachedObstacle != null)
- attachedObstacle.destroy(DestroyEffect.EXPLOSION);
- super.destroy(DestroyEffect.EXPLOSION);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.DestroyEffect;
+import de.frajul.endlessroll.entities.Obstacle;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collision.geometry.Geometry;
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 20.02.2016.
+ */
+public class Bomb extends Tool {
+
+ private float delta;
+ private boolean exploding = false;
+ private Obstacle attachedObstacle;
+ private Vector offsetToObstaclePosition = new Vector();
+
+ public Bomb(Vector position) {
+ super(ToolType.BOMB, position, .25f, .25f, false, false);
+ animation.setIndexSequence(new int[]{0, 1, 2});
+ animation.setLooping(false);
+ animation.setRequiredDelta(
+ (int) (ToolType.BOMB.getCurrentUpgradeValue(ToolUpgradeType.DURATION) / 3f));
+ super.setFloating(true);
+ }
+
+ @Override
+ public void update(Timer timer) {
+ super.update(timer);
+ float explosionDuration = ToolType.BOMB.getCurrentUpgradeValue(ToolUpgradeType.DURATION);
+ delta += timer.getFrameTimeMilliseconds();
+ int currentExplosionState = Math.min((int) (delta / (explosionDuration / 3f)), 3);
+ if (attachedObstacle != null) {
+ if (attachedObstacle.isMoving())
+ super.setPosition(new Vector(attachedObstacle.getPosition()).translate(offsetToObstaclePosition));
+ attachedObstacle.setBombExplosionState(currentExplosionState);
+ }
+ if (delta >= explosionDuration)
+ exploding = true;
+ }
+
+ @Override
+ public void onPlayerCollision(Player player, Timer timer) {
+ }
+
+ @Override
+ protected Geometry createWorldCollisionBounds() {
+ return this;
+ }
+
+ @Override
+ protected Geometry createPlayerCollisionBounds() {
+ return this;
+ }
+
+ public void setAttachedObstacle(Obstacle attachedObstacle) {
+ this.attachedObstacle = attachedObstacle;
+ offsetToObstaclePosition = attachedObstacle.getPosition().vectorTo(super.getPosition());
+ attachedObstacle.setBombExplosionState(0);
+ }
+
+ public boolean isExploding() {
+ return exploding;
+ }
+
+ public void explode() {
+ if (attachedObstacle != null)
+ attachedObstacle.destroy(DestroyEffect.EXPLOSION);
+ super.destroy(DestroyEffect.EXPLOSION);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/Magnet.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/Magnet.java
index 8d94bba..8dfbc4e 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/Magnet.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/Magnet.java
@@ -1,84 +1,84 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.DestroyEffect;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collision.geometry.Circle;
-import de.frajul.endlessroll.entities.collision.geometry.Geometry;
-import de.frajul.endlessroll.entities.particles.ParticleSource;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.sounds.SoundManager;
-import de.frajul.endlessroll.sounds.SoundStream;
-
-/**
- * Created by Julian on 11.02.2016.
- */
-public class Magnet extends Tool {
-
- private SoundManager soundManager;
- private ParticleSource particleSource;
- private SoundStream soundStream;
-
- public Magnet(Vector position, ParticleSystem particleSystem, SoundManager soundManager) {
- super(ToolType.MAGNET, position, .24f, .24f, false, false);
- this.soundManager = soundManager;
- animation.setRequiredDelta(300);
- animation.setIndexSequence(new int[]{1, 1, 0});
- animation.setLooping(true);
- super.setFloating(true);
- particleSource = new ParticleSource(new Vector(position), particleSystem.magnet);
- particleSource.start();
- soundStream = soundManager.playSound(soundManager.magnetSound);
- }
-
- @Override
- public void destroy(DestroyEffect destroyEffect) {
- super.destroy(destroyEffect);
- particleSource.kill();
- soundManager.stopSound(soundStream);
- }
-
- public void updateSoundVolume(Player player) {
- float distanceToPlayer = super.getPosition().vectorTo(player.getPosition()).length();
- float factor = 1.0f / distanceToPlayer;
- if (distanceToPlayer > 3 && player.getPosition().getX() > super.getPosition().getX()) {
- soundManager.stopSound(soundStream);
- return;
- }
- soundStream.setCurrentVolumeModifier(factor);
- soundManager.onStreamVolumeChanged(soundStream);
- }
-
- @Override
- public void onPlayerCollision(Player player, Timer timer) {
- float fromPlayerDistance = player.getPosition().vectorTo(super.getPosition()).length();
- float fromPlayerDistanceGreaterFour = Math.max(fromPlayerDistance, 0.4f);
- float fromPlayerYDistance = super.getPosition().y - player.getPosition().y;
- float force = 0.0000012f / (fromPlayerDistanceGreaterFour * fromPlayerDistanceGreaterFour);
- force *= ToolType.MAGNET.getCurrentUpgradeValue(ToolUpgradeType.FORCE) / 100;
- force *= timer.getFrameTimeMilliseconds();
-
- if (fromPlayerYDistance < 0) {
- force = -force;
- }
- player.addForce(force);
- }
-
- @Override
- protected Geometry createWorldCollisionBounds() {
- return this;
- }
-
- @Override
- protected Geometry createPlayerCollisionBounds() {
- return new Circle(super.getPosition(), 2);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.DestroyEffect;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collision.geometry.Circle;
+import de.frajul.endlessroll.entities.collision.geometry.Geometry;
+import de.frajul.endlessroll.entities.particles.ParticleSource;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.sounds.SoundManager;
+import de.frajul.endlessroll.sounds.SoundStream;
+
+/**
+ * Created by Julian on 11.02.2016.
+ */
+public class Magnet extends Tool {
+
+ private SoundManager soundManager;
+ private ParticleSource particleSource;
+ private SoundStream soundStream;
+
+ public Magnet(Vector position, ParticleSystem particleSystem, SoundManager soundManager) {
+ super(ToolType.MAGNET, position, .24f, .24f, false, false);
+ this.soundManager = soundManager;
+ animation.setRequiredDelta(300);
+ animation.setIndexSequence(new int[]{1, 1, 0});
+ animation.setLooping(true);
+ super.setFloating(true);
+ particleSource = new ParticleSource(new Vector(position), particleSystem.magnet);
+ particleSource.start();
+ soundStream = soundManager.playSound(soundManager.magnetSound);
+ }
+
+ @Override
+ public void destroy(DestroyEffect destroyEffect) {
+ super.destroy(destroyEffect);
+ particleSource.kill();
+ soundManager.stopSound(soundStream);
+ }
+
+ public void updateSoundVolume(Player player) {
+ float distanceToPlayer = super.getPosition().vectorTo(player.getPosition()).length();
+ float factor = 1.0f / distanceToPlayer;
+ if (distanceToPlayer > 3 && player.getPosition().getX() > super.getPosition().getX()) {
+ soundManager.stopSound(soundStream);
+ return;
+ }
+ soundStream.setCurrentVolumeModifier(factor);
+ soundManager.onStreamVolumeChanged(soundStream);
+ }
+
+ @Override
+ public void onPlayerCollision(Player player, Timer timer) {
+ float fromPlayerDistance = player.getPosition().vectorTo(super.getPosition()).length();
+ float fromPlayerDistanceGreaterFour = Math.max(fromPlayerDistance, 0.4f);
+ float fromPlayerYDistance = super.getPosition().y - player.getPosition().y;
+ float force = 0.0000012f / (fromPlayerDistanceGreaterFour * fromPlayerDistanceGreaterFour);
+ force *= ToolType.MAGNET.getCurrentUpgradeValue(ToolUpgradeType.FORCE) / 100;
+ force *= timer.getFrameTimeMilliseconds();
+
+ if (fromPlayerYDistance < 0) {
+ force = -force;
+ }
+ player.addForce(force);
+ }
+
+ @Override
+ protected Geometry createWorldCollisionBounds() {
+ return this;
+ }
+
+ @Override
+ protected Geometry createPlayerCollisionBounds() {
+ return new Circle(super.getPosition(), 2);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/PowerMushroom.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/PowerMushroom.java
index 938c218..13e9607 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/PowerMushroom.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/PowerMushroom.java
@@ -1,47 +1,47 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.DestroyEffect;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collision.geometry.Geometry;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.sounds.SoundManager;
-
-/**
- * Created by Julian on 02.10.2017.
- */
-
-public class PowerMushroom extends Tool {
-
- private SoundManager soundManager;
-
- public PowerMushroom(Vector position, SoundManager soundManager) {
- super(ToolType.POWER_MUSHROOM, position, .35f, .3f, true, true);
- animation.disable();
- this.soundManager = soundManager;
- }
-
- @Override
- public void onPlayerCollision(Player player, Timer timer) {
- player.startSuperPower((long) ToolType.POWER_MUSHROOM.getCurrentUpgradeValue(ToolUpgradeType.DURATION));
- soundManager.playSound(soundManager.mushroomSound);
- super.destroy(DestroyEffect.ENERGY_COLLECT);
- }
-
- @Override
- protected Geometry createWorldCollisionBounds() {
- return this;
- }
-
- @Override
- protected Geometry createPlayerCollisionBounds() {
- return this;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.DestroyEffect;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collision.geometry.Geometry;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.sounds.SoundManager;
+
+/**
+ * Created by Julian on 02.10.2017.
+ */
+
+public class PowerMushroom extends Tool {
+
+ private SoundManager soundManager;
+
+ public PowerMushroom(Vector position, SoundManager soundManager) {
+ super(ToolType.POWER_MUSHROOM, position, .35f, .3f, true, true);
+ animation.disable();
+ this.soundManager = soundManager;
+ }
+
+ @Override
+ public void onPlayerCollision(Player player, Timer timer) {
+ player.startSuperPower((long) ToolType.POWER_MUSHROOM.getCurrentUpgradeValue(ToolUpgradeType.DURATION));
+ soundManager.playSound(soundManager.mushroomSound);
+ super.destroy(DestroyEffect.ENERGY_COLLECT);
+ }
+
+ @Override
+ protected Geometry createWorldCollisionBounds() {
+ return this;
+ }
+
+ @Override
+ protected Geometry createPlayerCollisionBounds() {
+ return this;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/Ramp.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/Ramp.java
index 682b9b8..3e22a0b 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/Ramp.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/Ramp.java
@@ -1,71 +1,71 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collision.geometry.Geometry;
-import de.frajul.endlessroll.entities.collision.geometry.Triangle;
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 29.11.2015.
- */
-public class Ramp extends Tool {
-
- public Ramp(Vector position) {
- super(ToolType.RAMP, position, .4f, .35f, true, true);
- animation.setLooping(true);
- }
-
- public float getGradient() {
- return super.getHeight() / super.getWidth();
- }
-
- public float getHeightAt(float x, boolean clamp) {
- float ratio = (x - getLeftEdge()) / super.getWidth();
- if (clamp) {
- if (ratio < 0)
- return getBottomEdge();
- if (ratio > 1)
- return getTopEdge();
- }
- return getBottomEdge() + super.getHeight() * ratio;
- }
-
- @Override
- public void onPlayerCollision(Player player, Timer timer) {
- float necessaryY = calcNecessaryPlayerY(player);
- player.getPosition().y = necessaryY;
- float acceleration = player.getMovement().x * getGradient();
-
- player.setGravityForce(0);
- player.getMovement().setY(0);
- player.addForce(acceleration);
- }
-
- private float calcNecessaryPlayerY(Player player) {
- float normalM = -1 / getGradient();
- Vector normalToCircleCenter = new Vector(-1, -normalM).normalize();
- normalToCircleCenter.mul(player.RADIUS);
- float normalX = player.getPosition().x - normalToCircleCenter.x;
- float normalY = getHeightAt(normalX, false);
- return normalY + normalToCircleCenter.y;
- }
-
- @Override
- protected Geometry createWorldCollisionBounds() {
- return new Triangle(this);
- }
-
- @Override
- protected Geometry createPlayerCollisionBounds() {
- return new Triangle(this);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collision.geometry.Geometry;
+import de.frajul.endlessroll.entities.collision.geometry.Triangle;
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 29.11.2015.
+ */
+public class Ramp extends Tool {
+
+ public Ramp(Vector position) {
+ super(ToolType.RAMP, position, .4f, .35f, true, true);
+ animation.setLooping(true);
+ }
+
+ public float getGradient() {
+ return super.getHeight() / super.getWidth();
+ }
+
+ public float getHeightAt(float x, boolean clamp) {
+ float ratio = (x - getLeftEdge()) / super.getWidth();
+ if (clamp) {
+ if (ratio < 0)
+ return getBottomEdge();
+ if (ratio > 1)
+ return getTopEdge();
+ }
+ return getBottomEdge() + super.getHeight() * ratio;
+ }
+
+ @Override
+ public void onPlayerCollision(Player player, Timer timer) {
+ float necessaryY = calcNecessaryPlayerY(player);
+ player.getPosition().y = necessaryY;
+ float acceleration = player.getMovement().x * getGradient();
+
+ player.setGravityForce(0);
+ player.getMovement().setY(0);
+ player.addForce(acceleration);
+ }
+
+ private float calcNecessaryPlayerY(Player player) {
+ float normalM = -1 / getGradient();
+ Vector normalToCircleCenter = new Vector(-1, -normalM).normalize();
+ normalToCircleCenter.mul(player.RADIUS);
+ float normalX = player.getPosition().x - normalToCircleCenter.x;
+ float normalY = getHeightAt(normalX, false);
+ return normalY + normalToCircleCenter.y;
+ }
+
+ @Override
+ protected Geometry createWorldCollisionBounds() {
+ return new Triangle(this);
+ }
+
+ @Override
+ protected Geometry createPlayerCollisionBounds() {
+ return new Triangle(this);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/Spring.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/Spring.java
index 08993b7..dd00255 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/Spring.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/Spring.java
@@ -1,59 +1,59 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collision.geometry.Geometry;
-import de.frajul.endlessroll.entities.collision.geometry.Quad;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.sounds.SoundManager;
-
-/**
- * Created by Julian on 04.01.2016.
- */
-public class Spring extends Tool {
-
- private boolean hasYetCollided = false;
- private SoundManager soundManager;
-
- public Spring(Vector position, SoundManager soundManager) {
- super(ToolType.SPRING, position, .3f, .35f, true, true);
- animation.setIndexSequence(new int[]{1, 3, 3, 1});
- animation.setRequiredDelta(80);
- this.soundManager = soundManager;
- }
-
- @Override
- public void update(Timer timer) {
- if (hasYetCollided)
- super.update(timer);
- }
-
- @Override
- public void onPlayerCollision(Player player, Timer timer) {
- if (!hasYetCollided) {
- hasYetCollided = true;
- soundManager.playSound(soundManager.springSound);
-
- player.clearAllForces();
- player.getMovement().setY(0);
- player.addForce(.0022f);
- }
- }
-
- @Override
- protected Geometry createWorldCollisionBounds() {
- return this;
- }
-
- @Override
- protected Geometry createPlayerCollisionBounds() {
- return new Quad(super.getPosition(), .2f, .1f);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collision.geometry.Geometry;
+import de.frajul.endlessroll.entities.collision.geometry.Quad;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.sounds.SoundManager;
+
+/**
+ * Created by Julian on 04.01.2016.
+ */
+public class Spring extends Tool {
+
+ private boolean hasYetCollided = false;
+ private SoundManager soundManager;
+
+ public Spring(Vector position, SoundManager soundManager) {
+ super(ToolType.SPRING, position, .3f, .35f, true, true);
+ animation.setIndexSequence(new int[]{1, 3, 3, 1});
+ animation.setRequiredDelta(80);
+ this.soundManager = soundManager;
+ }
+
+ @Override
+ public void update(Timer timer) {
+ if (hasYetCollided)
+ super.update(timer);
+ }
+
+ @Override
+ public void onPlayerCollision(Player player, Timer timer) {
+ if (!hasYetCollided) {
+ hasYetCollided = true;
+ soundManager.playSound(soundManager.springSound);
+
+ player.clearAllForces();
+ player.getMovement().setY(0);
+ player.addForce(.0022f);
+ }
+ }
+
+ @Override
+ protected Geometry createWorldCollisionBounds() {
+ return this;
+ }
+
+ @Override
+ protected Geometry createPlayerCollisionBounds() {
+ return new Quad(super.getPosition(), .2f, .1f);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/Stasis.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/Stasis.java
index b9aa377..2df7778 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/Stasis.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/Stasis.java
@@ -1,103 +1,103 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.DestroyEffect;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collision.geometry.Geometry;
-import de.frajul.endlessroll.entities.particles.ParticleSource;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.sounds.SoundManager;
-import de.frajul.endlessroll.sounds.SoundStream;
-
-/**
- * Created by Julian on 11.02.2016.
- */
-public class Stasis extends Tool {
-
- private SoundManager soundManager;
- private ParticleSource particleSource;
- private boolean firstCollision = true;
- private final static float Y_SLOW_FACTOR = .4f; //Final .2f
- private final static float X_SLOW_FACTOR = .9f; //Final .8f
- private float forceValue;
-
- private SoundStream soundStream;
-
- public Stasis(Vector position, ParticleSystem particleSystem, SoundManager soundManager) {
- super(ToolType.STASIS, position,
- .7f * ToolType.STASIS.getCurrentUpgradeValue(ToolUpgradeType.SIZE) / 100,
- .7f * ToolType.STASIS.getCurrentUpgradeValue(ToolUpgradeType.SIZE) / 100, false,
- false);
- this.soundManager = soundManager;
- animation.setLooping(true);
- animation.setRequiredDelta(300);
- animation.setIndexSequence(new int[]{1, 1, 2, 3, 2, 4, 4, 3, 2, 2, 3, 3});
- super.setFloating(true);
- particleSource = new ParticleSource(new Vector(position), particleSystem.stasis);
- particleSource.setSpawnSize(new Vector(super.width, super.height));
- particleSource.start();
- forceValue = ToolType.STASIS.getCurrentUpgradeValue(ToolUpgradeType.FORCE);
- soundStream = soundManager.playSound(soundManager.stasisSound);
- }
-
- public void updateSoundVolume(Player player) {
- float distanceToPlayer = super.getPosition().getX() - player.getPosition().getX();
- boolean playerInXRange = (player.getRightEdge() >= super.getLeftEdge() && player
- .getRightEdge() <= super.getRightEdge()) || (player.getLeftEdge() >= super
- .getLeftEdge() && player.getLeftEdge() <= super.getRightEdge());
- float factor = 1.0f;
- if (!playerInXRange) {
- factor = 1.0f / (distanceToPlayer * distanceToPlayer);
- if (distanceToPlayer < -2) {
- soundManager.stopSound(soundStream);
- return;
- }
- }
- soundStream.setCurrentVolumeModifier(factor);
- soundManager.onStreamVolumeChanged(soundStream);
- }
-
- @Override
- public void destroy(DestroyEffect destroyEffect) {
- super.destroy(destroyEffect);
- particleSource.kill();
- soundManager.stopSound(soundStream);
- }
-
- @Override
- public void onPlayerCollision(Player player, Timer timer) {
- player.addStasis(this);
- }
-
- @Override
- protected Geometry createWorldCollisionBounds() {
- return this;
- }
-
- @Override
- protected Geometry createPlayerCollisionBounds() {
- return this;
- }
-
- public void influencePlayerMovementValues(Player player) {
- float finalXSlow = getCurrentXSlowFactor();
- player.manipulateAllForces(Y_SLOW_FACTOR / forceValue);
- player.getMovement().setX(player.getMovement().getX() * finalXSlow);
- if (firstCollision) {
- player.getMovement().y *= Y_SLOW_FACTOR / forceValue;
- firstCollision = false;
- }
- }
-
- public float getCurrentXSlowFactor() {
- return X_SLOW_FACTOR - forceValue / 20f;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.DestroyEffect;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collision.geometry.Geometry;
+import de.frajul.endlessroll.entities.particles.ParticleSource;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.sounds.SoundManager;
+import de.frajul.endlessroll.sounds.SoundStream;
+
+/**
+ * Created by Julian on 11.02.2016.
+ */
+public class Stasis extends Tool {
+
+ private SoundManager soundManager;
+ private ParticleSource particleSource;
+ private boolean firstCollision = true;
+ private final static float Y_SLOW_FACTOR = .4f; //Final .2f
+ private final static float X_SLOW_FACTOR = .9f; //Final .8f
+ private float forceValue;
+
+ private SoundStream soundStream;
+
+ public Stasis(Vector position, ParticleSystem particleSystem, SoundManager soundManager) {
+ super(ToolType.STASIS, position,
+ .7f * ToolType.STASIS.getCurrentUpgradeValue(ToolUpgradeType.SIZE) / 100,
+ .7f * ToolType.STASIS.getCurrentUpgradeValue(ToolUpgradeType.SIZE) / 100, false,
+ false);
+ this.soundManager = soundManager;
+ animation.setLooping(true);
+ animation.setRequiredDelta(300);
+ animation.setIndexSequence(new int[]{1, 1, 2, 3, 2, 4, 4, 3, 2, 2, 3, 3});
+ super.setFloating(true);
+ particleSource = new ParticleSource(new Vector(position), particleSystem.stasis);
+ particleSource.setSpawnSize(new Vector(super.width, super.height));
+ particleSource.start();
+ forceValue = ToolType.STASIS.getCurrentUpgradeValue(ToolUpgradeType.FORCE);
+ soundStream = soundManager.playSound(soundManager.stasisSound);
+ }
+
+ public void updateSoundVolume(Player player) {
+ float distanceToPlayer = super.getPosition().getX() - player.getPosition().getX();
+ boolean playerInXRange = (player.getRightEdge() >= super.getLeftEdge() && player
+ .getRightEdge() <= super.getRightEdge()) || (player.getLeftEdge() >= super
+ .getLeftEdge() && player.getLeftEdge() <= super.getRightEdge());
+ float factor = 1.0f;
+ if (!playerInXRange) {
+ factor = 1.0f / (distanceToPlayer * distanceToPlayer);
+ if (distanceToPlayer < -2) {
+ soundManager.stopSound(soundStream);
+ return;
+ }
+ }
+ soundStream.setCurrentVolumeModifier(factor);
+ soundManager.onStreamVolumeChanged(soundStream);
+ }
+
+ @Override
+ public void destroy(DestroyEffect destroyEffect) {
+ super.destroy(destroyEffect);
+ particleSource.kill();
+ soundManager.stopSound(soundStream);
+ }
+
+ @Override
+ public void onPlayerCollision(Player player, Timer timer) {
+ player.addStasis(this);
+ }
+
+ @Override
+ protected Geometry createWorldCollisionBounds() {
+ return this;
+ }
+
+ @Override
+ protected Geometry createPlayerCollisionBounds() {
+ return this;
+ }
+
+ public void influencePlayerMovementValues(Player player) {
+ float finalXSlow = getCurrentXSlowFactor();
+ player.manipulateAllForces(Y_SLOW_FACTOR / forceValue);
+ player.getMovement().setX(player.getMovement().getX() * finalXSlow);
+ if (firstCollision) {
+ player.getMovement().y *= Y_SLOW_FACTOR / forceValue;
+ firstCollision = false;
+ }
+ }
+
+ public float getCurrentXSlowFactor() {
+ return X_SLOW_FACTOR - forceValue / 20f;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/Tool.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/Tool.java
index 9ee2c73..cd64dfe 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/Tool.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/Tool.java
@@ -1,64 +1,64 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.AnimatedEntity;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collision.geometry.Geometry;
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 04.01.2016.
- */
-public abstract class Tool extends AnimatedEntity {
-
- private boolean placedByRightEdge;
- private boolean updateBounds;
- private Geometry worldCollisionBounds;
- private Geometry playerCollisionBounds;
- private boolean floating = false;
-
- public Tool(ToolType type, Vector position, float width, float height, boolean updateBounds, boolean placedByRightEdge) {
- super(type.getToolTexture(), position, width, height);
- this.updateBounds = updateBounds;
- this.placedByRightEdge = placedByRightEdge;
- worldCollisionBounds = createWorldCollisionBounds();
- playerCollisionBounds = createPlayerCollisionBounds();
- }
-
- public abstract void onPlayerCollision(Player player, Timer timer);
-
- protected abstract Geometry createWorldCollisionBounds();
-
- protected abstract Geometry createPlayerCollisionBounds();
-
- public Geometry getWorldCollisionBounds() {
- if (updateBounds)
- return createWorldCollisionBounds();
- return worldCollisionBounds;
- }
-
- public Geometry getPlayerCollisionBounds() {
- if (updateBounds)
- return createPlayerCollisionBounds();
- return playerCollisionBounds;
- }
-
- public void setFloating(boolean floating) {
- this.floating = floating;
- }
-
- public boolean isFloating() {
- return floating;
- }
-
- public boolean isPlacedByRightEdge() {
- return placedByRightEdge;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.AnimatedEntity;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collision.geometry.Geometry;
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 04.01.2016.
+ */
+public abstract class Tool extends AnimatedEntity {
+
+ private boolean placedByRightEdge;
+ private boolean updateBounds;
+ private Geometry worldCollisionBounds;
+ private Geometry playerCollisionBounds;
+ private boolean floating = false;
+
+ public Tool(ToolType type, Vector position, float width, float height, boolean updateBounds, boolean placedByRightEdge) {
+ super(type.getToolTexture(), position, width, height);
+ this.updateBounds = updateBounds;
+ this.placedByRightEdge = placedByRightEdge;
+ worldCollisionBounds = createWorldCollisionBounds();
+ playerCollisionBounds = createPlayerCollisionBounds();
+ }
+
+ public abstract void onPlayerCollision(Player player, Timer timer);
+
+ protected abstract Geometry createWorldCollisionBounds();
+
+ protected abstract Geometry createPlayerCollisionBounds();
+
+ public Geometry getWorldCollisionBounds() {
+ if (updateBounds)
+ return createWorldCollisionBounds();
+ return worldCollisionBounds;
+ }
+
+ public Geometry getPlayerCollisionBounds() {
+ if (updateBounds)
+ return createPlayerCollisionBounds();
+ return playerCollisionBounds;
+ }
+
+ public void setFloating(boolean floating) {
+ this.floating = floating;
+ }
+
+ public boolean isFloating() {
+ return floating;
+ }
+
+ public boolean isPlacedByRightEdge() {
+ return placedByRightEdge;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolSlot.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolSlot.java
index 154d235..c9f44b8 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolSlot.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolSlot.java
@@ -1,49 +1,49 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-import de.frajul.endlessroll.R;
-
-/**
- * Created by Julian on 16.07.2016.
- */
-public class ToolSlot {
-
- private ToolType toolType;
- private boolean locked;
-
- public ToolSlot(ToolType toolType, boolean locked) {
- this.toolType = toolType;
- this.locked = locked;
- }
-
- public ToolType getToolType() {
- return toolType;
- }
-
- public int getDrawable() {
- if (locked)
- return R.drawable.tools_button_locked;
- else if (toolType != null)
- return toolType.getButtonDrawable();
- else
- return R.drawable.tools_button_empty;
- }
-
- public void setToolType(ToolType toolType) {
- this.toolType = toolType;
- }
-
- public boolean isLocked() {
- return locked;
- }
-
- public void setLocked(boolean locked) {
- this.locked = locked;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+import de.frajul.endlessroll.R;
+
+/**
+ * Created by Julian on 16.07.2016.
+ */
+public class ToolSlot {
+
+ private ToolType toolType;
+ private boolean locked;
+
+ public ToolSlot(ToolType toolType, boolean locked) {
+ this.toolType = toolType;
+ this.locked = locked;
+ }
+
+ public ToolType getToolType() {
+ return toolType;
+ }
+
+ public int getDrawable() {
+ if (locked)
+ return R.drawable.tools_button_locked;
+ else if (toolType != null)
+ return toolType.getButtonDrawable();
+ else
+ return R.drawable.tools_button_empty;
+ }
+
+ public void setToolType(ToolType toolType) {
+ this.toolType = toolType;
+ }
+
+ public boolean isLocked() {
+ return locked;
+ }
+
+ public void setLocked(boolean locked) {
+ this.locked = locked;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolType.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolType.java
index 6d7a729..dcf826d 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolType.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolType.java
@@ -1,195 +1,195 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-
-import java.util.Arrays;
-import java.util.List;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.sounds.SoundManager;
-
-public enum ToolType {
-
- //Check newInstance when new Tool is added!
- RAMP(R.string.tool_name_ramp, R.string.tool_description_ramp, R.drawable.tools_ramp,
- R.drawable.tools_ramp_button, 0, 1, 5,
- new ToolUpgrade(ToolUpgradeType.COOLDOWN, 3000, 1000)),
- SPRING(R.string.tool_name_spring, R.string.tool_description_spring, R.drawable.tools_spring,
- R.drawable.tools_spring_button, 5, 2, 5,
- new ToolUpgrade(ToolUpgradeType.COOLDOWN, 4000, 2000)),
- BOMB(R.string.tool_name_bomb, R.string.tool_description_bomb, R.drawable.tools_bomb,
- R.drawable.tools_bomb_button, 25, 4, 5,
- new ToolUpgrade(ToolUpgradeType.COOLDOWN, 5000, 2000),
- new ToolUpgrade(ToolUpgradeType.DURATION, 1200, 500)),
- MAGNET(R.string.tool_name_magnet, R.string.tool_description_magnet, R.drawable.tools_magnet,
- R.drawable.tools_magnet_button, 22, 2, 5,
- new ToolUpgrade(ToolUpgradeType.COOLDOWN, 5000, 3000),
- new ToolUpgrade(ToolUpgradeType.FORCE, 100, 500)),
- STASIS(R.string.tool_name_stasis, R.string.tool_description_stasis, R.drawable.tools_stasis,
- R.drawable.tools_stasis_button, 27, 4, 6,
- new ToolUpgrade(ToolUpgradeType.COOLDOWN, 6000, 4000),
- new ToolUpgrade(ToolUpgradeType.FORCE, 1, 2),
- new ToolUpgrade(ToolUpgradeType.SIZE, 100, 200)),
- POWER_MUSHROOM(R.string.tool_name_power_mushroom, R.string.tool_description_power_mushroom,
- R.drawable.tools_power_mushroom, R.drawable.tools_power_mushroom_button, 50,
- 5, 7, new ToolUpgrade(ToolUpgradeType.COOLDOWN, 15000, 11000),
- new ToolUpgrade(ToolUpgradeType.DURATION, 5000, 10000));
-
- @StringRes
- private final int name;
- @StringRes
- private final int description;
- private final int toolTextureId;
- private final int buttonDrawable;
- private final int buyPrice;
- private final int upgradePrice;
- private final int maxUpgradeLevel;
- private final List upgrades;
-
- private Texture toolTexture = null;
- private Texture toolButtonTexture = null;
- private boolean bought;
- private int currentUpgradeLevel = 1;
-
- ToolType(@StringRes int name, @StringRes int description, int toolTextureId, int buttonDrawable, int buyPrice, int upgradePrice, int maxUpgradeLevel, ToolUpgrade... upgrades) {
- this.name = name;
- this.description = description;
- this.toolTextureId = toolTextureId;
- this.buttonDrawable = buttonDrawable;
- this.buyPrice = buyPrice;
- this.upgradePrice = upgradePrice;
- this.maxUpgradeLevel = maxUpgradeLevel;
- this.upgrades = Arrays.asList(upgrades);
- }
-
- @Nullable
- public Tool newInstance(Vector position, ParticleSystem particleSystem, SoundManager soundManager) {
- Tool tool = null;
- switch (this) {
- case RAMP:
- tool = new Ramp(position);
- break;
- case SPRING:
- tool = new Spring(position, soundManager);
- break;
- case MAGNET:
- tool = new Magnet(position, particleSystem, soundManager);
- break;
- case BOMB:
- tool = new Bomb(position);
- break;
- case POWER_MUSHROOM:
- tool = new PowerMushroom(position, soundManager);
- break;
- case STASIS:
- tool = new Stasis(position, particleSystem, soundManager);
- break;
- }
- if (tool != null && tool.isPlacedByRightEdge())
- tool.move(new Vector(-tool.getWidth() / 2, 0));
- return tool;
- }
-
- public static void loadAllToolTextures(TexturePack texturePack) {
- for (ToolType type : values()) {
- type.loadToolTexture(texturePack);
- type.loadToolButtonTexture(texturePack);
- }
- }
-
- private void loadToolTexture(TexturePack texturePack) {
- if (toolTextureId == -1)
- return;
- if (this != POWER_MUSHROOM)
- toolTexture = texturePack.loadAtlas(toolTextureId, 2, 2);
- else
- toolTexture = texturePack.loadTexture(toolTextureId);
- }
-
- private void loadToolButtonTexture(TexturePack texturePack) {
- if (buttonDrawable == -1)
- return;
- toolButtonTexture = texturePack.loadTexture(buttonDrawable);
- }
-
- public Texture getToolTexture() {
- return toolTexture;
- }
-
- public Texture getToolButtonTexture() {
- return toolButtonTexture;
- }
-
- public int getButtonDrawable() {
- return buttonDrawable;
- }
-
- @StringRes
- public int getName() {
- return name;
- }
-
- @StringRes
- public int getDescription() {
- return description;
- }
-
- public void setBought(boolean bought) {
- this.bought = bought;
- }
-
- public boolean isBought() {
- if (this == RAMP)
- bought = true;
- return bought;
- }
-
- public void upgrade() {
- currentUpgradeLevel++;
- }
-
- public void reset() {
- setBought(false);
- currentUpgradeLevel = 1;
- }
-
- public int getBuyPrice() {
- return buyPrice;
- }
-
- public int getUpgradePrice() {
- return upgradePrice + currentUpgradeLevel - 1;
- }
-
- public int getCurrentUpgradeLevel() {
- return currentUpgradeLevel;
- }
-
- public void setCurrentUpgradeLevel(int currentUpgradeLevel) {
- this.currentUpgradeLevel = currentUpgradeLevel;
- }
-
- public float getCurrentUpgradeValue(ToolUpgradeType type) {
- for (ToolUpgrade upgrade : upgrades)
- if (upgrade.getType().equals(type))
- return upgrade.getValueAtLevel(currentUpgradeLevel, maxUpgradeLevel);
- return -1;
- }
-
- public boolean isAtMaxUpgradeLevel() {
- return currentUpgradeLevel == maxUpgradeLevel;
- }
-
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
+
+import java.util.Arrays;
+import java.util.List;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.sounds.SoundManager;
+
+public enum ToolType {
+
+ //Check newInstance when new Tool is added!
+ RAMP(R.string.tool_name_ramp, R.string.tool_description_ramp, R.drawable.tools_ramp,
+ R.drawable.tools_ramp_button, 0, 1, 5,
+ new ToolUpgrade(ToolUpgradeType.COOLDOWN, 3000, 1000)),
+ SPRING(R.string.tool_name_spring, R.string.tool_description_spring, R.drawable.tools_spring,
+ R.drawable.tools_spring_button, 5, 2, 5,
+ new ToolUpgrade(ToolUpgradeType.COOLDOWN, 4000, 2000)),
+ BOMB(R.string.tool_name_bomb, R.string.tool_description_bomb, R.drawable.tools_bomb,
+ R.drawable.tools_bomb_button, 25, 4, 5,
+ new ToolUpgrade(ToolUpgradeType.COOLDOWN, 5000, 2000),
+ new ToolUpgrade(ToolUpgradeType.DURATION, 1200, 500)),
+ MAGNET(R.string.tool_name_magnet, R.string.tool_description_magnet, R.drawable.tools_magnet,
+ R.drawable.tools_magnet_button, 22, 2, 5,
+ new ToolUpgrade(ToolUpgradeType.COOLDOWN, 5000, 3000),
+ new ToolUpgrade(ToolUpgradeType.FORCE, 100, 500)),
+ STASIS(R.string.tool_name_stasis, R.string.tool_description_stasis, R.drawable.tools_stasis,
+ R.drawable.tools_stasis_button, 27, 4, 6,
+ new ToolUpgrade(ToolUpgradeType.COOLDOWN, 6000, 4000),
+ new ToolUpgrade(ToolUpgradeType.FORCE, 1, 2),
+ new ToolUpgrade(ToolUpgradeType.SIZE, 100, 200)),
+ POWER_MUSHROOM(R.string.tool_name_power_mushroom, R.string.tool_description_power_mushroom,
+ R.drawable.tools_power_mushroom, R.drawable.tools_power_mushroom_button, 50,
+ 5, 7, new ToolUpgrade(ToolUpgradeType.COOLDOWN, 15000, 11000),
+ new ToolUpgrade(ToolUpgradeType.DURATION, 5000, 10000));
+
+ @StringRes
+ private final int name;
+ @StringRes
+ private final int description;
+ private final int toolTextureId;
+ private final int buttonDrawable;
+ private final int buyPrice;
+ private final int upgradePrice;
+ private final int maxUpgradeLevel;
+ private final List upgrades;
+
+ private Texture toolTexture = null;
+ private Texture toolButtonTexture = null;
+ private boolean bought;
+ private int currentUpgradeLevel = 1;
+
+ ToolType(@StringRes int name, @StringRes int description, int toolTextureId, int buttonDrawable, int buyPrice, int upgradePrice, int maxUpgradeLevel, ToolUpgrade... upgrades) {
+ this.name = name;
+ this.description = description;
+ this.toolTextureId = toolTextureId;
+ this.buttonDrawable = buttonDrawable;
+ this.buyPrice = buyPrice;
+ this.upgradePrice = upgradePrice;
+ this.maxUpgradeLevel = maxUpgradeLevel;
+ this.upgrades = Arrays.asList(upgrades);
+ }
+
+ @Nullable
+ public Tool newInstance(Vector position, ParticleSystem particleSystem, SoundManager soundManager) {
+ Tool tool = null;
+ switch (this) {
+ case RAMP:
+ tool = new Ramp(position);
+ break;
+ case SPRING:
+ tool = new Spring(position, soundManager);
+ break;
+ case MAGNET:
+ tool = new Magnet(position, particleSystem, soundManager);
+ break;
+ case BOMB:
+ tool = new Bomb(position);
+ break;
+ case POWER_MUSHROOM:
+ tool = new PowerMushroom(position, soundManager);
+ break;
+ case STASIS:
+ tool = new Stasis(position, particleSystem, soundManager);
+ break;
+ }
+ if (tool != null && tool.isPlacedByRightEdge())
+ tool.move(new Vector(-tool.getWidth() / 2, 0));
+ return tool;
+ }
+
+ public static void loadAllToolTextures(TexturePack texturePack) {
+ for (ToolType type : values()) {
+ type.loadToolTexture(texturePack);
+ type.loadToolButtonTexture(texturePack);
+ }
+ }
+
+ private void loadToolTexture(TexturePack texturePack) {
+ if (toolTextureId == -1)
+ return;
+ if (this != POWER_MUSHROOM)
+ toolTexture = texturePack.loadAtlas(toolTextureId, 2, 2);
+ else
+ toolTexture = texturePack.loadTexture(toolTextureId);
+ }
+
+ private void loadToolButtonTexture(TexturePack texturePack) {
+ if (buttonDrawable == -1)
+ return;
+ toolButtonTexture = texturePack.loadTexture(buttonDrawable);
+ }
+
+ public Texture getToolTexture() {
+ return toolTexture;
+ }
+
+ public Texture getToolButtonTexture() {
+ return toolButtonTexture;
+ }
+
+ public int getButtonDrawable() {
+ return buttonDrawable;
+ }
+
+ @StringRes
+ public int getName() {
+ return name;
+ }
+
+ @StringRes
+ public int getDescription() {
+ return description;
+ }
+
+ public void setBought(boolean bought) {
+ this.bought = bought;
+ }
+
+ public boolean isBought() {
+ if (this == RAMP)
+ bought = true;
+ return bought;
+ }
+
+ public void upgrade() {
+ currentUpgradeLevel++;
+ }
+
+ public void reset() {
+ setBought(false);
+ currentUpgradeLevel = 1;
+ }
+
+ public int getBuyPrice() {
+ return buyPrice;
+ }
+
+ public int getUpgradePrice() {
+ return upgradePrice + currentUpgradeLevel - 1;
+ }
+
+ public int getCurrentUpgradeLevel() {
+ return currentUpgradeLevel;
+ }
+
+ public void setCurrentUpgradeLevel(int currentUpgradeLevel) {
+ this.currentUpgradeLevel = currentUpgradeLevel;
+ }
+
+ public float getCurrentUpgradeValue(ToolUpgradeType type) {
+ for (ToolUpgrade upgrade : upgrades)
+ if (upgrade.getType().equals(type))
+ return upgrade.getValueAtLevel(currentUpgradeLevel, maxUpgradeLevel);
+ return -1;
+ }
+
+ public boolean isAtMaxUpgradeLevel() {
+ return currentUpgradeLevel == maxUpgradeLevel;
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolUpgrade.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolUpgrade.java
index 9dd9f88..d218f3b 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolUpgrade.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolUpgrade.java
@@ -1,34 +1,34 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-/**
- * Created by Julian on 09.06.2017.
- */
-
-public class ToolUpgrade {
-
- private ToolUpgradeType type;
- private float first, last;
-
- public ToolUpgrade(ToolUpgradeType type, float first, float last) {
- this.type = type;
- this.first = first;
- this.last = last;
- }
-
- public ToolUpgradeType getType() {
- return type;
- }
-
- public float getValueAtLevel(int level, int maxLevel) {
- float step = (last - first) / ((float) maxLevel - 1);
- return first + (level - 1) * step;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+/**
+ * Created by Julian on 09.06.2017.
+ */
+
+public class ToolUpgrade {
+
+ private ToolUpgradeType type;
+ private float first, last;
+
+ public ToolUpgrade(ToolUpgradeType type, float first, float last) {
+ this.type = type;
+ this.first = first;
+ this.last = last;
+ }
+
+ public ToolUpgradeType getType() {
+ return type;
+ }
+
+ public float getValueAtLevel(int level, int maxLevel) {
+ float step = (last - first) / ((float) maxLevel - 1);
+ return first + (level - 1) * step;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolUpgradeType.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolUpgradeType.java
index e5d6241..2cd6936 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolUpgradeType.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolUpgradeType.java
@@ -1,18 +1,18 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.entities.tools;
-
-/**
- * Created by Julian on 28.10.2017.
- */
-
-public enum ToolUpgradeType {
-
- COOLDOWN, DURATION, FORCE, SIZE
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.entities.tools;
+
+/**
+ * Created by Julian on 28.10.2017.
+ */
+
+public enum ToolUpgradeType {
+
+ COOLDOWN, DURATION, FORCE, SIZE
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/levels/Gap.java b/app/src/main/java/de/frajul/endlessroll/levels/Gap.java
index d03592a..1d2113e 100644
--- a/app/src/main/java/de/frajul/endlessroll/levels/Gap.java
+++ b/app/src/main/java/de/frajul/endlessroll/levels/Gap.java
@@ -1,29 +1,29 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.levels;
-
-import org.simpleframework.xml.Attribute;
-
-/**
- * Created by Julian on 27.11.2015.
- */
-public class Gap {
-
- @Attribute
- private float leftEdge;
- @Attribute
- private float rightEdge;
-
- public float getLeftEdge() {
- return leftEdge;
- }
-
- public float getRightEdge() {
- return rightEdge;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.levels;
+
+import org.simpleframework.xml.Attribute;
+
+/**
+ * Created by Julian on 27.11.2015.
+ */
+public class Gap {
+
+ @Attribute
+ private float leftEdge;
+ @Attribute
+ private float rightEdge;
+
+ public float getLeftEdge() {
+ return leftEdge;
+ }
+
+ public float getRightEdge() {
+ return rightEdge;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/levels/Level.java b/app/src/main/java/de/frajul/endlessroll/levels/Level.java
index bbbf5d5..f4cdba4 100644
--- a/app/src/main/java/de/frajul/endlessroll/levels/Level.java
+++ b/app/src/main/java/de/frajul/endlessroll/levels/Level.java
@@ -1,154 +1,154 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.levels;
-
-import org.simpleframework.xml.Attribute;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.ElementList;
-
-import java.util.List;
-
-/**
- * Created by Julian on 07.12.2015.
- */
-public class Level {
-
- @Attribute
- private int packId;
- @Attribute
- private int id;
- @Attribute
- private float goalX;
- @Attribute
- private float startSpeed;
- @Attribute
- private float endSpeed;
- @Attribute
- private float terrainEdge;
- @Attribute
- private float ceilingEdge;
- @ElementList
- private List terrainTiles;
- @ElementList
- private List ceilingTiles;
- @ElementList
- private List obstacles;
- @ElementList
- private List stars;
- @Element(required = false)
- private PositionData energy;
-
- private boolean finished = false;
- private boolean locked = true;
- private boolean[] collectedStars = {false, false, false};
- private boolean energyCollected = false;
-
- public int getPackId() {
- return packId;
- }
-
- public int getId() {
- return id;
- }
-
- public float getGoalX() {
- return goalX;
- }
-
- public float getStartSpeed() {
- return startSpeed;
- }
-
- public float getEndSpeed() {
- return endSpeed;
- }
-
- public float getTerrainEdge() {
- return terrainEdge;
- }
-
- public float getCeilingEdge() {
- return ceilingEdge;
- }
-
- public List getTerrainTiles() {
- return terrainTiles;
- }
-
- public List getCeilingTiles() {
- return ceilingTiles;
- }
-
- public List getObstacles() {
- return obstacles;
- }
-
- public List getStars() {
- return stars;
- }
-
- public PositionData getEnergyData() {
- return energy;
- }
-
- public boolean isLocked() {
- return locked;
- }
-
- public void setLocked(boolean locked) {
- this.locked = locked;
- }
-
- public boolean isFinished() {
- return finished;
- }
-
- public void setFinished(boolean finished) {
- this.finished = finished;
- }
-
- public boolean isStarCollected(int index) {
- return collectedStars[index];
- }
-
- public void setStarCollected(int index, boolean collected) {
- collectedStars[index] = collected;
- }
-
- public String getCollectedStarCodeForSQL() {
- String code = "";
- for (int i = 0; i < 3; i++)
- code += collectedStars[i] ? (i + 1) + "" : "";
- return code;
- }
-
- public void setCollectedStarsFromSQL(String code) {
- for (int i = 0; i < 3; i++)
- collectedStars[i] = code.contains((i + 1) + "");
- }
-
- public boolean[] getCollectedStars() {
- return collectedStars;
- }
-
- public boolean isEnergyCollected() {
- return energyCollected;
- }
-
- public void setEnergyCollected(boolean collected) {
- this.energyCollected = collected;
- }
-
- public void reset() {
- finished = false;
- locked = true;
- collectedStars = new boolean[]{false, false, false};
- energyCollected = false;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.levels;
+
+import org.simpleframework.xml.Attribute;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.ElementList;
+
+import java.util.List;
+
+/**
+ * Created by Julian on 07.12.2015.
+ */
+public class Level {
+
+ @Attribute
+ private int packId;
+ @Attribute
+ private int id;
+ @Attribute
+ private float goalX;
+ @Attribute
+ private float startSpeed;
+ @Attribute
+ private float endSpeed;
+ @Attribute
+ private float terrainEdge;
+ @Attribute
+ private float ceilingEdge;
+ @ElementList
+ private List terrainTiles;
+ @ElementList
+ private List ceilingTiles;
+ @ElementList
+ private List obstacles;
+ @ElementList
+ private List stars;
+ @Element(required = false)
+ private PositionData energy;
+
+ private boolean finished = false;
+ private boolean locked = true;
+ private boolean[] collectedStars = {false, false, false};
+ private boolean energyCollected = false;
+
+ public int getPackId() {
+ return packId;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public float getGoalX() {
+ return goalX;
+ }
+
+ public float getStartSpeed() {
+ return startSpeed;
+ }
+
+ public float getEndSpeed() {
+ return endSpeed;
+ }
+
+ public float getTerrainEdge() {
+ return terrainEdge;
+ }
+
+ public float getCeilingEdge() {
+ return ceilingEdge;
+ }
+
+ public List getTerrainTiles() {
+ return terrainTiles;
+ }
+
+ public List getCeilingTiles() {
+ return ceilingTiles;
+ }
+
+ public List getObstacles() {
+ return obstacles;
+ }
+
+ public List getStars() {
+ return stars;
+ }
+
+ public PositionData getEnergyData() {
+ return energy;
+ }
+
+ public boolean isLocked() {
+ return locked;
+ }
+
+ public void setLocked(boolean locked) {
+ this.locked = locked;
+ }
+
+ public boolean isFinished() {
+ return finished;
+ }
+
+ public void setFinished(boolean finished) {
+ this.finished = finished;
+ }
+
+ public boolean isStarCollected(int index) {
+ return collectedStars[index];
+ }
+
+ public void setStarCollected(int index, boolean collected) {
+ collectedStars[index] = collected;
+ }
+
+ public String getCollectedStarCodeForSQL() {
+ String code = "";
+ for (int i = 0; i < 3; i++)
+ code += collectedStars[i] ? (i + 1) + "" : "";
+ return code;
+ }
+
+ public void setCollectedStarsFromSQL(String code) {
+ for (int i = 0; i < 3; i++)
+ collectedStars[i] = code.contains((i + 1) + "");
+ }
+
+ public boolean[] getCollectedStars() {
+ return collectedStars;
+ }
+
+ public boolean isEnergyCollected() {
+ return energyCollected;
+ }
+
+ public void setEnergyCollected(boolean collected) {
+ this.energyCollected = collected;
+ }
+
+ public void reset() {
+ finished = false;
+ locked = true;
+ collectedStars = new boolean[]{false, false, false};
+ energyCollected = false;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/levels/LevelManager.java b/app/src/main/java/de/frajul/endlessroll/levels/LevelManager.java
index 40515a6..327b6d5 100644
--- a/app/src/main/java/de/frajul/endlessroll/levels/LevelManager.java
+++ b/app/src/main/java/de/frajul/endlessroll/levels/LevelManager.java
@@ -1,138 +1,138 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.levels;
-
-import android.content.Context;
-
-import org.simpleframework.xml.Serializer;
-import org.simpleframework.xml.core.Persister;
-
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.DataStorageHandler;
-import de.frajul.endlessroll.main.GameLog;
-import de.frajul.endlessroll.sqlDatabase.MyDatabase;
-
-public class LevelManager extends ArrayList {
-
- public LevelManager(Context context, DataStorageHandler dataStorageHandler) throws Exception {
- String[] worldNames = context.getResources().getStringArray(R.array.world_names);
- String[] assets = context.getAssets().list("levelpacks");
- for (String asset : assets) {
- try {
- LevelPack pack = loadLevelPack(context, "levelpacks/" + asset);
- pack.setName(worldNames[pack.getId()]);
-
- MyDatabase database = dataStorageHandler.getDatabase();
- database.open();
- for (Level level : pack.getLevels())
- database.readLevelProgress(level);
- database.readLevelPackLocked(pack);
- database.close();
- pack.tryToUnlockFirstLevel();
- if (pack.getId() == 1)
- pack.setLocked(false);
- super.add(pack);
- } catch (Exception e) {
- GameLog.e(e);
- }
- }
- sortPacks();
- }
-
- private void sortPacks() {
- Collections.sort(this, packComparator);
- }
-
- private LevelPack loadLevelPack(Context context, String name) throws Exception {
- try {
- InputStream source = context.getAssets().open(name);
- Serializer serializer = new Persister();
- return serializer.read(LevelPack.class, source);
- } catch (Exception e) {
- throw new Exception("Could not load levelPack \"" + name + "\"", e);
- }
- }
-
- public int getTotalCollectedStarCount() {
- int count = 0;
- for (LevelPack levelPack : this)
- count += levelPack.getCollectedStarCount();
- return count;
- }
-
- public int getTotalCollectedEnergyCount() {
- int count = 0;
- for (LevelPack levelPack : this)
- count += levelPack.getCollectedEnergyCount();
- return count;
- }
-
- public LevelPack getNextLevelPack(LevelPack currentPack) {
- int searchedId = currentPack.getId() + 1;
- for (LevelPack pack : this) {
- if (pack.getId() == searchedId)
- return pack;
- }
- return null;
- }
-
- public LevelPack getPackWithId(int id) {
- for (LevelPack pack : this)
- if (pack.getId() == id)
- return pack;
- return null;
- }
-
- public void reset() {
- for (LevelPack pack : this) {
- pack.reset();
- if (pack.getId() == 1)
- pack.setLocked(false);
- }
- }
-
- public void finishFirstPack() {
- LevelPack pack1 = getPackWithId(1);
- if (pack1 != null) {
- for (Level level : pack1.getLevels()) {
- level.setFinished(true);
- level.setLocked(false);
- }
- }
- LevelPack pack2 = getPackWithId(2);
- if (pack2 != null) {
- pack2.setLocked(false);
- }
- }
-
- private Comparator packComparator = new Comparator() {
- @Override
- public int compare(LevelPack lhs, LevelPack rhs) {
- return lhs.getId() - rhs.getId();
- }
- };
-
- //CHEAT
- public void unlockAllPacks() {
- for (LevelPack levelPack : this)
- levelPack.setLocked(false);
- }
-
- public void unlockAllLevels() {
- for (LevelPack levelPack : this) {
- for (Level level : levelPack.getLevels())
- level.setLocked(false);
- }
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.levels;
+
+import android.content.Context;
+
+import org.simpleframework.xml.Serializer;
+import org.simpleframework.xml.core.Persister;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.DataStorageHandler;
+import de.frajul.endlessroll.main.GameLog;
+import de.frajul.endlessroll.sqlDatabase.MyDatabase;
+
+public class LevelManager extends ArrayList {
+
+ public LevelManager(Context context, DataStorageHandler dataStorageHandler) throws Exception {
+ String[] worldNames = context.getResources().getStringArray(R.array.world_names);
+ String[] assets = context.getAssets().list("levelpacks");
+ for (String asset : assets) {
+ try {
+ LevelPack pack = loadLevelPack(context, "levelpacks/" + asset);
+ pack.setName(worldNames[pack.getId()]);
+
+ MyDatabase database = dataStorageHandler.getDatabase();
+ database.open();
+ for (Level level : pack.getLevels())
+ database.readLevelProgress(level);
+ database.readLevelPackLocked(pack);
+ database.close();
+ pack.tryToUnlockFirstLevel();
+ if (pack.getId() == 1)
+ pack.setLocked(false);
+ super.add(pack);
+ } catch (Exception e) {
+ GameLog.e(e);
+ }
+ }
+ sortPacks();
+ }
+
+ private void sortPacks() {
+ Collections.sort(this, packComparator);
+ }
+
+ private LevelPack loadLevelPack(Context context, String name) throws Exception {
+ try {
+ InputStream source = context.getAssets().open(name);
+ Serializer serializer = new Persister();
+ return serializer.read(LevelPack.class, source);
+ } catch (Exception e) {
+ throw new Exception("Could not load levelPack \"" + name + "\"", e);
+ }
+ }
+
+ public int getTotalCollectedStarCount() {
+ int count = 0;
+ for (LevelPack levelPack : this)
+ count += levelPack.getCollectedStarCount();
+ return count;
+ }
+
+ public int getTotalCollectedEnergyCount() {
+ int count = 0;
+ for (LevelPack levelPack : this)
+ count += levelPack.getCollectedEnergyCount();
+ return count;
+ }
+
+ public LevelPack getNextLevelPack(LevelPack currentPack) {
+ int searchedId = currentPack.getId() + 1;
+ for (LevelPack pack : this) {
+ if (pack.getId() == searchedId)
+ return pack;
+ }
+ return null;
+ }
+
+ public LevelPack getPackWithId(int id) {
+ for (LevelPack pack : this)
+ if (pack.getId() == id)
+ return pack;
+ return null;
+ }
+
+ public void reset() {
+ for (LevelPack pack : this) {
+ pack.reset();
+ if (pack.getId() == 1)
+ pack.setLocked(false);
+ }
+ }
+
+ public void finishFirstPack() {
+ LevelPack pack1 = getPackWithId(1);
+ if (pack1 != null) {
+ for (Level level : pack1.getLevels()) {
+ level.setFinished(true);
+ level.setLocked(false);
+ }
+ }
+ LevelPack pack2 = getPackWithId(2);
+ if (pack2 != null) {
+ pack2.setLocked(false);
+ }
+ }
+
+ private Comparator packComparator = new Comparator() {
+ @Override
+ public int compare(LevelPack lhs, LevelPack rhs) {
+ return lhs.getId() - rhs.getId();
+ }
+ };
+
+ //CHEAT
+ public void unlockAllPacks() {
+ for (LevelPack levelPack : this)
+ levelPack.setLocked(false);
+ }
+
+ public void unlockAllLevels() {
+ for (LevelPack levelPack : this) {
+ for (Level level : levelPack.getLevels())
+ level.setLocked(false);
+ }
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/levels/LevelPack.java b/app/src/main/java/de/frajul/endlessroll/levels/LevelPack.java
index d88c1e7..1b3b9d2 100644
--- a/app/src/main/java/de/frajul/endlessroll/levels/LevelPack.java
+++ b/app/src/main/java/de/frajul/endlessroll/levels/LevelPack.java
@@ -1,127 +1,127 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.levels;
-
-import org.simpleframework.xml.Attribute;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.ElementList;
-import org.simpleframework.xml.Root;
-
-import java.util.List;
-
-import de.frajul.endlessroll.levels.worlds.World;
-
-/**
- * Created by Julian on 07.12.2015.
- */
-@Root
-public class LevelPack {
-
- @Attribute
- private int id;
- @Element
- private World world;
- @ElementList
- private List levels;
-
- private String name;
- private boolean locked = true;
-
- public int getId() {
- return id;
- }
-
- public List getLevels() {
- return levels;
- }
-
- public World getWorld() {
- return world;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- public int getFinishedLevelCount() {
- int count = 0;
- for (Level level : levels)
- if (level.isFinished())
- count++;
- return count;
- }
-
- public int getCollectedStarCount() {
- int count = 0;
- for (Level level : levels)
- count += level.getCollectedStarCodeForSQL().length();
- return count;
- }
-
- public int getAvailableStars() {
- return levels.size() * 3;
- }
-
- public int getCollectedEnergyCount() {
- int count = 0;
- for (Level level : levels)
- count += level.isEnergyCollected() ? 1 : 0;
- return count;
- }
-
- public int getAvailableEnergy() {
- return levels.size();
- }
-
- public void tryToUnlockFirstLevel() {
- Level firstLevel = getLevel(1);
- if (firstLevel != null)
- firstLevel.setLocked(false);
- }
-
- public Level getLevel(int id) {
- for (Level level : levels)
- if (level.getId() == id)
- return level;
- return null;
- }
-
- public Level getNextLevel(Level currentLevel) {
- return getLevel(currentLevel.getId() + 1);
- }
-
- public boolean isAllLevelsFinished() {
- for (Level level : levels)
- if (!level.isFinished())
- return false;
- return true;
- }
-
- public boolean isLastLevel(Level level) {
- return getNextLevel(level) == null;
- }
-
- public void reset() {
- for (Level level : levels)
- level.reset();
- setLocked(true);
- tryToUnlockFirstLevel();
- }
-
- public void setLocked(boolean locked) {
- this.locked = locked;
- }
-
- public boolean isLocked() {
- return locked;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.levels;
+
+import org.simpleframework.xml.Attribute;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.ElementList;
+import org.simpleframework.xml.Root;
+
+import java.util.List;
+
+import de.frajul.endlessroll.levels.worlds.World;
+
+/**
+ * Created by Julian on 07.12.2015.
+ */
+@Root
+public class LevelPack {
+
+ @Attribute
+ private int id;
+ @Element
+ private World world;
+ @ElementList
+ private List levels;
+
+ private String name;
+ private boolean locked = true;
+
+ public int getId() {
+ return id;
+ }
+
+ public List getLevels() {
+ return levels;
+ }
+
+ public World getWorld() {
+ return world;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getFinishedLevelCount() {
+ int count = 0;
+ for (Level level : levels)
+ if (level.isFinished())
+ count++;
+ return count;
+ }
+
+ public int getCollectedStarCount() {
+ int count = 0;
+ for (Level level : levels)
+ count += level.getCollectedStarCodeForSQL().length();
+ return count;
+ }
+
+ public int getAvailableStars() {
+ return levels.size() * 3;
+ }
+
+ public int getCollectedEnergyCount() {
+ int count = 0;
+ for (Level level : levels)
+ count += level.isEnergyCollected() ? 1 : 0;
+ return count;
+ }
+
+ public int getAvailableEnergy() {
+ return levels.size();
+ }
+
+ public void tryToUnlockFirstLevel() {
+ Level firstLevel = getLevel(1);
+ if (firstLevel != null)
+ firstLevel.setLocked(false);
+ }
+
+ public Level getLevel(int id) {
+ for (Level level : levels)
+ if (level.getId() == id)
+ return level;
+ return null;
+ }
+
+ public Level getNextLevel(Level currentLevel) {
+ return getLevel(currentLevel.getId() + 1);
+ }
+
+ public boolean isAllLevelsFinished() {
+ for (Level level : levels)
+ if (!level.isFinished())
+ return false;
+ return true;
+ }
+
+ public boolean isLastLevel(Level level) {
+ return getNextLevel(level) == null;
+ }
+
+ public void reset() {
+ for (Level level : levels)
+ level.reset();
+ setLocked(true);
+ tryToUnlockFirstLevel();
+ }
+
+ public void setLocked(boolean locked) {
+ this.locked = locked;
+ }
+
+ public boolean isLocked() {
+ return locked;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/levels/MoveComponent.java b/app/src/main/java/de/frajul/endlessroll/levels/MoveComponent.java
index 3879285..e4e30cc 100644
--- a/app/src/main/java/de/frajul/endlessroll/levels/MoveComponent.java
+++ b/app/src/main/java/de/frajul/endlessroll/levels/MoveComponent.java
@@ -1,94 +1,94 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.levels;
-
-import org.simpleframework.xml.Attribute;
-
-import de.frajul.endlessroll.data.Vector;
-
-public class MoveComponent {
-
- @Attribute
- private float length;
- @Attribute
- private float rotation;
- @Attribute
- private float startOffset;
- @Attribute
- private float direction;
- @Attribute
- private float speed;
- @Attribute
- private boolean hasPlayerXSpeed;
- @Attribute
- private float triggerDistance;
-
- public final float TRANSITION_VALUE = 0.001f;
- private Vector position;
- private float triangleWidth;
- private float triangleHeight;
-
- public void init(Vector obstaclePosition) {
- double rotationRadians = Math.toRadians(getRotation());
- double invertRotationRadians = Math.toRadians(90 - getRotation());
-
- this.triangleWidth = (float) (length * Math.sin(rotationRadians));
- this.triangleHeight = (float) (length * Math.sin(invertRotationRadians));
-
- float x = obstaclePosition.getX();
- float y = obstaclePosition.getY();
- x -= startOffset * triangleWidth;
- y -= startOffset * triangleHeight;
- this.position = new Vector(x, y);
- }
-
- public float getLength() {
- return length;
- }
-
- public float getRotation() {
- return rotation;
- }
-
- public float getStartOffset() {
- return startOffset;
- }
-
- public float getDirection() {
- return direction;
- }
-
- public float getSpeed() {
- return speed;
- }
-
- public boolean isHasPlayerXSpeed() {
- return hasPlayerXSpeed;
- }
-
- public float getTriggerDistance() {
- return triggerDistance;
- }
-
- public void calcSpeedForPlayerSpeed(float playerSpeed) {
- float xSpeed = playerSpeed;
- speed = xSpeed / new Vector(triangleWidth, triangleHeight).normalize().getX();
- speed /= TRANSITION_VALUE;
- }
-
- public Vector getMovementVector(float moveDirection) {
- return new Vector(triangleWidth, triangleHeight).normalize()
- .mul(moveDirection * getSpeed() * TRANSITION_VALUE);
- }
-
- public Vector getPositionForProgress(float progress) {
- return new Vector(position.x + triangleWidth * progress,
- position.y + triangleHeight * progress);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.levels;
+
+import org.simpleframework.xml.Attribute;
+
+import de.frajul.endlessroll.data.Vector;
+
+public class MoveComponent {
+
+ @Attribute
+ private float length;
+ @Attribute
+ private float rotation;
+ @Attribute
+ private float startOffset;
+ @Attribute
+ private float direction;
+ @Attribute
+ private float speed;
+ @Attribute
+ private boolean hasPlayerXSpeed;
+ @Attribute
+ private float triggerDistance;
+
+ public final float TRANSITION_VALUE = 0.001f;
+ private Vector position;
+ private float triangleWidth;
+ private float triangleHeight;
+
+ public void init(Vector obstaclePosition) {
+ double rotationRadians = Math.toRadians(getRotation());
+ double invertRotationRadians = Math.toRadians(90 - getRotation());
+
+ this.triangleWidth = (float) (length * Math.sin(rotationRadians));
+ this.triangleHeight = (float) (length * Math.sin(invertRotationRadians));
+
+ float x = obstaclePosition.getX();
+ float y = obstaclePosition.getY();
+ x -= startOffset * triangleWidth;
+ y -= startOffset * triangleHeight;
+ this.position = new Vector(x, y);
+ }
+
+ public float getLength() {
+ return length;
+ }
+
+ public float getRotation() {
+ return rotation;
+ }
+
+ public float getStartOffset() {
+ return startOffset;
+ }
+
+ public float getDirection() {
+ return direction;
+ }
+
+ public float getSpeed() {
+ return speed;
+ }
+
+ public boolean isHasPlayerXSpeed() {
+ return hasPlayerXSpeed;
+ }
+
+ public float getTriggerDistance() {
+ return triggerDistance;
+ }
+
+ public void calcSpeedForPlayerSpeed(float playerSpeed) {
+ float xSpeed = playerSpeed;
+ speed = xSpeed / new Vector(triangleWidth, triangleHeight).normalize().getX();
+ speed /= TRANSITION_VALUE;
+ }
+
+ public Vector getMovementVector(float moveDirection) {
+ return new Vector(triangleWidth, triangleHeight).normalize()
+ .mul(moveDirection * getSpeed() * TRANSITION_VALUE);
+ }
+
+ public Vector getPositionForProgress(float progress) {
+ return new Vector(position.x + triangleWidth * progress,
+ position.y + triangleHeight * progress);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/levels/ObstacleData.java b/app/src/main/java/de/frajul/endlessroll/levels/ObstacleData.java
index 8607b79..54f3dd0 100644
--- a/app/src/main/java/de/frajul/endlessroll/levels/ObstacleData.java
+++ b/app/src/main/java/de/frajul/endlessroll/levels/ObstacleData.java
@@ -1,100 +1,100 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.levels;
-
-import org.simpleframework.xml.Attribute;
-import org.simpleframework.xml.Element;
-
-/**
- * Created by Julian on 07.12.2015.
- */
-public class ObstacleData {
-
- @Attribute
- private boolean floating;
- @Attribute
- private boolean moving;
- @Attribute
- private boolean deadly;
- @Attribute
- private float leftEdge;
- @Attribute
- private float rightEdge;
- @Attribute
- private float height;
- @Attribute
- private float y;
- @Element(required = false)
- private MoveComponent moveComponent;
-
- public boolean isFloating() {
- return floating;
- }
-
- public boolean isMoving() {
- return moving;
- }
-
- public boolean isDeadly() {
- return deadly;
- }
-
- public float getX() {
- return leftEdge + getWidth() / 2;
- }
-
- public float getWidth() {
- return rightEdge - leftEdge;
- }
-
- public float getHeight() {
- return height;
- }
-
- public float getY() {
- return y;
- }
-
- public MoveComponent getMoveComponent() {
- return moveComponent;
- }
-
-
- //Only for glTestScreen
- public void setFloating(boolean floating) {
- this.floating = floating;
- }
-
- public void setMoving(boolean moving) {
- this.moving = moving;
- }
-
- public void setDeadly(boolean deadly) {
- this.deadly = deadly;
- }
-
- public void setLeftEdge(float leftEdge) {
- this.leftEdge = leftEdge;
- }
-
- public void setRightEdge(float rightEdge) {
- this.rightEdge = rightEdge;
- }
-
- public void setHeight(float height) {
- this.height = height;
- }
-
- public void setY(float y) {
- this.y = y;
- }
-
- public void setMoveComponent(MoveComponent moveComponent) {
- this.moveComponent = moveComponent;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.levels;
+
+import org.simpleframework.xml.Attribute;
+import org.simpleframework.xml.Element;
+
+/**
+ * Created by Julian on 07.12.2015.
+ */
+public class ObstacleData {
+
+ @Attribute
+ private boolean floating;
+ @Attribute
+ private boolean moving;
+ @Attribute
+ private boolean deadly;
+ @Attribute
+ private float leftEdge;
+ @Attribute
+ private float rightEdge;
+ @Attribute
+ private float height;
+ @Attribute
+ private float y;
+ @Element(required = false)
+ private MoveComponent moveComponent;
+
+ public boolean isFloating() {
+ return floating;
+ }
+
+ public boolean isMoving() {
+ return moving;
+ }
+
+ public boolean isDeadly() {
+ return deadly;
+ }
+
+ public float getX() {
+ return leftEdge + getWidth() / 2;
+ }
+
+ public float getWidth() {
+ return rightEdge - leftEdge;
+ }
+
+ public float getHeight() {
+ return height;
+ }
+
+ public float getY() {
+ return y;
+ }
+
+ public MoveComponent getMoveComponent() {
+ return moveComponent;
+ }
+
+
+ //Only for glTestScreen
+ public void setFloating(boolean floating) {
+ this.floating = floating;
+ }
+
+ public void setMoving(boolean moving) {
+ this.moving = moving;
+ }
+
+ public void setDeadly(boolean deadly) {
+ this.deadly = deadly;
+ }
+
+ public void setLeftEdge(float leftEdge) {
+ this.leftEdge = leftEdge;
+ }
+
+ public void setRightEdge(float rightEdge) {
+ this.rightEdge = rightEdge;
+ }
+
+ public void setHeight(float height) {
+ this.height = height;
+ }
+
+ public void setY(float y) {
+ this.y = y;
+ }
+
+ public void setMoveComponent(MoveComponent moveComponent) {
+ this.moveComponent = moveComponent;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/levels/PositionData.java b/app/src/main/java/de/frajul/endlessroll/levels/PositionData.java
index 84b222f..ca011a6 100644
--- a/app/src/main/java/de/frajul/endlessroll/levels/PositionData.java
+++ b/app/src/main/java/de/frajul/endlessroll/levels/PositionData.java
@@ -1,30 +1,30 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.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;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.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;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/levels/TileData.java b/app/src/main/java/de/frajul/endlessroll/levels/TileData.java
index 79f9239..bf68dc8 100644
--- a/app/src/main/java/de/frajul/endlessroll/levels/TileData.java
+++ b/app/src/main/java/de/frajul/endlessroll/levels/TileData.java
@@ -1,26 +1,26 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.levels;
-
-import org.simpleframework.xml.Attribute;
-
-public class TileData {
-
- @Attribute
- private float x;
- @Attribute
- private float width;
-
- public float getX() {
- return x;
- }
-
- public float getWidth() {
- return width;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.levels;
+
+import org.simpleframework.xml.Attribute;
+
+public class TileData {
+
+ @Attribute
+ private float x;
+ @Attribute
+ private float width;
+
+ public float getX() {
+ return x;
+ }
+
+ public float getWidth() {
+ return width;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/levels/worlds/World.java b/app/src/main/java/de/frajul/endlessroll/levels/worlds/World.java
index 78123ce..2972e0d 100644
--- a/app/src/main/java/de/frajul/endlessroll/levels/worlds/World.java
+++ b/app/src/main/java/de/frajul/endlessroll/levels/worlds/World.java
@@ -1,93 +1,93 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.levels.worlds;
-
-import android.support.annotation.DrawableRes;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-
-/**
- * Created by Julian on 14.11.2016.
- */
-
-public enum World {
-
- GRASSLANDS(R.drawable.world_previews_grasslands, R.drawable.terrain_t_grass,
- R.drawable.terrain_c_grass, R.drawable.obstacles_grass,
- R.drawable.backgrounds_game_grass),
- ICY_MOUNTAINS(R.drawable.world_previews_icymountains, R.drawable.terrain_t_ice,
- R.drawable.terrain_c_ice, R.drawable.obstacles_snow, R.drawable.backgrounds_game_snow),
- UNDERWATER(R.drawable.world_previews_comingsoon, R.drawable.terrain_t_underwater, R.drawable.terrain_c_underwater, R.drawable.obstacles_underwater, R.drawable.backgrounds_game_underwater, R.drawable.background_game_underwater_2, R.drawable.background_game_underwater_3);
-// TEST_WORLD_GRASS(R.drawable.world_previews_grasslands, R.drawable.terrain_t_grass,
-// R.drawable.terrain_c_grass, R.drawable.juri_obstacles_grass,
-// R.drawable.backgrounds_game_grass, R.drawable.juri_background_game_grass_2, R.drawable.juri_background_game_grass_3),
-// TEST_WORLD_SNOW(R.drawable.world_previews_icymountains, R.drawable.terrain_t_ice,
-// R.drawable.terrain_c_ice, R.drawable.obstacles_snow, R.drawable.backgrounds_game_snow, R.drawable.juri_background_game_snow_2, R.drawable.juri_background_game_snow_3);
-
- @DrawableRes
- private int previewId;
- @DrawableRes
- private int terrainId;
- @DrawableRes
- private int ceilingId;
- @DrawableRes
- private int obstacleId;
- private List backgroundIds;
-
- private List backgroundTextures = new ArrayList<>();
- private Texture terrain;
- private Texture ceiling;
- private Texture obstacle;
-
- World(@DrawableRes int previewId, @DrawableRes int terrainId, @DrawableRes int ceilingId, @DrawableRes int obstacleId, @DrawableRes Integer... backgroundIds) {
- this.previewId = previewId;
- this.terrainId = terrainId;
- this.ceilingId = ceilingId;
- this.obstacleId = obstacleId;
- this.backgroundIds = Arrays.asList(backgroundIds);
- }
-
- public static void loadAllSpecificTextures(TexturePack texturePack) {
- for (World world : values())
- world.loadSpecificTextures(texturePack);
- }
-
- private void loadSpecificTextures(TexturePack texturePack) {
- for (int backgroundId : backgroundIds)
- backgroundTextures.add(texturePack.loadTexture(backgroundId));
- terrain = texturePack.loadTexture(terrainId);
- ceiling = texturePack.loadTexture(ceilingId);
- obstacle = texturePack.loadAtlas(obstacleId, 8, 8);
- }
-
- public int getPreviewId() {
- return previewId;
- }
-
- public List getBackgroundTextures() {
- return backgroundTextures;
- }
-
- public Texture getTerrainTexture() {
- return terrain;
- }
-
- public Texture getCeilingTexture() {
- return ceiling;
- }
-
- public Texture getObstacleTexture() {
- return obstacle;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.levels.worlds;
+
+import android.support.annotation.DrawableRes;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+
+/**
+ * Created by Julian on 14.11.2016.
+ */
+
+public enum World {
+
+ GRASSLANDS(R.drawable.world_previews_grasslands, R.drawable.terrain_t_grass,
+ R.drawable.terrain_c_grass, R.drawable.obstacles_grass,
+ R.drawable.backgrounds_game_grass),
+ ICY_MOUNTAINS(R.drawable.world_previews_icymountains, R.drawable.terrain_t_ice,
+ R.drawable.terrain_c_ice, R.drawable.obstacles_snow, R.drawable.backgrounds_game_snow),
+ UNDERWATER(R.drawable.world_previews_comingsoon, R.drawable.terrain_t_underwater, R.drawable.terrain_c_underwater, R.drawable.obstacles_underwater, R.drawable.backgrounds_game_underwater, R.drawable.background_game_underwater_2, R.drawable.background_game_underwater_3);
+// TEST_WORLD_GRASS(R.drawable.world_previews_grasslands, R.drawable.terrain_t_grass,
+// R.drawable.terrain_c_grass, R.drawable.juri_obstacles_grass,
+// R.drawable.backgrounds_game_grass, R.drawable.juri_background_game_grass_2, R.drawable.juri_background_game_grass_3),
+// TEST_WORLD_SNOW(R.drawable.world_previews_icymountains, R.drawable.terrain_t_ice,
+// R.drawable.terrain_c_ice, R.drawable.obstacles_snow, R.drawable.backgrounds_game_snow, R.drawable.juri_background_game_snow_2, R.drawable.juri_background_game_snow_3);
+
+ @DrawableRes
+ private int previewId;
+ @DrawableRes
+ private int terrainId;
+ @DrawableRes
+ private int ceilingId;
+ @DrawableRes
+ private int obstacleId;
+ private List backgroundIds;
+
+ private List backgroundTextures = new ArrayList<>();
+ private Texture terrain;
+ private Texture ceiling;
+ private Texture obstacle;
+
+ World(@DrawableRes int previewId, @DrawableRes int terrainId, @DrawableRes int ceilingId, @DrawableRes int obstacleId, @DrawableRes Integer... backgroundIds) {
+ this.previewId = previewId;
+ this.terrainId = terrainId;
+ this.ceilingId = ceilingId;
+ this.obstacleId = obstacleId;
+ this.backgroundIds = Arrays.asList(backgroundIds);
+ }
+
+ public static void loadAllSpecificTextures(TexturePack texturePack) {
+ for (World world : values())
+ world.loadSpecificTextures(texturePack);
+ }
+
+ private void loadSpecificTextures(TexturePack texturePack) {
+ for (int backgroundId : backgroundIds)
+ backgroundTextures.add(texturePack.loadTexture(backgroundId));
+ terrain = texturePack.loadTexture(terrainId);
+ ceiling = texturePack.loadTexture(ceilingId);
+ obstacle = texturePack.loadAtlas(obstacleId, 8, 8);
+ }
+
+ public int getPreviewId() {
+ return previewId;
+ }
+
+ public List getBackgroundTextures() {
+ return backgroundTextures;
+ }
+
+ public Texture getTerrainTexture() {
+ return terrain;
+ }
+
+ public Texture getCeilingTexture() {
+ return ceiling;
+ }
+
+ public Texture getObstacleTexture() {
+ return obstacle;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/DataStorageHandler.java b/app/src/main/java/de/frajul/endlessroll/main/DataStorageHandler.java
index 453b952..6c7606a 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/DataStorageHandler.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/DataStorageHandler.java
@@ -1,135 +1,135 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.SharedPreferences;
-
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.sqlDatabase.MyDatabase;
-import de.frajul.endlessroll.user.ToolSlotSettings;
-import de.frajul.endlessroll.user.User;
-
-/**
- * Created by Julian on 25.04.2016.
- */
-public class DataStorageHandler {
-
- private final String PREFERENCES_NAME = "GamePreferences";
- private final String SOUNDS_MUTED = "SoundsMuted";
- private final String MUSIC_MUTED = "MusicMuted";
- private final String USER_EP = "EP";
-
- private final String USER_LEVEL = "Level";
- 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 final String USER_PLAYER_SHAPE = "PlayerShape";
- private final String TOOL_SHOP_TUTORIAL_FINISHED = "ToolShopTutorialFinished";
- private final String SHOW_FPS = "ShowFps";
-
- private SharedPreferences preferences;
- private MyDatabase database;
-
- public DataStorageHandler(Activity activity) {
- preferences = activity.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
- database = new MyDatabase(activity);
- }
-
- public boolean readIsShowFps() {
- return preferences.getBoolean(SHOW_FPS, false);
- }
-
- public void writeShowFps(boolean showFps) {
- SharedPreferences.Editor editor = preferences.edit();
- editor.putBoolean(SHOW_FPS, showFps);
- editor.apply();
- }
-
- public boolean readIsSoundsMuted() {
- return preferences.getBoolean(SOUNDS_MUTED, false);
- }
-
- public void writeSoundsMuted(boolean soundsMuted) {
- SharedPreferences.Editor editor = preferences.edit();
- editor.putBoolean(SOUNDS_MUTED, soundsMuted);
- editor.apply();
- }
-
- public boolean readIsMusicMuted() {
- return preferences.getBoolean(MUSIC_MUTED, false);
- }
-
- public void writeMusicMuted(boolean musicMuted) {
- SharedPreferences.Editor editor = preferences.edit();
- editor.putBoolean(MUSIC_MUTED, musicMuted);
- editor.apply();
- }
-
- public User readUserData(User.LvUpListener lvUpListener) throws Exception {
- int ep = preferences.getInt(USER_EP, 0);
- int level = preferences.getInt(USER_LEVEL, 1);
- int stars = preferences.getInt(USER_STARS, 0);
- int energy = preferences.getInt(USER_ENERGY, 0);
- int toolsLocked = preferences.getInt(USER_TOOLS_LOCKED, 3);
- String tool1 = preferences.getString(USER_TOOL_1, ToolType.RAMP.name());
- String tool2 = preferences.getString(USER_TOOL_2, "null");
- String tool3 = preferences.getString(USER_TOOL_3, "null");
- String tool4 = preferences.getString(USER_TOOL_4, "null");
- ToolSlotSettings toolSlotSettings = new ToolSlotSettings(tool1, tool2, tool3, tool4,
- toolsLocked);
- String playerShapeName = preferences.getString(USER_PLAYER_SHAPE, PlayerShape.BALL.name());
- PlayerShape playerShape;
- try {
- playerShape = PlayerShape.valueOf(playerShapeName);
- } catch (Exception e) {
- playerShape = PlayerShape.BALL;
- }
- return new User(lvUpListener, ep, level, stars, energy, toolSlotSettings, playerShape);
- }
-
- public void writeUserData(User user) {
- SharedPreferences.Editor editor = preferences.edit();
- editor.putInt(USER_EP, user.getEp());
- editor.putInt(USER_LEVEL, user.getLevel());
- editor.putInt(USER_STARS, user.getStarCount());
- editor.putInt(USER_ENERGY, user.getEnergyCount());
- editor.putString(USER_TOOL_1, toolSlotToString(user.getToolSlotSettings(), 0));
- editor.putString(USER_TOOL_2, toolSlotToString(user.getToolSlotSettings(), 1));
- editor.putString(USER_TOOL_3, toolSlotToString(user.getToolSlotSettings(), 2));
- editor.putString(USER_TOOL_4, toolSlotToString(user.getToolSlotSettings(), 3));
- editor.putInt(USER_TOOLS_LOCKED, user.getToolSlotSettings().getLockedSlotCount());
- editor.putString(USER_PLAYER_SHAPE, user.getCurrentPlayerShape().name());
- editor.apply();
- }
-
- private String toolSlotToString(ToolSlotSettings toolSlotSettings, int index) {
- ToolType toolType = toolSlotSettings.get(index).getToolType();
- return toolType == null ? "null" : toolType.toString();
- }
-
- public void writeToolShopTutorialFinished(boolean finished) {
- SharedPreferences.Editor editor = preferences.edit();
- editor.putBoolean(TOOL_SHOP_TUTORIAL_FINISHED, finished);
- editor.apply();
- }
-
- public boolean readToolShopTutorialFinished() {
- return preferences.getBoolean(TOOL_SHOP_TUTORIAL_FINISHED, false);
- }
-
- public MyDatabase getDatabase() {
- return database;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.sqlDatabase.MyDatabase;
+import de.frajul.endlessroll.user.ToolSlotSettings;
+import de.frajul.endlessroll.user.User;
+
+/**
+ * Created by Julian on 25.04.2016.
+ */
+public class DataStorageHandler {
+
+ private final String PREFERENCES_NAME = "GamePreferences";
+ private final String SOUNDS_MUTED = "SoundsMuted";
+ private final String MUSIC_MUTED = "MusicMuted";
+ private final String USER_EP = "EP";
+
+ private final String USER_LEVEL = "Level";
+ 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 final String USER_PLAYER_SHAPE = "PlayerShape";
+ private final String TOOL_SHOP_TUTORIAL_FINISHED = "ToolShopTutorialFinished";
+ private final String SHOW_FPS = "ShowFps";
+
+ private SharedPreferences preferences;
+ private MyDatabase database;
+
+ public DataStorageHandler(Activity activity) {
+ preferences = activity.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
+ database = new MyDatabase(activity);
+ }
+
+ public boolean readIsShowFps() {
+ return preferences.getBoolean(SHOW_FPS, false);
+ }
+
+ public void writeShowFps(boolean showFps) {
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putBoolean(SHOW_FPS, showFps);
+ editor.apply();
+ }
+
+ public boolean readIsSoundsMuted() {
+ return preferences.getBoolean(SOUNDS_MUTED, false);
+ }
+
+ public void writeSoundsMuted(boolean soundsMuted) {
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putBoolean(SOUNDS_MUTED, soundsMuted);
+ editor.apply();
+ }
+
+ public boolean readIsMusicMuted() {
+ return preferences.getBoolean(MUSIC_MUTED, false);
+ }
+
+ public void writeMusicMuted(boolean musicMuted) {
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putBoolean(MUSIC_MUTED, musicMuted);
+ editor.apply();
+ }
+
+ public User readUserData(User.LvUpListener lvUpListener) throws Exception {
+ int ep = preferences.getInt(USER_EP, 0);
+ int level = preferences.getInt(USER_LEVEL, 1);
+ int stars = preferences.getInt(USER_STARS, 0);
+ int energy = preferences.getInt(USER_ENERGY, 0);
+ int toolsLocked = preferences.getInt(USER_TOOLS_LOCKED, 3);
+ String tool1 = preferences.getString(USER_TOOL_1, ToolType.RAMP.name());
+ String tool2 = preferences.getString(USER_TOOL_2, "null");
+ String tool3 = preferences.getString(USER_TOOL_3, "null");
+ String tool4 = preferences.getString(USER_TOOL_4, "null");
+ ToolSlotSettings toolSlotSettings = new ToolSlotSettings(tool1, tool2, tool3, tool4,
+ toolsLocked);
+ String playerShapeName = preferences.getString(USER_PLAYER_SHAPE, PlayerShape.BALL.name());
+ PlayerShape playerShape;
+ try {
+ playerShape = PlayerShape.valueOf(playerShapeName);
+ } catch (Exception e) {
+ playerShape = PlayerShape.BALL;
+ }
+ return new User(lvUpListener, ep, level, stars, energy, toolSlotSettings, playerShape);
+ }
+
+ public void writeUserData(User user) {
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putInt(USER_EP, user.getEp());
+ editor.putInt(USER_LEVEL, user.getLevel());
+ editor.putInt(USER_STARS, user.getStarCount());
+ editor.putInt(USER_ENERGY, user.getEnergyCount());
+ editor.putString(USER_TOOL_1, toolSlotToString(user.getToolSlotSettings(), 0));
+ editor.putString(USER_TOOL_2, toolSlotToString(user.getToolSlotSettings(), 1));
+ editor.putString(USER_TOOL_3, toolSlotToString(user.getToolSlotSettings(), 2));
+ editor.putString(USER_TOOL_4, toolSlotToString(user.getToolSlotSettings(), 3));
+ editor.putInt(USER_TOOLS_LOCKED, user.getToolSlotSettings().getLockedSlotCount());
+ editor.putString(USER_PLAYER_SHAPE, user.getCurrentPlayerShape().name());
+ editor.apply();
+ }
+
+ private String toolSlotToString(ToolSlotSettings toolSlotSettings, int index) {
+ ToolType toolType = toolSlotSettings.get(index).getToolType();
+ return toolType == null ? "null" : toolType.toString();
+ }
+
+ public void writeToolShopTutorialFinished(boolean finished) {
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putBoolean(TOOL_SHOP_TUTORIAL_FINISHED, finished);
+ editor.apply();
+ }
+
+ public boolean readToolShopTutorialFinished() {
+ return preferences.getBoolean(TOOL_SHOP_TUTORIAL_FINISHED, false);
+ }
+
+ public MyDatabase getDatabase() {
+ return database;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/ExceptionHandler.java b/app/src/main/java/de/frajul/endlessroll/main/ExceptionHandler.java
index f8d988b..3a23b4b 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/ExceptionHandler.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/ExceptionHandler.java
@@ -1,17 +1,17 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main;
-
-/**
- * Created by Julian on 06.02.2016.
- */
-public interface ExceptionHandler {
-
- void onException(Exception e);
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main;
+
+/**
+ * Created by Julian on 06.02.2016.
+ */
+public interface ExceptionHandler {
+
+ void onException(Exception e);
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/GameActivity.java b/app/src/main/java/de/frajul/endlessroll/main/GameActivity.java
index 8734110..4ed2bce 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/GameActivity.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/GameActivity.java
@@ -1,349 +1,349 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main;
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.content.Context;
-import android.content.pm.ConfigurationInfo;
-import android.graphics.Typeface;
-import android.os.Bundle;
-import android.view.KeyEvent;
-import android.view.Window;
-import android.view.WindowManager;
-import android.widget.RelativeLayout;
-
-import com.google.android.gms.ads.MobileAds;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.entities.shapes.Task;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.LevelManager;
-import de.frajul.endlessroll.levels.LevelPack;
-import de.frajul.endlessroll.main.screens.GLTestScreen;
-import de.frajul.endlessroll.main.screens.GameScreen;
-import de.frajul.endlessroll.main.screens.LevelsScreen;
-import de.frajul.endlessroll.main.screens.PlayerShapeShopScreen;
-import de.frajul.endlessroll.main.screens.PreStartScreen;
-import de.frajul.endlessroll.main.screens.Screen;
-import de.frajul.endlessroll.main.screens.ScreenFlipper;
-import de.frajul.endlessroll.main.screens.SettingsScreen;
-import de.frajul.endlessroll.main.screens.StartScreen;
-import de.frajul.endlessroll.main.screens.ToolShopScreen;
-import de.frajul.endlessroll.main.screens.WorldsScreen;
-import de.frajul.endlessroll.main.tutorial.BreakPoint;
-import de.frajul.endlessroll.main.tutorial.TutorialManager;
-import de.frajul.endlessroll.main.tutorial.TutorialView;
-import de.frajul.endlessroll.rendering.renderer.GameRenderer;
-import de.frajul.endlessroll.sounds.SoundManager;
-import de.frajul.endlessroll.sqlDatabase.MyDatabase;
-import de.frajul.endlessroll.user.User;
-import de.frajul.endlessroll.views.LevelupMessage;
-import de.frajul.endlessroll.views.TaskCompletedMessage;
-
-/**
- * Created by Julian on 06.02.2016.
- */
-public class GameActivity extends Activity implements ExceptionHandler, User.LvUpListener {
-
- public final static boolean IS_DEVELOPER = false;
-
- private DataStorageHandler dataStorageHandler;
- private LevelManager levelManager;
- private SoundManager soundManager;
- private User user;
- private Typeface typeface;
- private TutorialManager tutorialManager;
-
- private List alreadyUnlockedPlayerShapes = new ArrayList<>();
-
- private MyGlSurfaceView glSurfaceView;
- private ScreenFlipper flipper;
- private LevelsScreen levelsScreen;
- private GameScreen gameScreen;
-
- private LevelupMessage levelupMessage;
- private TaskCompletedMessage taskCompletedMessage;
- private TutorialView tutorialView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- try {
- GameLog.d("OnCreate");
- super.onCreate(savedInstanceState);
- super.requestWindowFeature(Window.FEATURE_NO_TITLE);
- super.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
-
- MobileAds.initialize(this, "ca-app-pub-7069685539417779~2685294395");
- if (!hasGLES20())
- throw new Exception("OpenGL ES 2.0 not supported");
-
- dataStorageHandler = new DataStorageHandler(this);
- dataStorageHandler.getDatabase().open();
- dataStorageHandler.getDatabase().readToolData();
- dataStorageHandler.getDatabase().close();
-
- user = dataStorageHandler.readUserData(this);
-
- soundManager = new SoundManager(this);
- soundManager.setSoundsMuted(dataStorageHandler.readIsSoundsMuted());
- soundManager.setMusicMuted(dataStorageHandler.readIsMusicMuted());
-
- levelManager = new LevelManager(this, dataStorageHandler);
- tutorialManager = new TutorialManager(this);
- tutorialManager.getToolShopTutorial()
- .setFinished(dataStorageHandler.readToolShopTutorialFinished());
-
- checkForAlreadyUnlockedPlayerShapes();
-
- this.glSurfaceView = new MyGlSurfaceView(this, new GameRenderer(this));
- typeface = Typeface.createFromAsset(getAssets(), "fontBaron.ttf");
-
- PreStartScreen preStartScreen = new PreStartScreen(this);
- StartScreen startScreen = new StartScreen(this, glSurfaceView);
- GLTestScreen glTestScreen = new GLTestScreen(this, glSurfaceView);
- WorldsScreen worldsScreen = new WorldsScreen(this);
- levelsScreen = new LevelsScreen(this);
- ToolShopScreen toolShopScreen = new ToolShopScreen(this);
- PlayerShapeShopScreen shapeShopScreen = new PlayerShapeShopScreen(this);
- gameScreen = new GameScreen(this, glSurfaceView);
- SettingsScreen settingsScreen = new SettingsScreen(this);
-
- levelupMessage = new LevelupMessage(this);
- taskCompletedMessage = new TaskCompletedMessage(this);
- tutorialView = new TutorialView(this);
-
- flipper = new ScreenFlipper(this, preStartScreen, startScreen, worldsScreen,
- levelsScreen, gameScreen, toolShopScreen, glTestScreen, settingsScreen,
- shapeShopScreen);
- RelativeLayout relativeLayout = new RelativeLayout(this);
- relativeLayout.addView(glSurfaceView);
- relativeLayout.addView(flipper);
- relativeLayout.addView(levelupMessage.getLayout());
- relativeLayout.addView(taskCompletedMessage.getLayout());
- relativeLayout.addView(tutorialView.getLayout());
- setContentView(relativeLayout);
- } catch (Exception e) {
- onException(e);
- }
- }
-
- public void exitGame() {
- super.finish();
- }
-
- public boolean isShortMenuInGameActive() {
- return gameScreen.getGameViewManager().isShortMenuVisible();
- }
-
- public void flipToScreen(final Screen.ScreenType screen, final Screen.ScreenType caller) {
- if (screen != Screen.ScreenType.NONE && flipper.getCurrentScreen().getType() != screen) {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- flipper.showScreen(screen, caller);
- }
- });
- }
- }
-
- public void flipToScreen(final Screen.ScreenType screen) {
- if (screen != Screen.ScreenType.NONE && flipper.getCurrentScreen().getType() != screen) {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- flipper.showScreen(screen, flipper.getCurrentScreen().getType());
- }
- });
- }
- }
-
- public void flipToScreenNonUiThreaded(final Screen.ScreenType screen) {
- if (screen != Screen.ScreenType.NONE && flipper.getCurrentScreen().getType() != screen) {
- flipper.showScreen(screen, flipper.getCurrentScreen().getType());
- }
- }
-
- public void onSurfaceChanged() {
- if (flipper.getCurrentScreen().getType() == Screen.ScreenType.PRE_START)
- flipToScreen(Screen.ScreenType.START);
- }
-
- public void checkForAlreadyUnlockedPlayerShapes() {
- alreadyUnlockedPlayerShapes.clear();
- for (PlayerShape shape : PlayerShape.values()) {
- Task task = shape.getUnlockTask();
- task.update(levelManager);
- if (task.isConditionFulfilled())
- alreadyUnlockedPlayerShapes.add(shape);
- }
- }
-
- public void showNewFinishedPlayerShapeTasks() {
- List newUnlockedShapes = new ArrayList<>();
- for (PlayerShape shape : PlayerShape.values()) {
- Task task = shape.getUnlockTask();
- task.update(levelManager);
- if (task.isConditionFulfilled() && !alreadyUnlockedPlayerShapes.contains(shape)) {
- alreadyUnlockedPlayerShapes.add(shape);
- newUnlockedShapes.add(shape);
- }
- }
- if (!newUnlockedShapes.isEmpty())
- onTasksCompleted(newUnlockedShapes);
- }
-
- public void onWorldSelected(LevelPack levelPack) {
- levelsScreen.onLevelPackSelected(levelPack);
- }
-
- public void startGame(final LevelPack levelPack, final Level level) {
- flipToScreen(Screen.ScreenType.GAME);
- gameScreen.startGame(levelPack, level);
- }
-
- @Override
- public void onLvUp(final int level, boolean showLvUpMessage) {
- dataStorageHandler.writeUserData(user);
- if (showLvUpMessage) {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- levelupMessage.show(level);
- }
- });
- tutorialManager.onLvUp(user);
- }
- }
-
- public void onTasksCompleted(final List shapes) {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- taskCompletedMessage.show(shapes);
- }
- });
- }
-
- public void showTutorial(final List breakPoints) {
- if (!gameScreen.isLevelFinished()) {
- gameScreen.setGamePausedWithoutMenu();
- }
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- tutorialView.show(breakPoints);
- }
- });
- }
-
- public void onTutorialViewHidden() {
- if (!gameScreen.isLevelFinished())
- gameScreen.onResume();
- }
-
- public void resetData() {
- user.clearData();
- dataStorageHandler.writeUserData(user);
- dataStorageHandler.writeToolShopTutorialFinished(false);
- levelManager.reset();
- tutorialManager.resetAllTutorials();
- MyDatabase database = dataStorageHandler.getDatabase();
- database.open();
- database.clearLevelProgess();
- database.clearLevelPackLocked();
- for (ToolType type : ToolType.values())
- type.reset();
- database.writeToolData();
- database.close();
- checkForAlreadyUnlockedPlayerShapes();
- }
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- try {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- if (tutorialView.isShowingTutorial())
- tutorialView.onClick(null);
- else
- flipper.getCurrentScreen().onBackKeyDown();
- return true;
- }
- } catch (Exception e) {
- onException(e);
- }
- return super.onKeyDown(keyCode, event);
- }
-
- @Override
- public void onException(Exception e) {
- GameLog.e(e);
- super.finish();
- }
-
- @Override
- protected void onPause() {
- GameLog.d("OnPause");
- glSurfaceView.onPause();
- if (flipper.getCurrentScreen() == gameScreen)
- gameScreen.onPause();
- soundManager.activityPause();
- super.onPause();
- }
-
- @Override
- protected void onResume() {
- GameLog.d("OnResume");
- glSurfaceView.onResume();
- soundManager.activityResume();
- super.onResume();
- }
-
- @Override
- protected void onDestroy() {
- GameLog.d("OnDestroy");
- soundManager.destroy();
-
- super.onDestroy();
- }
-
- private boolean hasGLES20() {
- ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
- ConfigurationInfo info = am.getDeviceConfigurationInfo();
- return info.reqGlEsVersion >= 0x20000;
- }
-
- public User getUser() {
- return user;
- }
-
- public DataStorageHandler getDataStorageHandler() {
- return dataStorageHandler;
- }
-
- public SoundManager getSoundManager() {
- return soundManager;
- }
-
- public Typeface getTypeface() {
- return typeface;
- }
-
- public LevelManager getLevelManager() {
- return levelManager;
- }
-
- public TutorialManager getTutorialManager() {
- return tutorialManager;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main;
+
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.content.Context;
+import android.content.pm.ConfigurationInfo;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.RelativeLayout;
+
+import com.google.android.gms.ads.MobileAds;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.entities.shapes.Task;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.LevelManager;
+import de.frajul.endlessroll.levels.LevelPack;
+import de.frajul.endlessroll.main.screens.GLTestScreen;
+import de.frajul.endlessroll.main.screens.GameScreen;
+import de.frajul.endlessroll.main.screens.LevelsScreen;
+import de.frajul.endlessroll.main.screens.PlayerShapeShopScreen;
+import de.frajul.endlessroll.main.screens.PreStartScreen;
+import de.frajul.endlessroll.main.screens.Screen;
+import de.frajul.endlessroll.main.screens.ScreenFlipper;
+import de.frajul.endlessroll.main.screens.SettingsScreen;
+import de.frajul.endlessroll.main.screens.StartScreen;
+import de.frajul.endlessroll.main.screens.ToolShopScreen;
+import de.frajul.endlessroll.main.screens.WorldsScreen;
+import de.frajul.endlessroll.main.tutorial.BreakPoint;
+import de.frajul.endlessroll.main.tutorial.TutorialManager;
+import de.frajul.endlessroll.main.tutorial.TutorialView;
+import de.frajul.endlessroll.rendering.renderer.GameRenderer;
+import de.frajul.endlessroll.sounds.SoundManager;
+import de.frajul.endlessroll.sqlDatabase.MyDatabase;
+import de.frajul.endlessroll.user.User;
+import de.frajul.endlessroll.views.LevelupMessage;
+import de.frajul.endlessroll.views.TaskCompletedMessage;
+
+/**
+ * Created by Julian on 06.02.2016.
+ */
+public class GameActivity extends Activity implements ExceptionHandler, User.LvUpListener {
+
+ public final static boolean IS_DEVELOPER = false;
+
+ private DataStorageHandler dataStorageHandler;
+ private LevelManager levelManager;
+ private SoundManager soundManager;
+ private User user;
+ private Typeface typeface;
+ private TutorialManager tutorialManager;
+
+ private List alreadyUnlockedPlayerShapes = new ArrayList<>();
+
+ private MyGlSurfaceView glSurfaceView;
+ private ScreenFlipper flipper;
+ private LevelsScreen levelsScreen;
+ private GameScreen gameScreen;
+
+ private LevelupMessage levelupMessage;
+ private TaskCompletedMessage taskCompletedMessage;
+ private TutorialView tutorialView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ try {
+ GameLog.d("OnCreate");
+ super.onCreate(savedInstanceState);
+ super.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ super.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+
+ MobileAds.initialize(this, "ca-app-pub-7069685539417779~2685294395");
+ if (!hasGLES20())
+ throw new Exception("OpenGL ES 2.0 not supported");
+
+ dataStorageHandler = new DataStorageHandler(this);
+ dataStorageHandler.getDatabase().open();
+ dataStorageHandler.getDatabase().readToolData();
+ dataStorageHandler.getDatabase().close();
+
+ user = dataStorageHandler.readUserData(this);
+
+ soundManager = new SoundManager(this);
+ soundManager.setSoundsMuted(dataStorageHandler.readIsSoundsMuted());
+ soundManager.setMusicMuted(dataStorageHandler.readIsMusicMuted());
+
+ levelManager = new LevelManager(this, dataStorageHandler);
+ tutorialManager = new TutorialManager(this);
+ tutorialManager.getToolShopTutorial()
+ .setFinished(dataStorageHandler.readToolShopTutorialFinished());
+
+ checkForAlreadyUnlockedPlayerShapes();
+
+ this.glSurfaceView = new MyGlSurfaceView(this, new GameRenderer(this));
+ typeface = Typeface.createFromAsset(getAssets(), "fontBaron.ttf");
+
+ PreStartScreen preStartScreen = new PreStartScreen(this);
+ StartScreen startScreen = new StartScreen(this, glSurfaceView);
+ GLTestScreen glTestScreen = new GLTestScreen(this, glSurfaceView);
+ WorldsScreen worldsScreen = new WorldsScreen(this);
+ levelsScreen = new LevelsScreen(this);
+ ToolShopScreen toolShopScreen = new ToolShopScreen(this);
+ PlayerShapeShopScreen shapeShopScreen = new PlayerShapeShopScreen(this);
+ gameScreen = new GameScreen(this, glSurfaceView);
+ SettingsScreen settingsScreen = new SettingsScreen(this);
+
+ levelupMessage = new LevelupMessage(this);
+ taskCompletedMessage = new TaskCompletedMessage(this);
+ tutorialView = new TutorialView(this);
+
+ flipper = new ScreenFlipper(this, preStartScreen, startScreen, worldsScreen,
+ levelsScreen, gameScreen, toolShopScreen, glTestScreen, settingsScreen,
+ shapeShopScreen);
+ RelativeLayout relativeLayout = new RelativeLayout(this);
+ relativeLayout.addView(glSurfaceView);
+ relativeLayout.addView(flipper);
+ relativeLayout.addView(levelupMessage.getLayout());
+ relativeLayout.addView(taskCompletedMessage.getLayout());
+ relativeLayout.addView(tutorialView.getLayout());
+ setContentView(relativeLayout);
+ } catch (Exception e) {
+ onException(e);
+ }
+ }
+
+ public void exitGame() {
+ super.finish();
+ }
+
+ public boolean isShortMenuInGameActive() {
+ return gameScreen.getGameViewManager().isShortMenuVisible();
+ }
+
+ public void flipToScreen(final Screen.ScreenType screen, final Screen.ScreenType caller) {
+ if (screen != Screen.ScreenType.NONE && flipper.getCurrentScreen().getType() != screen) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ flipper.showScreen(screen, caller);
+ }
+ });
+ }
+ }
+
+ public void flipToScreen(final Screen.ScreenType screen) {
+ if (screen != Screen.ScreenType.NONE && flipper.getCurrentScreen().getType() != screen) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ flipper.showScreen(screen, flipper.getCurrentScreen().getType());
+ }
+ });
+ }
+ }
+
+ public void flipToScreenNonUiThreaded(final Screen.ScreenType screen) {
+ if (screen != Screen.ScreenType.NONE && flipper.getCurrentScreen().getType() != screen) {
+ flipper.showScreen(screen, flipper.getCurrentScreen().getType());
+ }
+ }
+
+ public void onSurfaceChanged() {
+ if (flipper.getCurrentScreen().getType() == Screen.ScreenType.PRE_START)
+ flipToScreen(Screen.ScreenType.START);
+ }
+
+ public void checkForAlreadyUnlockedPlayerShapes() {
+ alreadyUnlockedPlayerShapes.clear();
+ for (PlayerShape shape : PlayerShape.values()) {
+ Task task = shape.getUnlockTask();
+ task.update(levelManager);
+ if (task.isConditionFulfilled())
+ alreadyUnlockedPlayerShapes.add(shape);
+ }
+ }
+
+ public void showNewFinishedPlayerShapeTasks() {
+ List newUnlockedShapes = new ArrayList<>();
+ for (PlayerShape shape : PlayerShape.values()) {
+ Task task = shape.getUnlockTask();
+ task.update(levelManager);
+ if (task.isConditionFulfilled() && !alreadyUnlockedPlayerShapes.contains(shape)) {
+ alreadyUnlockedPlayerShapes.add(shape);
+ newUnlockedShapes.add(shape);
+ }
+ }
+ if (!newUnlockedShapes.isEmpty())
+ onTasksCompleted(newUnlockedShapes);
+ }
+
+ public void onWorldSelected(LevelPack levelPack) {
+ levelsScreen.onLevelPackSelected(levelPack);
+ }
+
+ public void startGame(final LevelPack levelPack, final Level level) {
+ flipToScreen(Screen.ScreenType.GAME);
+ gameScreen.startGame(levelPack, level);
+ }
+
+ @Override
+ public void onLvUp(final int level, boolean showLvUpMessage) {
+ dataStorageHandler.writeUserData(user);
+ if (showLvUpMessage) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ levelupMessage.show(level);
+ }
+ });
+ tutorialManager.onLvUp(user);
+ }
+ }
+
+ public void onTasksCompleted(final List shapes) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ taskCompletedMessage.show(shapes);
+ }
+ });
+ }
+
+ public void showTutorial(final List breakPoints) {
+ if (!gameScreen.isLevelFinished()) {
+ gameScreen.setGamePausedWithoutMenu();
+ }
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ tutorialView.show(breakPoints);
+ }
+ });
+ }
+
+ public void onTutorialViewHidden() {
+ if (!gameScreen.isLevelFinished())
+ gameScreen.onResume();
+ }
+
+ public void resetData() {
+ user.clearData();
+ dataStorageHandler.writeUserData(user);
+ dataStorageHandler.writeToolShopTutorialFinished(false);
+ levelManager.reset();
+ tutorialManager.resetAllTutorials();
+ MyDatabase database = dataStorageHandler.getDatabase();
+ database.open();
+ database.clearLevelProgess();
+ database.clearLevelPackLocked();
+ for (ToolType type : ToolType.values())
+ type.reset();
+ database.writeToolData();
+ database.close();
+ checkForAlreadyUnlockedPlayerShapes();
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ try {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ if (tutorialView.isShowingTutorial())
+ tutorialView.onClick(null);
+ else
+ flipper.getCurrentScreen().onBackKeyDown();
+ return true;
+ }
+ } catch (Exception e) {
+ onException(e);
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ @Override
+ public void onException(Exception e) {
+ GameLog.e(e);
+ super.finish();
+ }
+
+ @Override
+ protected void onPause() {
+ GameLog.d("OnPause");
+ glSurfaceView.onPause();
+ if (flipper.getCurrentScreen() == gameScreen)
+ gameScreen.onPause();
+ soundManager.activityPause();
+ super.onPause();
+ }
+
+ @Override
+ protected void onResume() {
+ GameLog.d("OnResume");
+ glSurfaceView.onResume();
+ soundManager.activityResume();
+ super.onResume();
+ }
+
+ @Override
+ protected void onDestroy() {
+ GameLog.d("OnDestroy");
+ soundManager.destroy();
+
+ super.onDestroy();
+ }
+
+ private boolean hasGLES20() {
+ ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
+ ConfigurationInfo info = am.getDeviceConfigurationInfo();
+ return info.reqGlEsVersion >= 0x20000;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public DataStorageHandler getDataStorageHandler() {
+ return dataStorageHandler;
+ }
+
+ public SoundManager getSoundManager() {
+ return soundManager;
+ }
+
+ public Typeface getTypeface() {
+ return typeface;
+ }
+
+ public LevelManager getLevelManager() {
+ return levelManager;
+ }
+
+ public TutorialManager getTutorialManager() {
+ return tutorialManager;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/GameHandler.java b/app/src/main/java/de/frajul/endlessroll/main/GameHandler.java
index 49f762f..aa177a1 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/GameHandler.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/GameHandler.java
@@ -1,30 +1,30 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main;
-
-import android.widget.RelativeLayout;
-
-import java.util.List;
-
-import de.frajul.endlessroll.main.screens.Screen;
-import de.frajul.endlessroll.main.tutorial.BreakPoint;
-
-/**
- * Created by Julian on 08.12.2015.
- */
-public interface GameHandler extends ExceptionHandler {
-
- void startInUiThread(Runnable runnable);
-
- void toScreen(Screen.ScreenType screen);
-
- RelativeLayout getRootLayout();
-
- void showTutorialScreen(List breakPoints);
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main;
+
+import android.widget.RelativeLayout;
+
+import java.util.List;
+
+import de.frajul.endlessroll.main.screens.Screen;
+import de.frajul.endlessroll.main.tutorial.BreakPoint;
+
+/**
+ * Created by Julian on 08.12.2015.
+ */
+public interface GameHandler extends ExceptionHandler {
+
+ void startInUiThread(Runnable runnable);
+
+ void toScreen(Screen.ScreenType screen);
+
+ RelativeLayout getRootLayout();
+
+ void showTutorialScreen(List breakPoints);
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/GameLog.java b/app/src/main/java/de/frajul/endlessroll/main/GameLog.java
index ce6dc96..f43a0a6 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/GameLog.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/GameLog.java
@@ -1,51 +1,51 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main;
-
-import android.util.Log;
-
-/**
- * Created by Julian on 23.11.2015.
- */
-public class GameLog {
-
- private final static String TAG = "GameLog";
- public static boolean debugging = true;
-
- public static void i(String message) {
- Log.i(TAG + getCallerInfo(), message);
- }
-
- public static void d(String message) {
- if (debugging)
- Log.d(TAG + getCallerInfo(), message);
- }
-
- public static void e(String message) {
- Log.e(TAG + getCallerInfo(), message);
- }
-
- public static void e(Throwable error) {
- Log.e(TAG + getCallerInfo(), error.getMessage(), error);
- }
-
- //Possible to get Method which called i, d, e
- //Method found at stack[4]
- public static void stack() {
- StackTraceElement[] stack = Thread.currentThread().getStackTrace();
- Log.i(TAG + "Stack", "StackSize: " + stack.length);
- for (int i = 0; i < stack.length; i++) {
- Log.i(TAG + "Stack", i + ": " + stack[i]);
- }
- }
-
- private static String getCallerInfo() {
- StackTraceElement[] stack = Thread.currentThread().getStackTrace();
- return "(" + stack[4].getFileName() + ", " + stack[4].getMethodName() + ", " + stack[4].getLineNumber() + ")";
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main;
+
+import android.util.Log;
+
+/**
+ * Created by Julian on 23.11.2015.
+ */
+public class GameLog {
+
+ private final static String TAG = "GameLog";
+ public static boolean debugging = true;
+
+ public static void i(String message) {
+ Log.i(TAG + getCallerInfo(), message);
+ }
+
+ public static void d(String message) {
+ if (debugging)
+ Log.d(TAG + getCallerInfo(), message);
+ }
+
+ public static void e(String message) {
+ Log.e(TAG + getCallerInfo(), message);
+ }
+
+ public static void e(Throwable error) {
+ Log.e(TAG + getCallerInfo(), error.getMessage(), error);
+ }
+
+ //Possible to get Method which called i, d, e
+ //Method found at stack[4]
+ public static void stack() {
+ StackTraceElement[] stack = Thread.currentThread().getStackTrace();
+ Log.i(TAG + "Stack", "StackSize: " + stack.length);
+ for (int i = 0; i < stack.length; i++) {
+ Log.i(TAG + "Stack", i + ": " + stack[i]);
+ }
+ }
+
+ private static String getCallerInfo() {
+ StackTraceElement[] stack = Thread.currentThread().getStackTrace();
+ return "(" + stack[4].getFileName() + ", " + stack[4].getMethodName() + ", " + stack[4].getLineNumber() + ")";
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/MyGlSurfaceView.java b/app/src/main/java/de/frajul/endlessroll/main/MyGlSurfaceView.java
index d262a7b..b8d264d 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/MyGlSurfaceView.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/MyGlSurfaceView.java
@@ -1,54 +1,54 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main;
-
-import android.content.Context;
-import android.opengl.GLSurfaceView;
-import android.view.MotionEvent;
-
-import de.frajul.endlessroll.rendering.renderer.GameRenderer;
-
-/**
- * Created by Julian on 30.07.2016.
- */
-public class MyGlSurfaceView extends GLSurfaceView {
-
- private GameRenderer renderer;
-
- public MyGlSurfaceView(Context context, GameRenderer gameRenderer) {
- super(context);
- this.renderer = gameRenderer;
- super.setEGLContextClientVersion(2);
- super.setRenderer(renderer);
- }
-
- public GameRenderer getRenderer() {
- return renderer;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if (event.getAction() == MotionEvent.ACTION_DOWN) {
- renderer.onTouch(event.getX(), event.getY());
- }
- return true;
- }
-
- @Override
- public void onResume() {
- GameLog.i("GLSurfaceView: onResume");
- super.onResume();
- }
-
- @Override
- public void onPause() {
- GameLog.i("GLSurfaceView: onPause");
- super.onPause();
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main;
+
+import android.content.Context;
+import android.opengl.GLSurfaceView;
+import android.view.MotionEvent;
+
+import de.frajul.endlessroll.rendering.renderer.GameRenderer;
+
+/**
+ * Created by Julian on 30.07.2016.
+ */
+public class MyGlSurfaceView extends GLSurfaceView {
+
+ private GameRenderer renderer;
+
+ public MyGlSurfaceView(Context context, GameRenderer gameRenderer) {
+ super(context);
+ this.renderer = gameRenderer;
+ super.setEGLContextClientVersion(2);
+ super.setRenderer(renderer);
+ }
+
+ public GameRenderer getRenderer() {
+ return renderer;
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ renderer.onTouch(event.getX(), event.getY());
+ }
+ return true;
+ }
+
+ @Override
+ public void onResume() {
+ GameLog.i("GLSurfaceView: onResume");
+ super.onResume();
+ }
+
+ @Override
+ public void onPause() {
+ GameLog.i("GLSurfaceView: onPause");
+ super.onPause();
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/ads/AdLoadingListener.java b/app/src/main/java/de/frajul/endlessroll/main/ads/AdLoadingListener.java
index cd66f79..c17dad7 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/ads/AdLoadingListener.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/ads/AdLoadingListener.java
@@ -1,16 +1,16 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.ads;
-
-public interface AdLoadingListener {
-
- void onAdLoaded();
-
- void onAdFailedToLoad(int errorCode);
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.ads;
+
+public interface AdLoadingListener {
+
+ void onAdLoaded();
+
+ void onAdFailedToLoad(int errorCode);
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/ads/CustomAdListener.java b/app/src/main/java/de/frajul/endlessroll/main/ads/CustomAdListener.java
index ff510c3..7c0f092 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/ads/CustomAdListener.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/ads/CustomAdListener.java
@@ -1,30 +1,30 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.ads;
-
-import com.google.android.gms.ads.AdListener;
-
-public class CustomAdListener extends AdListener {
-
- private AdLoadingListener adLoadingListener;
-
- public CustomAdListener(AdLoadingListener adLoadingListener) {
- super();
- this.adLoadingListener = adLoadingListener;
- }
-
- @Override
- public void onAdLoaded() {
- adLoadingListener.onAdLoaded();
- }
-
- @Override
- public void onAdFailedToLoad(int i) {
- adLoadingListener.onAdFailedToLoad(i);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.ads;
+
+import com.google.android.gms.ads.AdListener;
+
+public class CustomAdListener extends AdListener {
+
+ private AdLoadingListener adLoadingListener;
+
+ public CustomAdListener(AdLoadingListener adLoadingListener) {
+ super();
+ this.adLoadingListener = adLoadingListener;
+ }
+
+ @Override
+ public void onAdLoaded() {
+ adLoadingListener.onAdLoaded();
+ }
+
+ @Override
+ public void onAdFailedToLoad(int i) {
+ adLoadingListener.onAdFailedToLoad(i);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/Camera.java b/app/src/main/java/de/frajul/endlessroll/main/game/Camera.java
index 3844ca4..a8b9977 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/game/Camera.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/game/Camera.java
@@ -1,52 +1,52 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.game;
-
-/**
- * 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.getFrameTimeMilliseconds() / 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;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.game;
+
+/**
+ * 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.getFrameTimeMilliseconds() / 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/de/frajul/endlessroll/main/game/Game.java b/app/src/main/java/de/frajul/endlessroll/main/game/Game.java
index eddaa38..a24f5f0 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/game/Game.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/game/Game.java
@@ -1,405 +1,405 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.game;
-
-import android.view.View;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.DestroyEffect;
-import de.frajul.endlessroll.entities.Obstacle;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collectables.Energy;
-import de.frajul.endlessroll.entities.collectables.Star;
-import de.frajul.endlessroll.entities.collision.CollisionDetector;
-import de.frajul.endlessroll.entities.collision.CollisionManager;
-import de.frajul.endlessroll.entities.guis.Countdown;
-import de.frajul.endlessroll.entities.guis.ToolButton;
-import de.frajul.endlessroll.entities.guis.ToolButtonBar;
-import de.frajul.endlessroll.entities.particles.Firework;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.entities.tools.Bomb;
-import de.frajul.endlessroll.entities.tools.Tool;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.LevelPack;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameHandler;
-import de.frajul.endlessroll.main.GameLog;
-import de.frajul.endlessroll.main.physics.Physics;
-import de.frajul.endlessroll.main.screens.GameScreen;
-import de.frajul.endlessroll.main.screens.Screen;
-import de.frajul.endlessroll.rendering.Rendering;
-import de.frajul.endlessroll.rendering.renderer.GameRenderer;
-import de.frajul.endlessroll.sqlDatabase.MyDatabase;
-import de.frajul.endlessroll.views.ViewManager;
-
-/**
- * Created by Julian on 26.11.2015.
- */
-public class Game extends Rendering {
-
- private GameActivity gameActivity;
- private GameHandler handler;
- private ViewManager viewManager;
- private LevelPack levelPack;
- private ParticleSystem particleSystem;
- private Firework firework;
- private Countdown countdown;
- private ToolButtonBar toolButtonBar;
-
- private ToolType currentTool;
- private Player player;
- private Physics physics;
- private CollisionManager collisionManager;
- private CollisionDetector collisionDetector;
- private Timer timer;
- private GameState gameState = GameState.COUNTDOWN;
-
- private Level level;
- private List collectedStars = new ArrayList<>();
- private boolean energyCollected;
- private boolean inPhotoMode = false;
-
- public Game(GameHandler handler, GameScreen gameScreen, GameActivity gameActivity, GameRenderer gameRenderer) throws Exception {
- super(gameActivity, gameRenderer);
- this.handler = handler;
- this.gameActivity = gameActivity;
- physics = new Physics();
- collisionManager = new CollisionManager(this);
- collisionDetector = new CollisionDetector();
- particleSystem = new ParticleSystem(getContext());
- viewManager = new ViewManager(this, gameScreen, handler, gameActivity);
- }
-
- @Override
- public GameScene init(TexturePack texturePack, Timer timer, boolean isFirstTime) {
- GameLog.d("init Game");
- this.timer = timer;
- try {
- if (isFirstTime) {
- scene = new GameScene(gameActivity, texturePack, particleSystem);
- firework = new Firework(particleSystem.firework, scene.getCamera());
- countdown = new Countdown(this, gameActivity.getSoundManager(), texturePack);
- toolButtonBar = new ToolButtonBar(texturePack, this,
- gameActivity.getUser().getToolSlotSettings());
- scene.getGuis().addAll(toolButtonBar.toGuiList());
- scene.getGuis().add(countdown);
- if (level != null)
- startGame(levelPack, level);
- } else {
- scene.setTexturePack(texturePack);
- }
- particleSystem.loadTextures();
- } catch (Exception e) {
- onException(e);
- }
- return scene;
- }
-
- public void startGame(LevelPack levelPack, Level level) {
- GameLog.d("Start game");
- try {
- this.level = level;
- this.levelPack = levelPack;
- if (scene != null) {
- gameActivity.getSoundManager().getCurrentGameMusic().reset();
- gameActivity.getSoundManager().randomizeCurrentGameMusic();
- gameActivity.getSoundManager().stopAllSounds();
- gameState = GameState.COUNTDOWN;
- gameActivity.getTutorialManager().resetGameTutorials();
- collectedStars.clear();
- energyCollected = false;
- particleSystem.deleteAllSources();
- scene.loadLevel(level, levelPack.getWorld(),
- gameActivity.getUser().getCurrentPlayerShape());
- player = scene.getPlayer();
- viewManager.resetViews();
- toolButtonBar.reset(gameActivity.getUser().getToolSlotSettings());
- setCurrentTool(toolButtonBar.getActiveButton().getToolType(), true);
- viewManager.setShowFps(gameActivity.getDataStorageHandler().readIsShowFps());
- countdown.start();
- }
- } catch (Exception e) {
- onException(e);
- }
- }
-
- public void countdownFinished() {
- gameActivity.getSoundManager().resumeAllSounds();
- gameActivity.getSoundManager().getCurrentGameMusic().start();
- gameState = GameState.RUNNING;
- }
-
- @Override
- public void update() {
- try {
- particleSystem.update(timer);
- if (scene == null || player == null)
- return;
-
- float playerProgress = level != null ? player.getProgress(level.getGoalX()) : 0;
- viewManager.update(gameState == GameState.RUNNING, timer, (int) (playerProgress * 100 + 0.5f));
- toolButtonBar.update(timer.getFrameTimeMilliseconds(), gameState == GameState.RUNNING);
- switch (gameState) {
- case RUNNING:
- if (player.getPosition().y < -2f) {
- onGameOver(false);
- return;
- }
- if (player.getPosition().x >= scene.getGoalX()) {
- onGoalReached();
- return;
- }
- scene.getCamera().update(player.getPosition().y, timer);
-
- gameActivity.getTutorialManager().update(level, player.getXFromStart());
-
- physics.applyGravity(scene, timer);
- scene.update(timer);
- collisionManager.update(physics, scene, timer);
- break;
- case COUNTDOWN:
- countdown.update(timer.getFrameTimeMilliseconds());
- break;
- }
- } catch (Exception e) {
- onException(e);
- }
- }
-
- @Override
- public void onTouch(float x, float y) {
- try {
- if (gameState == GameState.RUNNING) {
- Vector touchPoint = scene.calcWorldFromScreenCoords(x, y);
-
- for (ToolButton toolButton : toolButtonBar.getToolButtons()) {
- ToolType toolType = toolButton.getToolType();
- if (collisionDetector.isPointInQuad(touchPoint,
- toolButton.getBorder()) && toolType != null) {
- toolButtonBar.setActive(toolType);
- setCurrentTool(toolType, toolButton.hasFinishedLoading());
- return;
- }
- }
- touchPoint.translate(scene.camera.getX(), scene.camera.getY());
- ToolButton currentToolButton = toolButtonBar.getActiveButton();
- if (currentToolButton != null && currentToolButton
- .hasFinishedLoading() && currentToolButton.getToolType() != null) {
- if (currentTool == ToolType.BOMB) {
- Obstacle selectedObstacle = scene.getObstacleAtPoint(touchPoint);
- if (selectedObstacle == null) {
- viewManager.showBombErrorMessage(x, y);
- return;
- } else {
- currentToolButton.setProgress(0);
- scene.getBombSelected().set(false);
- Tool tool = addTool(touchPoint);
- if (tool != null && tool instanceof Bomb)
- ((Bomb) tool).setAttachedObstacle(selectedObstacle);
- return;
- }
- }
- currentToolButton.setProgress(0);
- addTool(touchPoint);
- }
- }
- } catch (Exception e) {
- onException(e);
- }
- }
-
- public void startPhotoMode(boolean showToolBar){
- if(!showToolBar)
- toolButtonBar.setVisible(false);
- viewManager.setShowFps(false);
- viewManager.getPlayerProgressView().setVisibility(View.INVISIBLE);
- viewManager.getPauseButton().setVisibility(View.INVISIBLE);
- inPhotoMode = true;
- }
-
- public void endPhotoMode(){
- toolButtonBar.setVisible(true);
- viewManager.setShowFps(gameActivity.getDataStorageHandler().readIsShowFps());
- viewManager.getPlayerProgressView().setVisibility(View.VISIBLE);
- viewManager.getPauseButton().setVisibility(View.VISIBLE);
- inPhotoMode = false;
- viewManager.endShortMenuPhotoMode();
- }
-
- public boolean isInPhotoMode() {
- return inPhotoMode;
- }
-
- public void resetViews() {
- viewManager.resetViews();
- toolButtonBar.reset(gameActivity.getUser().getToolSlotSettings());
- }
-
- public void continueGame() {
- viewManager.hideShortMenu();
- gameState = GameState.COUNTDOWN;
- viewManager.setShowFps(gameActivity.getDataStorageHandler().readIsShowFps());
- countdown.start();
- }
-
- public void startNextLevel() {
- level = levelPack.getNextLevel(level);
- startGame(levelPack, level);
- }
-
- public void restartLevel() {
- startGame(levelPack, level);
- }
-
- public void toLevelsScreen() {
- handler.toScreen(Screen.ScreenType.LEVELS);
- }
-
- public void onToolButtonFinishedLoading(ToolType toolType) {
- if (currentTool == ToolType.BOMB && toolType == ToolType.BOMB)
- scene.getBombSelected().set(true);
- }
-
- public void setCurrentTool(ToolType toolType, boolean toolButtonFinishedLoading) {
- currentTool = toolType;
- if (currentTool == ToolType.BOMB && toolButtonFinishedLoading) {
- scene.getBombSelected().set(true);
- } else {
- scene.getBombSelected().set(false);
- }
- }
-
- public void pauseWithoutMenu() {
- gameState = GameState.PAUSED;
- }
-
- public void tryToPause() {
- if (gameState == GameState.GAME_OVER || gameState == GameState.LEVEL_FINISHED || gameState == GameState.PAUSED)
- return;
- gameActivity.getSoundManager().pauseAllSounds();
- gameActivity.getSoundManager().getCurrentGameMusic().pause();
- viewManager.showShortMenu();
- if (gameState == GameState.COUNTDOWN)
- countdown.stop();
- gameState = GameState.PAUSED;
- }
-
- public void onGoalMessageKeyBack() {
- viewManager.onGoalMessageKeyBack();
- }
-
- public void setRunning() {
- gameState = GameState.RUNNING;
- }
-
- private Tool addTool(Vector position) {
- try {
- gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().placeToolSound);
- return scene.addTool(currentTool, position, physics);
- } catch (Exception e) {
- onException(e);
- }
- return null;
- }
-
- public void onGameOver(boolean playerExplode) {
- gameActivity.getSoundManager().getCurrentGameMusic().stop();
- gameActivity.getSoundManager().stopAllSounds();
- gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().dieSound);
- if (playerExplode) {
- scene.getUncategorizedEntities().remove(player);
- DestroyEffect.EXPLOSION.createEffect(particleSystem, player.getPosition(),
- new Vector(player.getWidth(), player.getHeight())).start();
- }
- gameState = GameState.GAME_OVER;
- viewManager.showGameOverMessage();
- }
-
- private void onGoalReached() {
- gameActivity.getSoundManager().getCurrentGameMusic().stop();
- gameActivity.getSoundManager().stopAllSounds();
- gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().goalSound);
-
- gameState = GameState.LEVEL_FINISHED;
- if (!level.isFinished())
- gameActivity.getUser().gainLvFinishedEp();
- level.setFinished(true);
-
- for (int i = 0; i <= 2; i++) {
- if (collectedStars.contains(i)) {
- level.setStarCollected(i, true);
- gameActivity.getUser().onStarCollected();
- }
- }
-
- if (energyCollected) {
- level.setEnergyCollected(true);
- gameActivity.getUser().onEnergyCollected();
- }
-
- firework.start();
- gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().fireworkSound);
-
- viewManager.showGoalMessage(levelPack, level);
-
- MyDatabase database = gameActivity.getDataStorageHandler().getDatabase();
- database.open();
- database.writeLevelProgress(level);
-
- gameActivity.showNewFinishedPlayerShapeTasks();
-
- Level nextLevel = levelPack.getNextLevel(level);
- if (nextLevel != null) {
- nextLevel.setLocked(false);
- database.writeLevelProgress(nextLevel);
- } else {
- LevelPack nextLevelPack = gameActivity.getLevelManager().getNextLevelPack(levelPack);
- if (nextLevelPack != null) {
- nextLevelPack.setLocked(false);
- database.writeLevelPackLocked(nextLevelPack);
- }
- }
- database.close();
- gameActivity.getDataStorageHandler().writeUserData(gameActivity.getUser());
- }
-
- public void onStarCollision(Star star) {
- if (!star.isDestroyed()) {
- scene.onStarCollision(star);
- gameActivity.getSoundManager()
- .playSound(gameActivity.getSoundManager().collectStarSound);
- collectedStars.add(star.getIndex());
- }
- }
-
- public void onEnergyCollision(Energy energy) {
- if (!energy.isDestroyed()) {
- scene.onEnergyCollision(energy);
- gameActivity.getSoundManager()
- .playSound(gameActivity.getSoundManager().collectEnergySound);
- energyCollected = true;
- }
- }
-
- public void onException(Exception e) {
- handler.onException(e);
- }
-
- public GameState getGameState() {
- return gameState;
- }
-
- public ViewManager getViewManager() {
- return viewManager;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.game;
+
+import android.view.View;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.DestroyEffect;
+import de.frajul.endlessroll.entities.Obstacle;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collectables.Energy;
+import de.frajul.endlessroll.entities.collectables.Star;
+import de.frajul.endlessroll.entities.collision.CollisionDetector;
+import de.frajul.endlessroll.entities.collision.CollisionManager;
+import de.frajul.endlessroll.entities.guis.Countdown;
+import de.frajul.endlessroll.entities.guis.ToolButton;
+import de.frajul.endlessroll.entities.guis.ToolButtonBar;
+import de.frajul.endlessroll.entities.particles.Firework;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.entities.tools.Bomb;
+import de.frajul.endlessroll.entities.tools.Tool;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.LevelPack;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameHandler;
+import de.frajul.endlessroll.main.GameLog;
+import de.frajul.endlessroll.main.physics.Physics;
+import de.frajul.endlessroll.main.screens.GameScreen;
+import de.frajul.endlessroll.main.screens.Screen;
+import de.frajul.endlessroll.rendering.Rendering;
+import de.frajul.endlessroll.rendering.renderer.GameRenderer;
+import de.frajul.endlessroll.sqlDatabase.MyDatabase;
+import de.frajul.endlessroll.views.ViewManager;
+
+/**
+ * Created by Julian on 26.11.2015.
+ */
+public class Game extends Rendering {
+
+ private GameActivity gameActivity;
+ private GameHandler handler;
+ private ViewManager viewManager;
+ private LevelPack levelPack;
+ private ParticleSystem particleSystem;
+ private Firework firework;
+ private Countdown countdown;
+ private ToolButtonBar toolButtonBar;
+
+ private ToolType currentTool;
+ private Player player;
+ private Physics physics;
+ private CollisionManager collisionManager;
+ private CollisionDetector collisionDetector;
+ private Timer timer;
+ private GameState gameState = GameState.COUNTDOWN;
+
+ private Level level;
+ private List collectedStars = new ArrayList<>();
+ private boolean energyCollected;
+ private boolean inPhotoMode = false;
+
+ public Game(GameHandler handler, GameScreen gameScreen, GameActivity gameActivity, GameRenderer gameRenderer) throws Exception {
+ super(gameActivity, gameRenderer);
+ this.handler = handler;
+ this.gameActivity = gameActivity;
+ physics = new Physics();
+ collisionManager = new CollisionManager(this);
+ collisionDetector = new CollisionDetector();
+ particleSystem = new ParticleSystem(getContext());
+ viewManager = new ViewManager(this, gameScreen, handler, gameActivity);
+ }
+
+ @Override
+ public GameScene init(TexturePack texturePack, Timer timer, boolean isFirstTime) {
+ GameLog.d("init Game");
+ this.timer = timer;
+ try {
+ if (isFirstTime) {
+ scene = new GameScene(gameActivity, texturePack, particleSystem);
+ firework = new Firework(particleSystem.firework, scene.getCamera());
+ countdown = new Countdown(this, gameActivity.getSoundManager(), texturePack);
+ toolButtonBar = new ToolButtonBar(texturePack, this,
+ gameActivity.getUser().getToolSlotSettings());
+ scene.getGuis().addAll(toolButtonBar.toGuiList());
+ scene.getGuis().add(countdown);
+ if (level != null)
+ startGame(levelPack, level);
+ } else {
+ scene.setTexturePack(texturePack);
+ }
+ particleSystem.loadTextures();
+ } catch (Exception e) {
+ onException(e);
+ }
+ return scene;
+ }
+
+ public void startGame(LevelPack levelPack, Level level) {
+ GameLog.d("Start game");
+ try {
+ this.level = level;
+ this.levelPack = levelPack;
+ if (scene != null) {
+ gameActivity.getSoundManager().getCurrentGameMusic().reset();
+ gameActivity.getSoundManager().randomizeCurrentGameMusic();
+ gameActivity.getSoundManager().stopAllSounds();
+ gameState = GameState.COUNTDOWN;
+ gameActivity.getTutorialManager().resetGameTutorials();
+ collectedStars.clear();
+ energyCollected = false;
+ particleSystem.deleteAllSources();
+ scene.loadLevel(level, levelPack.getWorld(),
+ gameActivity.getUser().getCurrentPlayerShape());
+ player = scene.getPlayer();
+ viewManager.resetViews();
+ toolButtonBar.reset(gameActivity.getUser().getToolSlotSettings());
+ setCurrentTool(toolButtonBar.getActiveButton().getToolType(), true);
+ viewManager.setShowFps(gameActivity.getDataStorageHandler().readIsShowFps());
+ countdown.start();
+ }
+ } catch (Exception e) {
+ onException(e);
+ }
+ }
+
+ public void countdownFinished() {
+ gameActivity.getSoundManager().resumeAllSounds();
+ gameActivity.getSoundManager().getCurrentGameMusic().start();
+ gameState = GameState.RUNNING;
+ }
+
+ @Override
+ public void update() {
+ try {
+ particleSystem.update(timer);
+ if (scene == null || player == null)
+ return;
+
+ float playerProgress = level != null ? player.getProgress(level.getGoalX()) : 0;
+ viewManager.update(gameState == GameState.RUNNING, timer, (int) (playerProgress * 100 + 0.5f));
+ toolButtonBar.update(timer.getFrameTimeMilliseconds(), gameState == GameState.RUNNING);
+ switch (gameState) {
+ case RUNNING:
+ if (player.getPosition().y < -2f) {
+ onGameOver(false);
+ return;
+ }
+ if (player.getPosition().x >= scene.getGoalX()) {
+ onGoalReached();
+ return;
+ }
+ scene.getCamera().update(player.getPosition().y, timer);
+
+ gameActivity.getTutorialManager().update(level, player.getXFromStart());
+
+ physics.applyGravity(scene, timer);
+ scene.update(timer);
+ collisionManager.update(physics, scene, timer);
+ break;
+ case COUNTDOWN:
+ countdown.update(timer.getFrameTimeMilliseconds());
+ break;
+ }
+ } catch (Exception e) {
+ onException(e);
+ }
+ }
+
+ @Override
+ public void onTouch(float x, float y) {
+ try {
+ if (gameState == GameState.RUNNING) {
+ Vector touchPoint = scene.calcWorldFromScreenCoords(x, y);
+
+ for (ToolButton toolButton : toolButtonBar.getToolButtons()) {
+ ToolType toolType = toolButton.getToolType();
+ if (collisionDetector.isPointInQuad(touchPoint,
+ toolButton.getBorder()) && toolType != null) {
+ toolButtonBar.setActive(toolType);
+ setCurrentTool(toolType, toolButton.hasFinishedLoading());
+ return;
+ }
+ }
+ touchPoint.translate(scene.camera.getX(), scene.camera.getY());
+ ToolButton currentToolButton = toolButtonBar.getActiveButton();
+ if (currentToolButton != null && currentToolButton
+ .hasFinishedLoading() && currentToolButton.getToolType() != null) {
+ if (currentTool == ToolType.BOMB) {
+ Obstacle selectedObstacle = scene.getObstacleAtPoint(touchPoint);
+ if (selectedObstacle == null) {
+ viewManager.showBombErrorMessage(x, y);
+ return;
+ } else {
+ currentToolButton.setProgress(0);
+ scene.getBombSelected().set(false);
+ Tool tool = addTool(touchPoint);
+ if (tool != null && tool instanceof Bomb)
+ ((Bomb) tool).setAttachedObstacle(selectedObstacle);
+ return;
+ }
+ }
+ currentToolButton.setProgress(0);
+ addTool(touchPoint);
+ }
+ }
+ } catch (Exception e) {
+ onException(e);
+ }
+ }
+
+ public void startPhotoMode(boolean showToolBar){
+ if(!showToolBar)
+ toolButtonBar.setVisible(false);
+ viewManager.setShowFps(false);
+ viewManager.getPlayerProgressView().setVisibility(View.INVISIBLE);
+ viewManager.getPauseButton().setVisibility(View.INVISIBLE);
+ inPhotoMode = true;
+ }
+
+ public void endPhotoMode(){
+ toolButtonBar.setVisible(true);
+ viewManager.setShowFps(gameActivity.getDataStorageHandler().readIsShowFps());
+ viewManager.getPlayerProgressView().setVisibility(View.VISIBLE);
+ viewManager.getPauseButton().setVisibility(View.VISIBLE);
+ inPhotoMode = false;
+ viewManager.endShortMenuPhotoMode();
+ }
+
+ public boolean isInPhotoMode() {
+ return inPhotoMode;
+ }
+
+ public void resetViews() {
+ viewManager.resetViews();
+ toolButtonBar.reset(gameActivity.getUser().getToolSlotSettings());
+ }
+
+ public void continueGame() {
+ viewManager.hideShortMenu();
+ gameState = GameState.COUNTDOWN;
+ viewManager.setShowFps(gameActivity.getDataStorageHandler().readIsShowFps());
+ countdown.start();
+ }
+
+ public void startNextLevel() {
+ level = levelPack.getNextLevel(level);
+ startGame(levelPack, level);
+ }
+
+ public void restartLevel() {
+ startGame(levelPack, level);
+ }
+
+ public void toLevelsScreen() {
+ handler.toScreen(Screen.ScreenType.LEVELS);
+ }
+
+ public void onToolButtonFinishedLoading(ToolType toolType) {
+ if (currentTool == ToolType.BOMB && toolType == ToolType.BOMB)
+ scene.getBombSelected().set(true);
+ }
+
+ public void setCurrentTool(ToolType toolType, boolean toolButtonFinishedLoading) {
+ currentTool = toolType;
+ if (currentTool == ToolType.BOMB && toolButtonFinishedLoading) {
+ scene.getBombSelected().set(true);
+ } else {
+ scene.getBombSelected().set(false);
+ }
+ }
+
+ public void pauseWithoutMenu() {
+ gameState = GameState.PAUSED;
+ }
+
+ public void tryToPause() {
+ if (gameState == GameState.GAME_OVER || gameState == GameState.LEVEL_FINISHED || gameState == GameState.PAUSED)
+ return;
+ gameActivity.getSoundManager().pauseAllSounds();
+ gameActivity.getSoundManager().getCurrentGameMusic().pause();
+ viewManager.showShortMenu();
+ if (gameState == GameState.COUNTDOWN)
+ countdown.stop();
+ gameState = GameState.PAUSED;
+ }
+
+ public void onGoalMessageKeyBack() {
+ viewManager.onGoalMessageKeyBack();
+ }
+
+ public void setRunning() {
+ gameState = GameState.RUNNING;
+ }
+
+ private Tool addTool(Vector position) {
+ try {
+ gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().placeToolSound);
+ return scene.addTool(currentTool, position, physics);
+ } catch (Exception e) {
+ onException(e);
+ }
+ return null;
+ }
+
+ public void onGameOver(boolean playerExplode) {
+ gameActivity.getSoundManager().getCurrentGameMusic().stop();
+ gameActivity.getSoundManager().stopAllSounds();
+ gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().dieSound);
+ if (playerExplode) {
+ scene.getUncategorizedEntities().remove(player);
+ DestroyEffect.EXPLOSION.createEffect(particleSystem, player.getPosition(),
+ new Vector(player.getWidth(), player.getHeight())).start();
+ }
+ gameState = GameState.GAME_OVER;
+ viewManager.showGameOverMessage();
+ }
+
+ private void onGoalReached() {
+ gameActivity.getSoundManager().getCurrentGameMusic().stop();
+ gameActivity.getSoundManager().stopAllSounds();
+ gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().goalSound);
+
+ gameState = GameState.LEVEL_FINISHED;
+ if (!level.isFinished())
+ gameActivity.getUser().gainLvFinishedEp();
+ level.setFinished(true);
+
+ for (int i = 0; i <= 2; i++) {
+ if (collectedStars.contains(i)) {
+ level.setStarCollected(i, true);
+ gameActivity.getUser().onStarCollected();
+ }
+ }
+
+ if (energyCollected) {
+ level.setEnergyCollected(true);
+ gameActivity.getUser().onEnergyCollected();
+ }
+
+ firework.start();
+ gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().fireworkSound);
+
+ viewManager.showGoalMessage(levelPack, level);
+
+ MyDatabase database = gameActivity.getDataStorageHandler().getDatabase();
+ database.open();
+ database.writeLevelProgress(level);
+
+ gameActivity.showNewFinishedPlayerShapeTasks();
+
+ Level nextLevel = levelPack.getNextLevel(level);
+ if (nextLevel != null) {
+ nextLevel.setLocked(false);
+ database.writeLevelProgress(nextLevel);
+ } else {
+ LevelPack nextLevelPack = gameActivity.getLevelManager().getNextLevelPack(levelPack);
+ if (nextLevelPack != null) {
+ nextLevelPack.setLocked(false);
+ database.writeLevelPackLocked(nextLevelPack);
+ }
+ }
+ database.close();
+ gameActivity.getDataStorageHandler().writeUserData(gameActivity.getUser());
+ }
+
+ public void onStarCollision(Star star) {
+ if (!star.isDestroyed()) {
+ scene.onStarCollision(star);
+ gameActivity.getSoundManager()
+ .playSound(gameActivity.getSoundManager().collectStarSound);
+ collectedStars.add(star.getIndex());
+ }
+ }
+
+ public void onEnergyCollision(Energy energy) {
+ if (!energy.isDestroyed()) {
+ scene.onEnergyCollision(energy);
+ gameActivity.getSoundManager()
+ .playSound(gameActivity.getSoundManager().collectEnergySound);
+ energyCollected = true;
+ }
+ }
+
+ public void onException(Exception e) {
+ handler.onException(e);
+ }
+
+ public GameState getGameState() {
+ return gameState;
+ }
+
+ public ViewManager getViewManager() {
+ return viewManager;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/GameScene.java b/app/src/main/java/de/frajul/endlessroll/main/game/GameScene.java
index 618df6e..754bfe9 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/game/GameScene.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/game/GameScene.java
@@ -1,169 +1,169 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.game;
-
-import de.frajul.endlessroll.data.Color3f;
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.DestroyEffect;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.Goal;
-import de.frajul.endlessroll.entities.Obstacle;
-import de.frajul.endlessroll.entities.collectables.Energy;
-import de.frajul.endlessroll.entities.collectables.Star;
-import de.frajul.endlessroll.entities.collision.CollisionDetector;
-import de.frajul.endlessroll.entities.particles.ParticleSource;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.entities.tools.Bomb;
-import de.frajul.endlessroll.entities.tools.Magnet;
-import de.frajul.endlessroll.entities.tools.Stasis;
-import de.frajul.endlessroll.entities.tools.Tool;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.ObstacleData;
-import de.frajul.endlessroll.levels.worlds.World;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameLog;
-import de.frajul.endlessroll.main.physics.Physics;
-
-/**
- * Created by Julian on 27.11.2015.
- */
-public class GameScene extends Scene {
-
- private GameActivity gameActivity;
- private World currentWorld;
- private CollisionDetector collisionDetector;
- private Goal goal;
- private float goalX;
-
- public GameScene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
- super(gameActivity, texturePack, particleSystem);
- this.gameActivity = gameActivity;
- collisionDetector = new CollisionDetector();
-
- goal = new Goal(textures.goal);
- }
-
- public void loadLevel(Level level, World world, PlayerShape playerShape) {
- this.currentWorld = world;
- super.reset();
- background.changeTextures(world.getBackgroundTextures());
- terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles());
- ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles());
- uncategorizedEntities.add(goal);
- player.init(playerShape, terrain.getEdge(), level.getStartSpeed(), level.getEndSpeed(),
- particleSystem);
- uncategorizedEntities.add(player);
- collectables.init(level, textures);
- for (ObstacleData data : level.getObstacles())
- addObstacle(data);
-
- goalX = level.getGoalX();
- goal.setGoalX(goalX);
-
- if (world == World.ICY_MOUNTAINS) {
- enviromentParticles = new ParticleSource(new Vector(), particleSystem.snow);
- enviromentParticles.start();
- } else if (enviromentParticles != null) {
- enviromentParticles.kill();
- }
-
- if(world == World.UNDERWATER){
-// colorFilter = new Entity(textures.white, new Vector(),4,3);
-// colorFilter.setColor(new Color3f(0, 0, 1));
-// colorFilter.setAlpha(0.3f);
- }
- GameLog.d("Level " + level.getId() + " successfully loaded");
- }
-
- public void onStarCollision(Star collisionStar) {
- collisionStar.destroy(DestroyEffect.STAR_EXPLOSION);
- }
-
- public void onEnergyCollision(Energy energy) {
- energy.destroy(DestroyEffect.ENERGY_COLLECT);
- }
-
- public void addObstacle(ObstacleData data) {
- Obstacle obstacle = new Obstacle(currentWorld, data, terrain.getEdge(), player);
- obstacles.add(obstacle);
- }
-
- public Tool addTool(ToolType type, Vector position, Physics physics) throws Exception {
- Tool tool = type.newInstance(position, particleSystem, gameActivity.getSoundManager());
- physics.checkSingleToolCollision(tool, this, true);
-
- if (tool == null)
- throw new Exception(
- "Current ToolType(" + type + ") returns null at method newInstance()");
- tools.add(tool);
- return tool;
- }
-
- public Obstacle getObstacleAtPoint(Vector point) {
- synchronized (obstacles) {
- for (Obstacle obstacle : obstacles) {
- if (collisionDetector.isPointInQuad(point, obstacle))
- return obstacle;
- }
- }
- return null;
- }
-
- public void update(Timer timer) {
- player.setSpeedByProgress(player.getProgress(goalX));
-
- if (!player.getStases().isEmpty()) {
- synchronized (obstacles) {
- for (Stasis stasis : player.getStases()) {
- for (Obstacle obstacle : obstacles) {
- if (obstacle.isMoving()) {
- obstacle.slowMovementForOneFrame(stasis.getCurrentXSlowFactor());
- }
- }
- }
- }
- }
-
- player.preMoveUpdate(timer);
-
- if (player.hasSuperPower() && player.getBottomEdge() < terrain.getEdge()) {
- player.setToTerrain(terrain.getEdge());
- if (player.getMovement().y < 0)
- player.getMovement().setY(0);
- }
-
- super.update(timer);
-
- player.postMoveUpdate();
-
- synchronized (tools) {
- for (Tool tool : tools) {
- if (tool instanceof Bomb) {
- Bomb bomb = (Bomb) tool;
- if (bomb.isExploding())
- bomb.explode();
- } else if (tool instanceof Stasis) {
- Stasis stasis = (Stasis) tool;
- stasis.updateSoundVolume(player);
- } else if (tool instanceof Magnet) {
- Magnet magnet = (Magnet) tool;
- magnet.updateSoundVolume(player);
- }
- }
- }
-
- }
-
- public float getGoalX() {
- return goalX;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.game;
+
+import de.frajul.endlessroll.data.Color3f;
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.DestroyEffect;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.Goal;
+import de.frajul.endlessroll.entities.Obstacle;
+import de.frajul.endlessroll.entities.collectables.Energy;
+import de.frajul.endlessroll.entities.collectables.Star;
+import de.frajul.endlessroll.entities.collision.CollisionDetector;
+import de.frajul.endlessroll.entities.particles.ParticleSource;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.entities.tools.Bomb;
+import de.frajul.endlessroll.entities.tools.Magnet;
+import de.frajul.endlessroll.entities.tools.Stasis;
+import de.frajul.endlessroll.entities.tools.Tool;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.ObstacleData;
+import de.frajul.endlessroll.levels.worlds.World;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameLog;
+import de.frajul.endlessroll.main.physics.Physics;
+
+/**
+ * Created by Julian on 27.11.2015.
+ */
+public class GameScene extends Scene {
+
+ private GameActivity gameActivity;
+ private World currentWorld;
+ private CollisionDetector collisionDetector;
+ private Goal goal;
+ private float goalX;
+
+ public GameScene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
+ super(gameActivity, texturePack, particleSystem);
+ this.gameActivity = gameActivity;
+ collisionDetector = new CollisionDetector();
+
+ goal = new Goal(textures.goal);
+ }
+
+ public void loadLevel(Level level, World world, PlayerShape playerShape) {
+ this.currentWorld = world;
+ super.reset();
+ background.changeTextures(world.getBackgroundTextures());
+ terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles());
+ ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles());
+ uncategorizedEntities.add(goal);
+ player.init(playerShape, terrain.getEdge(), level.getStartSpeed(), level.getEndSpeed(),
+ particleSystem);
+ uncategorizedEntities.add(player);
+ collectables.init(level, textures);
+ for (ObstacleData data : level.getObstacles())
+ addObstacle(data);
+
+ goalX = level.getGoalX();
+ goal.setGoalX(goalX);
+
+ if (world == World.ICY_MOUNTAINS) {
+ enviromentParticles = new ParticleSource(new Vector(), particleSystem.snow);
+ enviromentParticles.start();
+ } else if (enviromentParticles != null) {
+ enviromentParticles.kill();
+ }
+
+ if(world == World.UNDERWATER){
+// colorFilter = new Entity(textures.white, new Vector(),4,3);
+// colorFilter.setColor(new Color3f(0, 0, 1));
+// colorFilter.setAlpha(0.3f);
+ }
+ GameLog.d("Level " + level.getId() + " successfully loaded");
+ }
+
+ public void onStarCollision(Star collisionStar) {
+ collisionStar.destroy(DestroyEffect.STAR_EXPLOSION);
+ }
+
+ public void onEnergyCollision(Energy energy) {
+ energy.destroy(DestroyEffect.ENERGY_COLLECT);
+ }
+
+ public void addObstacle(ObstacleData data) {
+ Obstacle obstacle = new Obstacle(currentWorld, data, terrain.getEdge(), player);
+ obstacles.add(obstacle);
+ }
+
+ public Tool addTool(ToolType type, Vector position, Physics physics) throws Exception {
+ Tool tool = type.newInstance(position, particleSystem, gameActivity.getSoundManager());
+ physics.checkSingleToolCollision(tool, this, true);
+
+ if (tool == null)
+ throw new Exception(
+ "Current ToolType(" + type + ") returns null at method newInstance()");
+ tools.add(tool);
+ return tool;
+ }
+
+ public Obstacle getObstacleAtPoint(Vector point) {
+ synchronized (obstacles) {
+ for (Obstacle obstacle : obstacles) {
+ if (collisionDetector.isPointInQuad(point, obstacle))
+ return obstacle;
+ }
+ }
+ return null;
+ }
+
+ public void update(Timer timer) {
+ player.setSpeedByProgress(player.getProgress(goalX));
+
+ if (!player.getStases().isEmpty()) {
+ synchronized (obstacles) {
+ for (Stasis stasis : player.getStases()) {
+ for (Obstacle obstacle : obstacles) {
+ if (obstacle.isMoving()) {
+ obstacle.slowMovementForOneFrame(stasis.getCurrentXSlowFactor());
+ }
+ }
+ }
+ }
+ }
+
+ player.preMoveUpdate(timer);
+
+ if (player.hasSuperPower() && player.getBottomEdge() < terrain.getEdge()) {
+ player.setToTerrain(terrain.getEdge());
+ if (player.getMovement().y < 0)
+ player.getMovement().setY(0);
+ }
+
+ super.update(timer);
+
+ player.postMoveUpdate();
+
+ synchronized (tools) {
+ for (Tool tool : tools) {
+ if (tool instanceof Bomb) {
+ Bomb bomb = (Bomb) tool;
+ if (bomb.isExploding())
+ bomb.explode();
+ } else if (tool instanceof Stasis) {
+ Stasis stasis = (Stasis) tool;
+ stasis.updateSoundVolume(player);
+ } else if (tool instanceof Magnet) {
+ Magnet magnet = (Magnet) tool;
+ magnet.updateSoundVolume(player);
+ }
+ }
+ }
+
+ }
+
+ public float getGoalX() {
+ return goalX;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/GameState.java b/app/src/main/java/de/frajul/endlessroll/main/game/GameState.java
index f5c45e8..f354327 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/game/GameState.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/game/GameState.java
@@ -1,17 +1,17 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.game;
-
-/**
- * Created by Julian on 02.02.2016.
- */
-public enum GameState {
-
- RUNNING, PAUSED, GAME_OVER, LEVEL_FINISHED, COUNTDOWN
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.game;
+
+/**
+ * Created by Julian on 02.02.2016.
+ */
+public enum GameState {
+
+ RUNNING, PAUSED, GAME_OVER, LEVEL_FINISHED, COUNTDOWN
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/Scene.java b/app/src/main/java/de/frajul/endlessroll/main/game/Scene.java
index bad7e1d..1f2c510 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/game/Scene.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/game/Scene.java
@@ -1,231 +1,231 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.game;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.AnimatedEntity;
-import de.frajul.endlessroll.entities.Background;
-import de.frajul.endlessroll.entities.DestroyEffect;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.Obstacle;
-import de.frajul.endlessroll.entities.Player;
-import de.frajul.endlessroll.entities.collectables.Collectables;
-import de.frajul.endlessroll.entities.guis.Gui;
-import de.frajul.endlessroll.entities.particles.ParticleSource;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.entities.tileLists.Ceiling;
-import de.frajul.endlessroll.entities.tileLists.Terrain;
-import de.frajul.endlessroll.entities.tools.Tool;
-import de.frajul.endlessroll.levels.worlds.World;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 20.07.2016.
- */
-public abstract class Scene {
-
- //Not sure if needed, this why set on very high value
- private final float MAX_Y_MOVEMENT = -1f;
-
- private GameActivity gameActivity;
-
- protected Camera camera;
- private Entity playerArrow;
- private AtomicInteger screenWidth, screenHeight;
-
- protected ParticleSystem particleSystem;
- protected TexturePack textures;
- protected Background background;
- protected Terrain terrain;
- protected Ceiling ceiling;
- protected Player player;
- protected ParticleSource enviromentParticles;
- protected AtomicBoolean bombSelected;
-
- protected final List uncategorizedEntities = Collections
- .synchronizedList(new ArrayList());
- protected final List obstacles = Collections.synchronizedList(new ArrayList());
- protected final List tools = Collections.synchronizedList(new ArrayList());
- protected Collectables collectables = new Collectables();
- protected final List guis = Collections.synchronizedList(new ArrayList());
- protected Entity colorFilter = null;
-
- public Scene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
- this.gameActivity = gameActivity;
- this.particleSystem = particleSystem;
- setTexturePack(texturePack);
- camera = new Camera();
- playerArrow = new Entity(textures.playerArrow, new Vector(0, 0.9f), .2f, .2f);
- background = new Background(World.GRASSLANDS.getBackgroundTextures());
- terrain = new Terrain(World.GRASSLANDS.getTerrainTexture());
- ceiling = new Ceiling(World.GRASSLANDS.getTerrainTexture());
- player = new Player();
- bombSelected = new AtomicBoolean(false);
- screenWidth = new AtomicInteger();
- screenHeight = new AtomicInteger();
- }
-
- public void setTexturePack(TexturePack texturePack) {
- this.textures = texturePack;
- }
-
- public void reset() {
- uncategorizedEntities.clear();
- obstacles.clear();
- tools.clear();
- collectables.reset();
- camera.reset();
- background.resetPosition();
- }
-
- public void update(Timer timer) {
- updateEntityList(uncategorizedEntities, timer);
- updateEntityList(obstacles, timer);
- updateEntityList(tools, timer);
- updateEntityList(collectables, timer);
-
- if (player.getPosition().y >= player.RADIUS + 1 + camera.getY()) {
- playerArrow.getPosition().x = player.getPosition().x;
- playerArrow.getPosition().y = camera.getY() + 0.9f;
- if (!uncategorizedEntities.contains(playerArrow)) {
- uncategorizedEntities.add(playerArrow);
- }
- } else
- uncategorizedEntities.remove(playerArrow);
-
- if (enviromentParticles != null)
- enviromentParticles.getPosition().setX(camera.getX() + 1.5f);
- }
-
- private void updateEntityList(List extends Entity> list, Timer timer) {
- synchronized (list) {
- Iterator extends Entity> iterator = list.iterator();
- while (iterator.hasNext()) {
- Entity entity = iterator.next();
- if (entity instanceof Obstacle) {
- Obstacle obstacle = (Obstacle) entity;
- if (obstacle.isMoving())
- obstacle.moveWithMoveComponent(timer.getFrameTimeMilliseconds(),
- player.getSpeed());
- }
- boolean remove = updateEntity(entity, timer);
- if (remove)
- iterator.remove();
- }
- }
- }
-
- private boolean updateEntity(Entity entity, Timer timer) {
- if (entity instanceof AnimatedEntity)
- ((AnimatedEntity) entity).update(timer);
- if (!(entity instanceof Obstacle)) {
- Vector movement = entity.getMovement();
- Vector finalMovement = new Vector(movement).mul(timer.getFrameTimeMilliseconds());
- if (finalMovement.y < MAX_Y_MOVEMENT)
- finalMovement.y = MAX_Y_MOVEMENT;
- entity.move(finalMovement);
- if (entity.equals(player))
- moveEnviroment(finalMovement.x);
- }
-
- if (entity.isDestroyed() && entity.getDestroyEffect() != null) {
- if (entity.getDestroyEffect() == DestroyEffect.EXPLOSION) {
- gameActivity.getSoundManager()
- .playSound(gameActivity.getSoundManager().explosionSound);
- }
- entity.getDestroyEffect().createEffect(particleSystem, new Vector(entity.getPosition()),
- new Vector(entity.getWidth(), entity.getHeight())).start();
- }
- return entity.getRightEdge() - camera.getX() < -3f || entity.isDestroyed();
- }
-
- private void moveEnviroment(float x) {
- camera.moveX(x);
- background.move(x, camera.getX());
- terrain.update(camera.getX());
- ceiling.update(camera.getX());
- }
-
- protected Vector calcWorldFromScreenCoords(float screenX, float screenY) throws Exception {
- if (screenWidth.get() == 0 || screenHeight.get() == 0)
- throw new Exception("ScreenSize not set");
- float glCoordWidth = (2f * screenWidth.get() / (float) screenHeight.get());
- float x = ((screenX / (float) screenWidth.get()) * 2f - 1f) * glCoordWidth / 2;
- float y = -((screenY / (float) screenHeight.get()) * 2f - 1f);
- return new Vector(x, y);
- }
-
- public void setScreenSize(int width, int height) {
- this.screenWidth.set(width);
- this.screenHeight.set(height);
- }
-
- public synchronized Background getBackground() {
- return background;
- }
-
- public synchronized Terrain getTerrain() {
- return terrain;
- }
-
- public synchronized Ceiling getCeiling() {
- return ceiling;
- }
-
- public synchronized List getUncategorizedEntities() {
- return uncategorizedEntities;
- }
-
- public synchronized List getObstacles() {
- return obstacles;
- }
-
- public synchronized List getTools() {
- return tools;
- }
-
- public synchronized Collectables getCollectables() {
- return collectables;
- }
-
- public synchronized List getGuis() {
- return guis;
- }
-
- public Player getPlayer() {
- return player;
- }
-
- public TexturePack getTextures() {
- return textures;
- }
-
- public Entity getColorFilter() {
- return colorFilter;
- }
-
- public ParticleSystem getParticleSystem() {
- return particleSystem;
- }
-
- public Camera getCamera() {
- return camera;
- }
-
- public synchronized AtomicBoolean getBombSelected() {
- return bombSelected;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.game;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.AnimatedEntity;
+import de.frajul.endlessroll.entities.Background;
+import de.frajul.endlessroll.entities.DestroyEffect;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.Obstacle;
+import de.frajul.endlessroll.entities.Player;
+import de.frajul.endlessroll.entities.collectables.Collectables;
+import de.frajul.endlessroll.entities.guis.Gui;
+import de.frajul.endlessroll.entities.particles.ParticleSource;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.entities.tileLists.Ceiling;
+import de.frajul.endlessroll.entities.tileLists.Terrain;
+import de.frajul.endlessroll.entities.tools.Tool;
+import de.frajul.endlessroll.levels.worlds.World;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 20.07.2016.
+ */
+public abstract class Scene {
+
+ //Not sure if needed, this why set on very high value
+ private final float MAX_Y_MOVEMENT = -1f;
+
+ private GameActivity gameActivity;
+
+ protected Camera camera;
+ private Entity playerArrow;
+ private AtomicInteger screenWidth, screenHeight;
+
+ protected ParticleSystem particleSystem;
+ protected TexturePack textures;
+ protected Background background;
+ protected Terrain terrain;
+ protected Ceiling ceiling;
+ protected Player player;
+ protected ParticleSource enviromentParticles;
+ protected AtomicBoolean bombSelected;
+
+ protected final List uncategorizedEntities = Collections
+ .synchronizedList(new ArrayList());
+ protected final List obstacles = Collections.synchronizedList(new ArrayList());
+ protected final List tools = Collections.synchronizedList(new ArrayList());
+ protected Collectables collectables = new Collectables();
+ protected final List guis = Collections.synchronizedList(new ArrayList());
+ protected Entity colorFilter = null;
+
+ public Scene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
+ this.gameActivity = gameActivity;
+ this.particleSystem = particleSystem;
+ setTexturePack(texturePack);
+ camera = new Camera();
+ playerArrow = new Entity(textures.playerArrow, new Vector(0, 0.9f), .2f, .2f);
+ background = new Background(World.GRASSLANDS.getBackgroundTextures());
+ terrain = new Terrain(World.GRASSLANDS.getTerrainTexture());
+ ceiling = new Ceiling(World.GRASSLANDS.getTerrainTexture());
+ player = new Player();
+ bombSelected = new AtomicBoolean(false);
+ screenWidth = new AtomicInteger();
+ screenHeight = new AtomicInteger();
+ }
+
+ public void setTexturePack(TexturePack texturePack) {
+ this.textures = texturePack;
+ }
+
+ public void reset() {
+ uncategorizedEntities.clear();
+ obstacles.clear();
+ tools.clear();
+ collectables.reset();
+ camera.reset();
+ background.resetPosition();
+ }
+
+ public void update(Timer timer) {
+ updateEntityList(uncategorizedEntities, timer);
+ updateEntityList(obstacles, timer);
+ updateEntityList(tools, timer);
+ updateEntityList(collectables, timer);
+
+ if (player.getPosition().y >= player.RADIUS + 1 + camera.getY()) {
+ playerArrow.getPosition().x = player.getPosition().x;
+ playerArrow.getPosition().y = camera.getY() + 0.9f;
+ if (!uncategorizedEntities.contains(playerArrow)) {
+ uncategorizedEntities.add(playerArrow);
+ }
+ } else
+ uncategorizedEntities.remove(playerArrow);
+
+ if (enviromentParticles != null)
+ enviromentParticles.getPosition().setX(camera.getX() + 1.5f);
+ }
+
+ private void updateEntityList(List extends Entity> list, Timer timer) {
+ synchronized (list) {
+ Iterator extends Entity> iterator = list.iterator();
+ while (iterator.hasNext()) {
+ Entity entity = iterator.next();
+ if (entity instanceof Obstacle) {
+ Obstacle obstacle = (Obstacle) entity;
+ if (obstacle.isMoving())
+ obstacle.moveWithMoveComponent(timer.getFrameTimeMilliseconds(),
+ player.getSpeed());
+ }
+ boolean remove = updateEntity(entity, timer);
+ if (remove)
+ iterator.remove();
+ }
+ }
+ }
+
+ private boolean updateEntity(Entity entity, Timer timer) {
+ if (entity instanceof AnimatedEntity)
+ ((AnimatedEntity) entity).update(timer);
+ if (!(entity instanceof Obstacle)) {
+ Vector movement = entity.getMovement();
+ Vector finalMovement = new Vector(movement).mul(timer.getFrameTimeMilliseconds());
+ if (finalMovement.y < MAX_Y_MOVEMENT)
+ finalMovement.y = MAX_Y_MOVEMENT;
+ entity.move(finalMovement);
+ if (entity.equals(player))
+ moveEnviroment(finalMovement.x);
+ }
+
+ if (entity.isDestroyed() && entity.getDestroyEffect() != null) {
+ if (entity.getDestroyEffect() == DestroyEffect.EXPLOSION) {
+ gameActivity.getSoundManager()
+ .playSound(gameActivity.getSoundManager().explosionSound);
+ }
+ entity.getDestroyEffect().createEffect(particleSystem, new Vector(entity.getPosition()),
+ new Vector(entity.getWidth(), entity.getHeight())).start();
+ }
+ return entity.getRightEdge() - camera.getX() < -3f || entity.isDestroyed();
+ }
+
+ private void moveEnviroment(float x) {
+ camera.moveX(x);
+ background.move(x, camera.getX());
+ terrain.update(camera.getX());
+ ceiling.update(camera.getX());
+ }
+
+ protected Vector calcWorldFromScreenCoords(float screenX, float screenY) throws Exception {
+ if (screenWidth.get() == 0 || screenHeight.get() == 0)
+ throw new Exception("ScreenSize not set");
+ float glCoordWidth = (2f * screenWidth.get() / (float) screenHeight.get());
+ float x = ((screenX / (float) screenWidth.get()) * 2f - 1f) * glCoordWidth / 2;
+ float y = -((screenY / (float) screenHeight.get()) * 2f - 1f);
+ return new Vector(x, y);
+ }
+
+ public void setScreenSize(int width, int height) {
+ this.screenWidth.set(width);
+ this.screenHeight.set(height);
+ }
+
+ public synchronized Background getBackground() {
+ return background;
+ }
+
+ public synchronized Terrain getTerrain() {
+ return terrain;
+ }
+
+ public synchronized Ceiling getCeiling() {
+ return ceiling;
+ }
+
+ public synchronized List getUncategorizedEntities() {
+ return uncategorizedEntities;
+ }
+
+ public synchronized List getObstacles() {
+ return obstacles;
+ }
+
+ public synchronized List getTools() {
+ return tools;
+ }
+
+ public synchronized Collectables getCollectables() {
+ return collectables;
+ }
+
+ public synchronized List getGuis() {
+ return guis;
+ }
+
+ public Player getPlayer() {
+ return player;
+ }
+
+ public TexturePack getTextures() {
+ return textures;
+ }
+
+ public Entity getColorFilter() {
+ return colorFilter;
+ }
+
+ public ParticleSystem getParticleSystem() {
+ return particleSystem;
+ }
+
+ public Camera getCamera() {
+ return camera;
+ }
+
+ public synchronized AtomicBoolean getBombSelected() {
+ return bombSelected;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/StartScene.java b/app/src/main/java/de/frajul/endlessroll/main/game/StartScene.java
index 598fb9b..8a96b5d 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/game/StartScene.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/game/StartScene.java
@@ -1,55 +1,55 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.game;
-
-import java.util.Random;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.particles.ParticleSource;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.levels.worlds.World;
-import de.frajul.endlessroll.main.GameActivity;
-
-public class StartScene extends Scene {
-
- private final float TERRAIN_EDGE = -0.8f;
- private Random random;
- private World currentWorld = World.GRASSLANDS;
-
- public StartScene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
- super(gameActivity, texturePack, particleSystem);
- player.init(PlayerShape.BALL, TERRAIN_EDGE, 0.5f, 0.5f, null);
- uncategorizedEntities.add(player);
-
- random = new Random();
- randomizeWorld();
- loadTexturesForCurrentWorld();
- }
-
- public void randomizeWorld() {
- int worldId = random.nextInt(World.values().length);
- currentWorld = World.values()[worldId];
- if (currentWorld == World.ICY_MOUNTAINS) {
- enviromentParticles = new ParticleSource(new Vector(), particleSystem.snow);
- enviromentParticles.start();
- } else {
- if (enviromentParticles != null)
- enviromentParticles.kill();
- particleSystem.deleteAllSources();
- }
- }
-
- public void loadTexturesForCurrentWorld() {
- terrain.clear();
- terrain.createEndless(currentWorld, TERRAIN_EDGE);
- background.changeTextures(currentWorld.getBackgroundTextures());
- }
-
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.game;
+
+import java.util.Random;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.particles.ParticleSource;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.levels.worlds.World;
+import de.frajul.endlessroll.main.GameActivity;
+
+public class StartScene extends Scene {
+
+ private final float TERRAIN_EDGE = -0.8f;
+ private Random random;
+ private World currentWorld = World.GRASSLANDS;
+
+ public StartScene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
+ super(gameActivity, texturePack, particleSystem);
+ player.init(PlayerShape.BALL, TERRAIN_EDGE, 0.5f, 0.5f, null);
+ uncategorizedEntities.add(player);
+
+ random = new Random();
+ randomizeWorld();
+ loadTexturesForCurrentWorld();
+ }
+
+ public void randomizeWorld() {
+ int worldId = random.nextInt(World.values().length);
+ currentWorld = World.values()[worldId];
+ if (currentWorld == World.ICY_MOUNTAINS) {
+ enviromentParticles = new ParticleSource(new Vector(), particleSystem.snow);
+ enviromentParticles.start();
+ } else {
+ if (enviromentParticles != null)
+ enviromentParticles.kill();
+ particleSystem.deleteAllSources();
+ }
+ }
+
+ public void loadTexturesForCurrentWorld() {
+ terrain.clear();
+ terrain.createEndless(currentWorld, TERRAIN_EDGE);
+ background.changeTextures(currentWorld.getBackgroundTextures());
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/TestScreenScene.java b/app/src/main/java/de/frajul/endlessroll/main/game/TestScreenScene.java
index cdebe45..e2efbe3 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/game/TestScreenScene.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/game/TestScreenScene.java
@@ -1,45 +1,45 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.game;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.guis.ToolButtonBar;
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.levels.worlds.World;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.user.ToolSlotSettings;
-
-public class TestScreenScene extends Scene {
-
- public TestScreenScene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
- super(gameActivity, texturePack, particleSystem);
- // terrain.createEndless(World.GRASSLANDS, 0.6f);
- // background.changeTextures(World.ICY_MOUNTAINS.getBackgroundTexture());
- //
- // player.init(PlayerShape.BALL, 0.6f, 0.5f, 0.5f, particleSystem);
- // uncategorizedEntities.add(player);
- uncategorizedEntities
- .add(new Entity(World.GRASSLANDS.getBackgroundTextures().get(0), new Vector(), 1,
- 1));
- uncategorizedEntities
- .add(new Entity(World.ICY_MOUNTAINS.getBackgroundTextures().get(0), new Vector(-1, 0), 1,
- 1));
- uncategorizedEntities
- .add(new Entity(World.ICY_MOUNTAINS.getBackgroundTextures().get(0), new Vector(1, 0), 1,
- 1));
- try {
- guis.addAll(new ToolButtonBar(texturePack, null,
- new ToolSlotSettings("RAMP", "STASIS", "BOMB", "MAGNET", 1)).toGuiList());
- } catch (Exception ignore) {
- }
-
- camera.moveX(1);
- }
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.game;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.guis.ToolButtonBar;
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.levels.worlds.World;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.user.ToolSlotSettings;
+
+public class TestScreenScene extends Scene {
+
+ public TestScreenScene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
+ super(gameActivity, texturePack, particleSystem);
+ // terrain.createEndless(World.GRASSLANDS, 0.6f);
+ // background.changeTextures(World.ICY_MOUNTAINS.getBackgroundTexture());
+ //
+ // player.init(PlayerShape.BALL, 0.6f, 0.5f, 0.5f, particleSystem);
+ // uncategorizedEntities.add(player);
+ uncategorizedEntities
+ .add(new Entity(World.GRASSLANDS.getBackgroundTextures().get(0), new Vector(), 1,
+ 1));
+ uncategorizedEntities
+ .add(new Entity(World.ICY_MOUNTAINS.getBackgroundTextures().get(0), new Vector(-1, 0), 1,
+ 1));
+ uncategorizedEntities
+ .add(new Entity(World.ICY_MOUNTAINS.getBackgroundTextures().get(0), new Vector(1, 0), 1,
+ 1));
+ try {
+ guis.addAll(new ToolButtonBar(texturePack, null,
+ new ToolSlotSettings("RAMP", "STASIS", "BOMB", "MAGNET", 1)).toGuiList());
+ } catch (Exception ignore) {
+ }
+
+ camera.moveX(1);
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/Timer.java b/app/src/main/java/de/frajul/endlessroll/main/game/Timer.java
index fd10ba6..fcd68ff 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/game/Timer.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/game/Timer.java
@@ -1,53 +1,53 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.game;
-
-/**
- * Created by Julian on 22.11.2015.
- */
-public class Timer {
-
- private long lastFpsTime;
- private int fpsCounter;
- private int fps;
-
- private long lastTime;
- private long delta;
-
-
- public Timer() {
- lastTime = System.currentTimeMillis();
- lastFpsTime = lastTime;
- }
-
- public void update() {
- long currentTime = System.currentTimeMillis();
- delta = currentTime - lastTime;
- lastTime = currentTime;
-
- fpsCounter++;
- if (currentTime - lastFpsTime > 1000) {
- fps = fpsCounter;
- lastFpsTime += 1000;
- fpsCounter = 0;
- }
- }
-
- public float getFrameTimeMilliseconds() {
- return delta;
- }
-
- public int getFps() {
- return fps;
- }
-
- public long getCurrentTime() {
- return System.currentTimeMillis();
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.game;
+
+/**
+ * Created by Julian on 22.11.2015.
+ */
+public class Timer {
+
+ private long lastFpsTime;
+ private int fpsCounter;
+ private int fps;
+
+ private long lastTime;
+ private long delta;
+
+
+ public Timer() {
+ lastTime = System.currentTimeMillis();
+ lastFpsTime = lastTime;
+ }
+
+ public void update() {
+ long currentTime = System.currentTimeMillis();
+ delta = currentTime - lastTime;
+ lastTime = currentTime;
+
+ fpsCounter++;
+ if (currentTime - lastFpsTime > 1000) {
+ fps = fpsCounter;
+ lastFpsTime += 1000;
+ fpsCounter = 0;
+ }
+ }
+
+ public float getFrameTimeMilliseconds() {
+ return delta;
+ }
+
+ public int getFps() {
+ return fps;
+ }
+
+ public long getCurrentTime() {
+ return System.currentTimeMillis();
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/physics/Physics.java b/app/src/main/java/de/frajul/endlessroll/main/physics/Physics.java
index 6b1eb50..608513f 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/physics/Physics.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/physics/Physics.java
@@ -1,202 +1,202 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.physics;
-
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.Obstacle;
-import de.frajul.endlessroll.entities.collectables.Collectables;
-import de.frajul.endlessroll.entities.collectables.Energy;
-import de.frajul.endlessroll.entities.collectables.Star;
-import de.frajul.endlessroll.entities.collision.CollisionDetector;
-import de.frajul.endlessroll.entities.collision.collisionData.EntityCollisionData;
-import de.frajul.endlessroll.entities.collision.collisionData.ObstacleCollisionData;
-import de.frajul.endlessroll.entities.collision.collisionData.PlayerCollisionData;
-import de.frajul.endlessroll.entities.collision.collisionData.ToolCollisionData;
-import de.frajul.endlessroll.entities.collision.geometry.Circle;
-import de.frajul.endlessroll.entities.tileLists.Ceiling;
-import de.frajul.endlessroll.entities.tileLists.Terrain;
-import de.frajul.endlessroll.entities.tileLists.Tile;
-import de.frajul.endlessroll.entities.tools.Tool;
-import de.frajul.endlessroll.main.game.GameScene;
-import de.frajul.endlessroll.main.game.Scene;
-import de.frajul.endlessroll.main.game.Timer;
-
-/**
- * Created by Julian on 27.11.2015.
- */
-public class Physics {
-
- public final float GRAVITY_FORCE = .0000025f;
- private final float MAX_TOOL_OBST_LEFT_EDGE_TOLERANCE = 0.05f;
- private CollisionDetector detector;
-
- public Physics() {
- detector = new CollisionDetector();
- }
-
- public void applyGravity(GameScene scene, Timer timer) {
- float gravity = GRAVITY_FORCE * timer.getFrameTimeMilliseconds();
-
- scene.getPlayer().setGravityForce(-gravity);
-
- synchronized (scene.getTools()) {
- for (Tool tool : scene.getTools()) {
- if (tool.isFloating())
- continue;
- tool.getMovement().y -= gravity * 2;
- }
- }
- }
-
- public synchronized void checkToolCollision(Scene scene) {
- synchronized (scene.getTools()) {
- for (Tool tool : scene.getTools()) {
- checkSingleToolCollision(tool, scene, false);
- }
- }
- }
-
- public synchronized void checkSingleToolCollision(Tool tool, Scene scene, boolean toolWasJustPlaced) {
- if (tool.isFloating())
- return;
-
- boolean collidingWithTerrain = isToolCollidingWithTerrain(tool, scene.getTerrain());
- if (collidingWithTerrain) {
- tool.getMovement().y = 0;
- tool.setToTerrain(scene.getTerrain().getEdge());
- }
-
- Obstacle collidingObstacle = getHighestObstacleToolIsCollidingWith(tool, scene);
- if (collidingObstacle != null) {
- if (!toolWasJustPlaced && collidingObstacle.isMoving() && isToolCollidingWithMoveableObstacleOnLeftEdge(tool, collidingObstacle)) {
- tool.getPosition().x = collidingObstacle.getPosition().x - collidingObstacle.getWidth() / 2 - tool.getWidth() / 2;
- } else {
- tool.getMovement().y = 0;
- tool.setToTerrain(collidingObstacle.getTopEdge());
- }
- }
-
- }
-
- @Nullable
- private Obstacle getHighestObstacleToolIsCollidingWith(Tool tool, Scene scene) {
- List collisionObstacles = new ArrayList<>();
- synchronized (scene.getObstacles()) {
- for (Obstacle obstacle : scene.getObstacles()) {
- if (detector.isCollision(tool.getWorldCollisionBounds(), obstacle)) {
- collisionObstacles.add(obstacle);
- }
- }
- }
- Obstacle highest = null;
- for (Obstacle obstacle : collisionObstacles)
- if (highest == null || highest.getTopEdge() < obstacle.getTopEdge())
- highest = obstacle;
- return highest;
- }
-
- private boolean isToolCollidingWithTerrain(Entity tool, Terrain terrain) {
- for (Tile tile : terrain) {
- if (detector.isCollision(tool, tile))
- return true;
- }
- return false;
- }
-
- public PlayerCollisionData getPlayerCollisionData(GameScene scene) {
- EntityCollisionData terrainData = playerCollidesWithTerrain(scene);
- EntityCollisionData ceilingData = playerCollidesWithCeiling(scene);
- ObstacleCollisionData obstacleData = playerCollidesWithObstacle(scene);
- ToolCollisionData toolData = playerCollidesWithTool(scene);
- EntityCollisionData starData = playerCollidesWithStar(scene);
- EntityCollisionData energyData = playerCollidesWithEnergy(scene);
- return new PlayerCollisionData(terrainData, ceilingData, obstacleData, toolData, starData,
- energyData);
- }
-
- private EntityCollisionData playerCollidesWithTerrain(GameScene scene) {
- Terrain terrain = scene.getTerrain();
- for (Tile terrainTile : terrain) {
- EntityCollisionData data = detector
- .playerTerrainCollision(scene.getPlayer(), terrainTile);
- if (data.isCollision())
- return data;
- }
- return new EntityCollisionData(null, null);
- }
-
- private EntityCollisionData playerCollidesWithCeiling(GameScene scene) {
- Ceiling ceiling = scene.getCeiling();
- for (Tile ceilingTile : ceiling) {
- EntityCollisionData data = detector
- .playerCeilingCollision(scene.getPlayer(), ceilingTile);
- if (data.isCollision())
- return data;
- }
- return new EntityCollisionData(null, null);
- }
-
- private ObstacleCollisionData playerCollidesWithObstacle(GameScene scene) {
- List collisions = new ArrayList<>();
- synchronized (scene.getObstacles()) {
- for (Obstacle obstacle : scene.getObstacles()) {
- EntityCollisionData data = detector
- .playerEntityCollision(scene.getPlayer(), obstacle);
- if (data.isCollision())
- collisions.add(data);
- }
- }
- return new ObstacleCollisionData(collisions);
- }
-
- private ToolCollisionData playerCollidesWithTool(GameScene scene) {
- List tools = new ArrayList<>();
- Circle circle = new Circle(scene.getPlayer());
- synchronized (scene.getTools()) {
- for (Tool tool : scene.getTools()) {
- if (detector.isCollision(tool.getPlayerCollisionBounds(), circle))
- tools.add(tool);
- }
- }
- return new ToolCollisionData(tools);
- }
-
- private EntityCollisionData playerCollidesWithStar(GameScene scene) {
- Collectables collectables = scene.getCollectables();
- synchronized (collectables.getStars()) {
- for (Star star : collectables.getStars()) {
- EntityCollisionData data = detector.playerEntityCollision(scene.getPlayer(), star);
- if (data.isCollision())
- return data;
- }
- }
- return new EntityCollisionData(null, null);
- }
-
- private EntityCollisionData playerCollidesWithEnergy(GameScene scene) {
- Energy energy = scene.getCollectables().getEnergy();
- if (energy != null) {
- EntityCollisionData data = detector.playerEntityCollision(scene.getPlayer(), energy);
- return data;
- } else
- return new EntityCollisionData(null, null);
- }
-
- private boolean isToolCollidingWithMoveableObstacleOnLeftEdge(Tool tool, Obstacle obstacle) {
- if (obstacle.getMovement().getX() < 0) {
- return Math.abs(tool.getRightEdge() - obstacle.getLeftEdge()) <= MAX_TOOL_OBST_LEFT_EDGE_TOLERANCE;
- }
- return false;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.physics;
+
+import android.support.annotation.Nullable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.Obstacle;
+import de.frajul.endlessroll.entities.collectables.Collectables;
+import de.frajul.endlessroll.entities.collectables.Energy;
+import de.frajul.endlessroll.entities.collectables.Star;
+import de.frajul.endlessroll.entities.collision.CollisionDetector;
+import de.frajul.endlessroll.entities.collision.collisionData.EntityCollisionData;
+import de.frajul.endlessroll.entities.collision.collisionData.ObstacleCollisionData;
+import de.frajul.endlessroll.entities.collision.collisionData.PlayerCollisionData;
+import de.frajul.endlessroll.entities.collision.collisionData.ToolCollisionData;
+import de.frajul.endlessroll.entities.collision.geometry.Circle;
+import de.frajul.endlessroll.entities.tileLists.Ceiling;
+import de.frajul.endlessroll.entities.tileLists.Terrain;
+import de.frajul.endlessroll.entities.tileLists.Tile;
+import de.frajul.endlessroll.entities.tools.Tool;
+import de.frajul.endlessroll.main.game.GameScene;
+import de.frajul.endlessroll.main.game.Scene;
+import de.frajul.endlessroll.main.game.Timer;
+
+/**
+ * Created by Julian on 27.11.2015.
+ */
+public class Physics {
+
+ public final float GRAVITY_FORCE = .0000025f;
+ private final float MAX_TOOL_OBST_LEFT_EDGE_TOLERANCE = 0.05f;
+ private CollisionDetector detector;
+
+ public Physics() {
+ detector = new CollisionDetector();
+ }
+
+ public void applyGravity(GameScene scene, Timer timer) {
+ float gravity = GRAVITY_FORCE * timer.getFrameTimeMilliseconds();
+
+ scene.getPlayer().setGravityForce(-gravity);
+
+ synchronized (scene.getTools()) {
+ for (Tool tool : scene.getTools()) {
+ if (tool.isFloating())
+ continue;
+ tool.getMovement().y -= gravity * 2;
+ }
+ }
+ }
+
+ public synchronized void checkToolCollision(Scene scene) {
+ synchronized (scene.getTools()) {
+ for (Tool tool : scene.getTools()) {
+ checkSingleToolCollision(tool, scene, false);
+ }
+ }
+ }
+
+ public synchronized void checkSingleToolCollision(Tool tool, Scene scene, boolean toolWasJustPlaced) {
+ if (tool.isFloating())
+ return;
+
+ boolean collidingWithTerrain = isToolCollidingWithTerrain(tool, scene.getTerrain());
+ if (collidingWithTerrain) {
+ tool.getMovement().y = 0;
+ tool.setToTerrain(scene.getTerrain().getEdge());
+ }
+
+ Obstacle collidingObstacle = getHighestObstacleToolIsCollidingWith(tool, scene);
+ if (collidingObstacle != null) {
+ if (!toolWasJustPlaced && collidingObstacle.isMoving() && isToolCollidingWithMoveableObstacleOnLeftEdge(tool, collidingObstacle)) {
+ tool.getPosition().x = collidingObstacle.getPosition().x - collidingObstacle.getWidth() / 2 - tool.getWidth() / 2;
+ } else {
+ tool.getMovement().y = 0;
+ tool.setToTerrain(collidingObstacle.getTopEdge());
+ }
+ }
+
+ }
+
+ @Nullable
+ private Obstacle getHighestObstacleToolIsCollidingWith(Tool tool, Scene scene) {
+ List collisionObstacles = new ArrayList<>();
+ synchronized (scene.getObstacles()) {
+ for (Obstacle obstacle : scene.getObstacles()) {
+ if (detector.isCollision(tool.getWorldCollisionBounds(), obstacle)) {
+ collisionObstacles.add(obstacle);
+ }
+ }
+ }
+ Obstacle highest = null;
+ for (Obstacle obstacle : collisionObstacles)
+ if (highest == null || highest.getTopEdge() < obstacle.getTopEdge())
+ highest = obstacle;
+ return highest;
+ }
+
+ private boolean isToolCollidingWithTerrain(Entity tool, Terrain terrain) {
+ for (Tile tile : terrain) {
+ if (detector.isCollision(tool, tile))
+ return true;
+ }
+ return false;
+ }
+
+ public PlayerCollisionData getPlayerCollisionData(GameScene scene) {
+ EntityCollisionData terrainData = playerCollidesWithTerrain(scene);
+ EntityCollisionData ceilingData = playerCollidesWithCeiling(scene);
+ ObstacleCollisionData obstacleData = playerCollidesWithObstacle(scene);
+ ToolCollisionData toolData = playerCollidesWithTool(scene);
+ EntityCollisionData starData = playerCollidesWithStar(scene);
+ EntityCollisionData energyData = playerCollidesWithEnergy(scene);
+ return new PlayerCollisionData(terrainData, ceilingData, obstacleData, toolData, starData,
+ energyData);
+ }
+
+ private EntityCollisionData playerCollidesWithTerrain(GameScene scene) {
+ Terrain terrain = scene.getTerrain();
+ for (Tile terrainTile : terrain) {
+ EntityCollisionData data = detector
+ .playerTerrainCollision(scene.getPlayer(), terrainTile);
+ if (data.isCollision())
+ return data;
+ }
+ return new EntityCollisionData(null, null);
+ }
+
+ private EntityCollisionData playerCollidesWithCeiling(GameScene scene) {
+ Ceiling ceiling = scene.getCeiling();
+ for (Tile ceilingTile : ceiling) {
+ EntityCollisionData data = detector
+ .playerCeilingCollision(scene.getPlayer(), ceilingTile);
+ if (data.isCollision())
+ return data;
+ }
+ return new EntityCollisionData(null, null);
+ }
+
+ private ObstacleCollisionData playerCollidesWithObstacle(GameScene scene) {
+ List collisions = new ArrayList<>();
+ synchronized (scene.getObstacles()) {
+ for (Obstacle obstacle : scene.getObstacles()) {
+ EntityCollisionData data = detector
+ .playerEntityCollision(scene.getPlayer(), obstacle);
+ if (data.isCollision())
+ collisions.add(data);
+ }
+ }
+ return new ObstacleCollisionData(collisions);
+ }
+
+ private ToolCollisionData playerCollidesWithTool(GameScene scene) {
+ List tools = new ArrayList<>();
+ Circle circle = new Circle(scene.getPlayer());
+ synchronized (scene.getTools()) {
+ for (Tool tool : scene.getTools()) {
+ if (detector.isCollision(tool.getPlayerCollisionBounds(), circle))
+ tools.add(tool);
+ }
+ }
+ return new ToolCollisionData(tools);
+ }
+
+ private EntityCollisionData playerCollidesWithStar(GameScene scene) {
+ Collectables collectables = scene.getCollectables();
+ synchronized (collectables.getStars()) {
+ for (Star star : collectables.getStars()) {
+ EntityCollisionData data = detector.playerEntityCollision(scene.getPlayer(), star);
+ if (data.isCollision())
+ return data;
+ }
+ }
+ return new EntityCollisionData(null, null);
+ }
+
+ private EntityCollisionData playerCollidesWithEnergy(GameScene scene) {
+ Energy energy = scene.getCollectables().getEnergy();
+ if (energy != null) {
+ EntityCollisionData data = detector.playerEntityCollision(scene.getPlayer(), energy);
+ return data;
+ } else
+ return new EntityCollisionData(null, null);
+ }
+
+ private boolean isToolCollidingWithMoveableObstacleOnLeftEdge(Tool tool, Obstacle obstacle) {
+ if (obstacle.getMovement().getX() < 0) {
+ return Math.abs(tool.getRightEdge() - obstacle.getLeftEdge()) <= MAX_TOOL_OBST_LEFT_EDGE_TOLERANCE;
+ }
+ return false;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/GLScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/GLScreen.java
index 1b67ed1..ddd18ee 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/GLScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/GLScreen.java
@@ -1,31 +1,31 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.support.annotation.LayoutRes;
-import android.view.ViewGroup;
-
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.MyGlSurfaceView;
-import de.frajul.endlessroll.rendering.renderer.GameRenderer;
-
-/**
- * Created by Julian on 30.07.2016.
- */
-public abstract class GLScreen extends Screen {
-
- protected MyGlSurfaceView myGlSurfaceView;
- protected GameRenderer gameRenderer;
-
- public GLScreen(ScreenType type, GameActivity gameActivity, @LayoutRes int layoutId, MyGlSurfaceView glView) {
- super(type, gameActivity, layoutId);
- this.myGlSurfaceView = glView;
- this.gameRenderer = glView.getRenderer();
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.support.annotation.LayoutRes;
+import android.view.ViewGroup;
+
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.MyGlSurfaceView;
+import de.frajul.endlessroll.rendering.renderer.GameRenderer;
+
+/**
+ * Created by Julian on 30.07.2016.
+ */
+public abstract class GLScreen extends Screen {
+
+ protected MyGlSurfaceView myGlSurfaceView;
+ protected GameRenderer gameRenderer;
+
+ public GLScreen(ScreenType type, GameActivity gameActivity, @LayoutRes int layoutId, MyGlSurfaceView glView) {
+ super(type, gameActivity, layoutId);
+ this.myGlSurfaceView = glView;
+ this.gameRenderer = glView.getRenderer();
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/GLTestScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/GLTestScreen.java
index 3f86748..03e741f 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/GLTestScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/GLTestScreen.java
@@ -1,41 +1,41 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.widget.RelativeLayout;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.MyGlSurfaceView;
-import de.frajul.endlessroll.rendering.Rendering;
-
-/**
- * Created by Julian on 03.08.2017.
- */
-
-public class GLTestScreen extends GLScreen {
-
- private Rendering rendering;
-
- public GLTestScreen(GameActivity gameActivity, MyGlSurfaceView glView) throws Exception {
- super(ScreenType.GL_TEST, gameActivity, R.layout.gl_test_screen, glView);
- rendering = new TestScreenRendering(gameActivity, gameRenderer);
- }
-
- @Override
- public void prepareToBeShown() {
- gameActivity.getSoundManager().menuMusic.start();
-
- gameRenderer.setCurrentRendering(rendering);
- }
-
- @Override
- public void onBackKeyDown() {
- flipToCaller();
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.widget.RelativeLayout;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.MyGlSurfaceView;
+import de.frajul.endlessroll.rendering.Rendering;
+
+/**
+ * Created by Julian on 03.08.2017.
+ */
+
+public class GLTestScreen extends GLScreen {
+
+ private Rendering rendering;
+
+ public GLTestScreen(GameActivity gameActivity, MyGlSurfaceView glView) throws Exception {
+ super(ScreenType.GL_TEST, gameActivity, R.layout.gl_test_screen, glView);
+ rendering = new TestScreenRendering(gameActivity, gameRenderer);
+ }
+
+ @Override
+ public void prepareToBeShown() {
+ gameActivity.getSoundManager().menuMusic.start();
+
+ gameRenderer.setCurrentRendering(rendering);
+ }
+
+ @Override
+ public void onBackKeyDown() {
+ flipToCaller();
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/GameScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/GameScreen.java
index e5edd04..a3ea24b 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/GameScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/GameScreen.java
@@ -1,108 +1,108 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.widget.RelativeLayout;
-
-import java.util.List;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.LevelPack;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameHandler;
-import de.frajul.endlessroll.main.MyGlSurfaceView;
-import de.frajul.endlessroll.main.game.Game;
-import de.frajul.endlessroll.main.game.GameState;
-import de.frajul.endlessroll.main.tutorial.BreakPoint;
-import de.frajul.endlessroll.views.ViewManager;
-
-/**
- * Created by Julian on 08.02.2016.
- */
-public class GameScreen extends GLScreen {
-
- private Game game;
-
- public GameScreen(GameActivity gameActivity, MyGlSurfaceView glSurfaceView) throws Exception {
- super(ScreenType.GAME, gameActivity, R.layout.game, glSurfaceView);
- game = new Game(gameViewHandler, this, gameActivity, gameRenderer);
- }
-
- @Override
- public void prepareToBeShown() {
- gameRenderer.setCurrentRendering(game);
- game.getViewManager().prepareToBeShown();
-
- gameActivity.getSoundManager().menuMusic.stop();
- }
-
- public void onPause() {
- game.tryToPause();
- }
-
- public void setGamePausedWithoutMenu() {
- game.pauseWithoutMenu();
- }
-
- public void onResume() {
- game.setRunning();
- }
-
- public boolean isLevelFinished() {
- return game.getGameState() == GameState.LEVEL_FINISHED;
- }
-
- public ViewManager getGameViewManager() {
- return game.getViewManager();
- }
-
- @Override
- public void onBackKeyDown() {
- if(game.isInPhotoMode())
- game.endPhotoMode();
- game.tryToPause();
- if (isLevelFinished())
- game.onGoalMessageKeyBack();
- }
-
- public void startGame(LevelPack levelPack, Level level) {
- game.resetViews();
- game.startGame(levelPack, level);
- }
-
- private GameHandler gameViewHandler = new GameHandler() {
-
- @Override
- public void startInUiThread(Runnable runnable) {
- gameActivity.runOnUiThread(runnable);
- }
-
- @Override
- public void toScreen(ScreenType screen) {
- gameActivity.flipToScreen(screen);
- gameRenderer.setCurrentRendering(null);
- }
-
- @Override
- public RelativeLayout getRootLayout() {
- return layout;
- }
-
- @Override
- public void showTutorialScreen(List breakPoints) {
- gameActivity.showTutorial(breakPoints);
- }
-
- @Override
- public void onException(Exception e) {
- gameActivity.onException(e);
- }
- };
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.widget.RelativeLayout;
+
+import java.util.List;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.LevelPack;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameHandler;
+import de.frajul.endlessroll.main.MyGlSurfaceView;
+import de.frajul.endlessroll.main.game.Game;
+import de.frajul.endlessroll.main.game.GameState;
+import de.frajul.endlessroll.main.tutorial.BreakPoint;
+import de.frajul.endlessroll.views.ViewManager;
+
+/**
+ * Created by Julian on 08.02.2016.
+ */
+public class GameScreen extends GLScreen {
+
+ private Game game;
+
+ public GameScreen(GameActivity gameActivity, MyGlSurfaceView glSurfaceView) throws Exception {
+ super(ScreenType.GAME, gameActivity, R.layout.game, glSurfaceView);
+ game = new Game(gameViewHandler, this, gameActivity, gameRenderer);
+ }
+
+ @Override
+ public void prepareToBeShown() {
+ gameRenderer.setCurrentRendering(game);
+ game.getViewManager().prepareToBeShown();
+
+ gameActivity.getSoundManager().menuMusic.stop();
+ }
+
+ public void onPause() {
+ game.tryToPause();
+ }
+
+ public void setGamePausedWithoutMenu() {
+ game.pauseWithoutMenu();
+ }
+
+ public void onResume() {
+ game.setRunning();
+ }
+
+ public boolean isLevelFinished() {
+ return game.getGameState() == GameState.LEVEL_FINISHED;
+ }
+
+ public ViewManager getGameViewManager() {
+ return game.getViewManager();
+ }
+
+ @Override
+ public void onBackKeyDown() {
+ if(game.isInPhotoMode())
+ game.endPhotoMode();
+ game.tryToPause();
+ if (isLevelFinished())
+ game.onGoalMessageKeyBack();
+ }
+
+ public void startGame(LevelPack levelPack, Level level) {
+ game.resetViews();
+ game.startGame(levelPack, level);
+ }
+
+ private GameHandler gameViewHandler = new GameHandler() {
+
+ @Override
+ public void startInUiThread(Runnable runnable) {
+ gameActivity.runOnUiThread(runnable);
+ }
+
+ @Override
+ public void toScreen(ScreenType screen) {
+ gameActivity.flipToScreen(screen);
+ gameRenderer.setCurrentRendering(null);
+ }
+
+ @Override
+ public RelativeLayout getRootLayout() {
+ return layout;
+ }
+
+ @Override
+ public void showTutorialScreen(List breakPoints) {
+ gameActivity.showTutorial(breakPoints);
+ }
+
+ @Override
+ public void onException(Exception e) {
+ gameActivity.onException(e);
+ }
+ };
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/LevelsScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/LevelsScreen.java
index c8e0295..5c790eb 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/LevelsScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/LevelsScreen.java
@@ -1,131 +1,131 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.view.View;
-import android.widget.LinearLayout;
-
-import com.google.android.gms.ads.AdRequest;
-import com.google.android.gms.ads.AdView;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.LevelPack;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameLog;
-import de.frajul.endlessroll.main.ads.AdLoadingListener;
-import de.frajul.endlessroll.main.ads.CustomAdListener;
-import de.frajul.endlessroll.views.LevelButton;
-import de.frajul.endlessroll.views.LevelButtonOnClickListener;
-import de.frajul.endlessroll.views.TopBar;
-
-/**
- * Created by Julian on 23.04.2016.
- */
-public class LevelsScreen extends Screen implements LevelButtonOnClickListener, AdLoadingListener {
-
- private LevelPack levelPack;
-
- private TopBar topBar;
- private LinearLayout topRow;
- private LinearLayout bottomRow;
- private AdView adView;
- private AtomicBoolean waitingForAdResponse;
- private AtomicBoolean adLoaded;
-
- public LevelsScreen(GameActivity gameActivity) {
- super(ScreenType.LEVELS, gameActivity, R.layout.levels);
- topBar = super.createTopBar(R.id.levels_topbar);
- topRow = layout.findViewById(R.id.levels_top_row);
- bottomRow = layout.findViewById(R.id.levels_bottom_row);
- adView = layout.findViewById(R.id.levels_ad_view);
- adView.setAdListener(new CustomAdListener(this));
- adView.setVisibility(View.GONE);
-
- waitingForAdResponse = new AtomicBoolean(false);
- adLoaded = new AtomicBoolean(false);
- loadAd();
- }
-
- public void onLevelPackSelected(LevelPack levelPack) {
- this.levelPack = levelPack;
- }
-
- private void build() {
- topRow.removeAllViews();
- bottomRow.removeAllViews();
- int levelCount = levelPack.getLevels().size();
-
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- params.setMargins(15, 15, 15, 15);
-
- for (Level level : levelPack.getLevels())
- createButton(level, levelCount, params);
- }
-
- private void createButton(Level level, int levelCount, LinearLayout.LayoutParams params) {
- LevelButton button = new LevelButton(gameActivity, this, R.layout.levelbutton);
- button.init(level);
-
- int halfLevelCount = levelCount / 2;
- if (levelCount % 2 == 1)
- halfLevelCount++;
-
- if (level.getId() <= halfLevelCount)
- topRow.addView(button.getView(), params);
- else
- bottomRow.addView(button.getView(), params);
- }
-
- private void loadAd() {
- waitingForAdResponse.set(true);
- AdRequest adRequest = new AdRequest.Builder().build();
- adView.loadAd(adRequest);
- }
-
- @Override
- public void prepareToBeShown() {
- gameActivity.getSoundManager().menuMusic.start();
-
- if (!adLoaded.get() && !waitingForAdResponse.get())
- loadAd();
-
- topBar.update();
- build();
- }
-
- @Override
- public void onBackKeyDown() {
- flipTo(ScreenType.WORLDS);
- }
-
- @Override
- public void onClick(LevelButton levelButton) {
- Level level = levelButton.getLevel();
- if (!level.isLocked())
- gameActivity.startGame(levelPack, level);
- }
-
- @Override
- public void onAdLoaded() {
- adLoaded.set(true);
- waitingForAdResponse.set(false);
- adView.setVisibility(View.VISIBLE);
- }
-
- @Override
- public void onAdFailedToLoad(int errorCode) {
- adLoaded.set(false);
- waitingForAdResponse.set(false);
- GameLog.i("LevelsScreen-Ad failed to load. ErrorCode=" + errorCode);
- adView.setVisibility(View.GONE);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.view.View;
+import android.widget.LinearLayout;
+
+import com.google.android.gms.ads.AdRequest;
+import com.google.android.gms.ads.AdView;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.LevelPack;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameLog;
+import de.frajul.endlessroll.main.ads.AdLoadingListener;
+import de.frajul.endlessroll.main.ads.CustomAdListener;
+import de.frajul.endlessroll.views.LevelButton;
+import de.frajul.endlessroll.views.LevelButtonOnClickListener;
+import de.frajul.endlessroll.views.TopBar;
+
+/**
+ * Created by Julian on 23.04.2016.
+ */
+public class LevelsScreen extends Screen implements LevelButtonOnClickListener, AdLoadingListener {
+
+ private LevelPack levelPack;
+
+ private TopBar topBar;
+ private LinearLayout topRow;
+ private LinearLayout bottomRow;
+ private AdView adView;
+ private AtomicBoolean waitingForAdResponse;
+ private AtomicBoolean adLoaded;
+
+ public LevelsScreen(GameActivity gameActivity) {
+ super(ScreenType.LEVELS, gameActivity, R.layout.levels);
+ topBar = super.createTopBar(R.id.levels_topbar);
+ topRow = layout.findViewById(R.id.levels_top_row);
+ bottomRow = layout.findViewById(R.id.levels_bottom_row);
+ adView = layout.findViewById(R.id.levels_ad_view);
+ adView.setAdListener(new CustomAdListener(this));
+ adView.setVisibility(View.GONE);
+
+ waitingForAdResponse = new AtomicBoolean(false);
+ adLoaded = new AtomicBoolean(false);
+ loadAd();
+ }
+
+ public void onLevelPackSelected(LevelPack levelPack) {
+ this.levelPack = levelPack;
+ }
+
+ private void build() {
+ topRow.removeAllViews();
+ bottomRow.removeAllViews();
+ int levelCount = levelPack.getLevels().size();
+
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
+ LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(15, 15, 15, 15);
+
+ for (Level level : levelPack.getLevels())
+ createButton(level, levelCount, params);
+ }
+
+ private void createButton(Level level, int levelCount, LinearLayout.LayoutParams params) {
+ LevelButton button = new LevelButton(gameActivity, this, R.layout.levelbutton);
+ button.init(level);
+
+ int halfLevelCount = levelCount / 2;
+ if (levelCount % 2 == 1)
+ halfLevelCount++;
+
+ if (level.getId() <= halfLevelCount)
+ topRow.addView(button.getView(), params);
+ else
+ bottomRow.addView(button.getView(), params);
+ }
+
+ private void loadAd() {
+ waitingForAdResponse.set(true);
+ AdRequest adRequest = new AdRequest.Builder().build();
+ adView.loadAd(adRequest);
+ }
+
+ @Override
+ public void prepareToBeShown() {
+ gameActivity.getSoundManager().menuMusic.start();
+
+ if (!adLoaded.get() && !waitingForAdResponse.get())
+ loadAd();
+
+ topBar.update();
+ build();
+ }
+
+ @Override
+ public void onBackKeyDown() {
+ flipTo(ScreenType.WORLDS);
+ }
+
+ @Override
+ public void onClick(LevelButton levelButton) {
+ Level level = levelButton.getLevel();
+ if (!level.isLocked())
+ gameActivity.startGame(levelPack, level);
+ }
+
+ @Override
+ public void onAdLoaded() {
+ adLoaded.set(true);
+ waitingForAdResponse.set(false);
+ adView.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onAdFailedToLoad(int errorCode) {
+ adLoaded.set(false);
+ waitingForAdResponse.set(false);
+ GameLog.i("LevelsScreen-Ad failed to load. ErrorCode=" + errorCode);
+ adView.setVisibility(View.GONE);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/PlayerShapeShopScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/PlayerShapeShopScreen.java
index b1ab868..c187c37 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/PlayerShapeShopScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/PlayerShapeShopScreen.java
@@ -1,96 +1,96 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.entities.shapes.PlayerShapeButtonOnClickListener;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.views.PlayerShapeButton;
-import de.frajul.endlessroll.views.ShapeInspector;
-import de.frajul.endlessroll.views.TopBar;
-
-/**
- * Created by Julian on 08.07.2016.
- */
-public class PlayerShapeShopScreen extends Screen implements PlayerShapeButtonOnClickListener {
-
- private PlayerShapeButton activeButton;
-
- private ShapeInspector shapeInspector;
-
- private TopBar topBar;
- private LinearLayout topRow;
- private LinearLayout bottomRow;
-
- public PlayerShapeShopScreen(GameActivity gameActivity) {
- super(ScreenType.SHAPE_SHOP, gameActivity, R.layout.shape_shop);
- topBar = super.createTopBar(R.id.shape_shop_topbar);
- topRow = layout.findViewById(R.id.shape_shop_topRow);
- bottomRow = layout.findViewById(R.id.shape_shop_bottomRow);
- shapeInspector = new ShapeInspector(gameActivity,
- layout.findViewById(R.id.shape_shop_shape_inspector));
- }
-
- private void createViews() {
- topRow.removeAllViews();
- bottomRow.removeAllViews();
-
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- params.setMargins(30, 0, 30, 0);
-
- for (PlayerShape playerShape : PlayerShape.values()) {
- playerShape.getUnlockTask().update(gameActivity.getLevelManager());
- boolean locked = !playerShape.getUnlockTask()
- .isConditionFulfilled();
- PlayerShapeButton button = new PlayerShapeButton(gameActivity, playerShape, this,
- locked);
- if (playerShape.isInTopRow())
- topRow.addView(button.getView(), params);
- else
- bottomRow.addView(button.getView(), params);
-
- if (playerShape.equals(gameActivity.getUser().getCurrentPlayerShape())) {
- this.activeButton = button;
- button.startRotating();
- }
- }
-
- shapeInspector.update(activeButton.getPlayerShape(), activeButton.isLocked());
- }
-
- @Override
- public void prepareToBeShown() {
- gameActivity.getSoundManager().menuMusic.start();
-
- createViews();
- topBar.update();
- topBar.setCustomCallerForScreenSwitch(super.caller);
- }
-
- @Override
- public void onBackKeyDown() {
- gameActivity.getDataStorageHandler().writeUserData(gameActivity.getUser());
- flipToCaller();
- }
-
- @Override
- public void onClick(PlayerShapeButton button) {
- shapeInspector.update(button.getPlayerShape(), button.isLocked());
- if (!button.isLocked()) {
- activeButton.stopRotating();
- activeButton = button;
- activeButton.startRotating();
- gameActivity.getUser().setCurrentPlayerShape(button.getPlayerShape());
- }
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.entities.shapes.PlayerShapeButtonOnClickListener;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.views.PlayerShapeButton;
+import de.frajul.endlessroll.views.ShapeInspector;
+import de.frajul.endlessroll.views.TopBar;
+
+/**
+ * Created by Julian on 08.07.2016.
+ */
+public class PlayerShapeShopScreen extends Screen implements PlayerShapeButtonOnClickListener {
+
+ private PlayerShapeButton activeButton;
+
+ private ShapeInspector shapeInspector;
+
+ private TopBar topBar;
+ private LinearLayout topRow;
+ private LinearLayout bottomRow;
+
+ public PlayerShapeShopScreen(GameActivity gameActivity) {
+ super(ScreenType.SHAPE_SHOP, gameActivity, R.layout.shape_shop);
+ topBar = super.createTopBar(R.id.shape_shop_topbar);
+ topRow = layout.findViewById(R.id.shape_shop_topRow);
+ bottomRow = layout.findViewById(R.id.shape_shop_bottomRow);
+ shapeInspector = new ShapeInspector(gameActivity,
+ layout.findViewById(R.id.shape_shop_shape_inspector));
+ }
+
+ private void createViews() {
+ topRow.removeAllViews();
+ bottomRow.removeAllViews();
+
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
+ LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(30, 0, 30, 0);
+
+ for (PlayerShape playerShape : PlayerShape.values()) {
+ playerShape.getUnlockTask().update(gameActivity.getLevelManager());
+ boolean locked = !playerShape.getUnlockTask()
+ .isConditionFulfilled();
+ PlayerShapeButton button = new PlayerShapeButton(gameActivity, playerShape, this,
+ locked);
+ if (playerShape.isInTopRow())
+ topRow.addView(button.getView(), params);
+ else
+ bottomRow.addView(button.getView(), params);
+
+ if (playerShape.equals(gameActivity.getUser().getCurrentPlayerShape())) {
+ this.activeButton = button;
+ button.startRotating();
+ }
+ }
+
+ shapeInspector.update(activeButton.getPlayerShape(), activeButton.isLocked());
+ }
+
+ @Override
+ public void prepareToBeShown() {
+ gameActivity.getSoundManager().menuMusic.start();
+
+ createViews();
+ topBar.update();
+ topBar.setCustomCallerForScreenSwitch(super.caller);
+ }
+
+ @Override
+ public void onBackKeyDown() {
+ gameActivity.getDataStorageHandler().writeUserData(gameActivity.getUser());
+ flipToCaller();
+ }
+
+ @Override
+ public void onClick(PlayerShapeButton button) {
+ shapeInspector.update(button.getPlayerShape(), button.isLocked());
+ if (!button.isLocked()) {
+ activeButton.stopRotating();
+ activeButton = button;
+ activeButton.startRotating();
+ gameActivity.getUser().setCurrentPlayerShape(button.getPlayerShape());
+ }
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/PreStartScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/PreStartScreen.java
index 6c6fb2a..d765907 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/PreStartScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/PreStartScreen.java
@@ -1,37 +1,37 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 15.07.2017.
- */
-
-public class PreStartScreen extends Screen {
-
- public PreStartScreen(GameActivity gameActivity) {
- super(ScreenType.PRE_START, gameActivity, R.layout.pre_start_screen);
- TextView textView = layout.findViewById(R.id.pre_start_screen_text);
- textView.setTypeface(gameActivity.getTypeface());
- }
-
- @Override
- public void prepareToBeShown() {
-
- }
-
- @Override
- public void onBackKeyDown() {
-
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 15.07.2017.
+ */
+
+public class PreStartScreen extends Screen {
+
+ public PreStartScreen(GameActivity gameActivity) {
+ super(ScreenType.PRE_START, gameActivity, R.layout.pre_start_screen);
+ TextView textView = layout.findViewById(R.id.pre_start_screen_text);
+ textView.setTypeface(gameActivity.getTypeface());
+ }
+
+ @Override
+ public void prepareToBeShown() {
+
+ }
+
+ @Override
+ public void onBackKeyDown() {
+
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/Screen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/Screen.java
index faf25ba..4e66cc4 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/Screen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/Screen.java
@@ -1,92 +1,92 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.content.Context;
-import android.support.annotation.IdRes;
-import android.support.annotation.LayoutRes;
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.views.TopBar;
-
-/**
- * Created by Julian on 13.02.2016.
- */
-public abstract class Screen {
-
- public enum ScreenType {
- NONE(-1),
- PRE_START(0),
- START(1),
- WORLDS(2),
- LEVELS(3),
- GAME(4),
- TOOL_SHOP(5),
- GL_TEST(6),
- SETTINGS(7),
- SHAPE_SHOP(8);
-
- private int inFlipperPosition;
-
- ScreenType(int inFlipperPosition) {
- this.inFlipperPosition = inFlipperPosition;
- }
-
- public int getInFlipperPosition() {
- return inFlipperPosition;
- }
- }
-
- private ScreenType type;
- protected ScreenType caller;
- protected V layout;
- protected GameActivity gameActivity;
-
- public Screen(ScreenType type, GameActivity gameActivity, @LayoutRes int layoutId) {
- this.type = type;
- this.gameActivity = gameActivity;
- layout = inflateLayout(gameActivity, layoutId);
- }
-
- private V inflateLayout(Context context, @LayoutRes int layoutId) {
- LayoutInflater inflater = LayoutInflater.from(context);
- return (V) inflater.inflate(layoutId, null);
- }
-
- protected TopBar createTopBar(@IdRes int id) {
- return new TopBar(gameActivity, this, layout.findViewById(id));
- }
-
- public void setCaller(ScreenType caller) {
- this.caller = caller;
- }
-
- public abstract void prepareToBeShown();
-
- public abstract void onBackKeyDown();
-
- protected void flipToCaller() {
- if (caller != null)
- gameActivity.flipToScreen(caller);
- }
-
- protected void flipTo(ScreenType type) {
- gameActivity.flipToScreen(type);
- }
-
- public ScreenType getType() {
- return type;
- }
-
- public V get() {
- return layout;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.content.Context;
+import android.support.annotation.IdRes;
+import android.support.annotation.LayoutRes;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.views.TopBar;
+
+/**
+ * Created by Julian on 13.02.2016.
+ */
+public abstract class Screen {
+
+ public enum ScreenType {
+ NONE(-1),
+ PRE_START(0),
+ START(1),
+ WORLDS(2),
+ LEVELS(3),
+ GAME(4),
+ TOOL_SHOP(5),
+ GL_TEST(6),
+ SETTINGS(7),
+ SHAPE_SHOP(8);
+
+ private int inFlipperPosition;
+
+ ScreenType(int inFlipperPosition) {
+ this.inFlipperPosition = inFlipperPosition;
+ }
+
+ public int getInFlipperPosition() {
+ return inFlipperPosition;
+ }
+ }
+
+ private ScreenType type;
+ protected ScreenType caller;
+ protected V layout;
+ protected GameActivity gameActivity;
+
+ public Screen(ScreenType type, GameActivity gameActivity, @LayoutRes int layoutId) {
+ this.type = type;
+ this.gameActivity = gameActivity;
+ layout = inflateLayout(gameActivity, layoutId);
+ }
+
+ private V inflateLayout(Context context, @LayoutRes int layoutId) {
+ LayoutInflater inflater = LayoutInflater.from(context);
+ return (V) inflater.inflate(layoutId, null);
+ }
+
+ protected TopBar createTopBar(@IdRes int id) {
+ return new TopBar(gameActivity, this, layout.findViewById(id));
+ }
+
+ public void setCaller(ScreenType caller) {
+ this.caller = caller;
+ }
+
+ public abstract void prepareToBeShown();
+
+ public abstract void onBackKeyDown();
+
+ protected void flipToCaller() {
+ if (caller != null)
+ gameActivity.flipToScreen(caller);
+ }
+
+ protected void flipTo(ScreenType type) {
+ gameActivity.flipToScreen(type);
+ }
+
+ public ScreenType getType() {
+ return type;
+ }
+
+ public V get() {
+ return layout;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/ScreenFlipper.java b/app/src/main/java/de/frajul/endlessroll/main/screens/ScreenFlipper.java
index b8d9927..0d2e8ba 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/ScreenFlipper.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/ScreenFlipper.java
@@ -1,62 +1,62 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.content.Context;
-import android.widget.ViewFlipper;
-
-/**
- * Created by Julian on 13.02.2016.
- */
-public class ScreenFlipper extends ViewFlipper {
-
- private Screen[] screens;
- private Screen currentScreen;
-
- public ScreenFlipper(Context context, Screen... screens) {
- super(context);
- this.screens = screens;
- for (Screen screen : screens)
- addView(screen);
- currentScreen = screens[0];
- showScreen(currentScreen.getType(), Screen.ScreenType.NONE);
- }
-
- private void addView(Screen screen) {
- super.addView(screen.get(), screen.getType().getInFlipperPosition());
- }
-
- public Screen getCurrentScreen() {
- return currentScreen;
- }
-
- public void showScreen(Screen.ScreenType type, Screen.ScreenType caller) {
- Screen screen = findScreen(type);
- screen.setCaller(caller);
- screen.prepareToBeShown();
-
- int positionDifference = type.getInFlipperPosition() - currentScreen.getType()
- .getInFlipperPosition();
- if (positionDifference < 0)
- for (; positionDifference != 0; positionDifference++)
- super.showPrevious();
- else if (positionDifference > 0)
- for (; positionDifference != 0; positionDifference--)
- super.showNext();
- currentScreen = screen;
- }
-
- private Screen findScreen(Screen.ScreenType type) {
- for (Screen screen : screens)
- if (screen.getType().equals(type)) {
- return screen;
- }
- return null;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.content.Context;
+import android.widget.ViewFlipper;
+
+/**
+ * Created by Julian on 13.02.2016.
+ */
+public class ScreenFlipper extends ViewFlipper {
+
+ private Screen[] screens;
+ private Screen currentScreen;
+
+ public ScreenFlipper(Context context, Screen... screens) {
+ super(context);
+ this.screens = screens;
+ for (Screen screen : screens)
+ addView(screen);
+ currentScreen = screens[0];
+ showScreen(currentScreen.getType(), Screen.ScreenType.NONE);
+ }
+
+ private void addView(Screen screen) {
+ super.addView(screen.get(), screen.getType().getInFlipperPosition());
+ }
+
+ public Screen getCurrentScreen() {
+ return currentScreen;
+ }
+
+ public void showScreen(Screen.ScreenType type, Screen.ScreenType caller) {
+ Screen screen = findScreen(type);
+ screen.setCaller(caller);
+ screen.prepareToBeShown();
+
+ int positionDifference = type.getInFlipperPosition() - currentScreen.getType()
+ .getInFlipperPosition();
+ if (positionDifference < 0)
+ for (; positionDifference != 0; positionDifference++)
+ super.showPrevious();
+ else if (positionDifference > 0)
+ for (; positionDifference != 0; positionDifference--)
+ super.showNext();
+ currentScreen = screen;
+ }
+
+ private Screen findScreen(Screen.ScreenType type) {
+ for (Screen screen : screens)
+ if (screen.getType().equals(type)) {
+ return screen;
+ }
+ return null;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/SettingsScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/SettingsScreen.java
index 3bf720e..fe3bde9 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/SettingsScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/SettingsScreen.java
@@ -1,116 +1,116 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.support.annotation.IdRes;
-import android.view.View;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import android.widget.ToggleButton;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.views.ConfirmDialog;
-import de.frajul.endlessroll.views.CreditsDialog;
-import de.frajul.endlessroll.views.TopBar;
-
-/**
- * Created by Julian on 10.09.2017.
- */
-
-public class SettingsScreen extends Screen implements View.OnClickListener, ConfirmDialog.ConfirmDialogListener {
-
- private final int CALL_ID_CONFIRM_RESET = 1;
-
- private TopBar topBar;
- private ToggleButton musicToggle;
- private ToggleButton soundToggle;
- private CheckBox fpsCheckbox;
- private Button creditsButton;
- private Button resetButton;
-
- private CreditsDialog creditsDialog;
- private ConfirmDialog resetConfirmDialog;
-
- public SettingsScreen(GameActivity gameActivity) {
- super(ScreenType.SETTINGS, gameActivity, R.layout.settings);
- topBar = super.createTopBar(R.id.settings_topbar);
- setTypefaceToTextView(R.id.settings_music_label);
- setTypefaceToTextView(R.id.settings_sounds_label);
- musicToggle = layout.findViewById(R.id.settings_musictoggle);
- musicToggle.setOnClickListener(this);
- soundToggle = layout.findViewById(R.id.settings_soundtoggle);
- soundToggle.setOnClickListener(this);
- fpsCheckbox = layout.findViewById(R.id.settings_fps_checkbox);
- fpsCheckbox.setTypeface(gameActivity.getTypeface());
- creditsButton = layout.findViewById(R.id.settings_credits);
- creditsButton.setOnClickListener(this);
- resetButton = layout.findViewById(R.id.settings_reset);
- resetButton.setOnClickListener(this);
-
- creditsDialog = new CreditsDialog(gameActivity);
- resetConfirmDialog = new ConfirmDialog(gameActivity, this);
- }
-
- private void setTypefaceToTextView(@IdRes int id) {
- TextView textView = layout.findViewById(id);
- textView.setTypeface(gameActivity.getTypeface());
- }
-
- @Override
- public void prepareToBeShown() {
- gameActivity.getSoundManager().menuMusic.start();
-
- topBar.update();
- topBar.setCustomCallerForScreenSwitch(super.caller);
- topBar.setShopsEnabled(!gameActivity.isShortMenuInGameActive());
-
- musicToggle.setChecked(!gameActivity.getSoundManager().isMusicMuted());
- soundToggle.setChecked(!gameActivity.getSoundManager().isSoundsMuted());
- fpsCheckbox.setChecked(gameActivity.getDataStorageHandler().readIsShowFps());
- resetButton.setEnabled(super.caller != ScreenType.GAME);
- }
-
- @Override
- public void onBackKeyDown() {
- gameActivity.getDataStorageHandler()
- .writeSoundsMuted(gameActivity.getSoundManager().isSoundsMuted());
- gameActivity.getDataStorageHandler()
- .writeMusicMuted(gameActivity.getSoundManager().isMusicMuted());
- gameActivity.getDataStorageHandler().writeShowFps(fpsCheckbox.isChecked());
- flipToCaller();
- }
-
- @Override
- public void onClick(View v) {
- if (v.equals(musicToggle)) {
- gameActivity.getSoundManager().setMusicMuted(!musicToggle.isChecked());
- } else if (v.equals(soundToggle)) {
- gameActivity.getSoundManager().setSoundsMuted(!soundToggle.isChecked());
- } else if (v.equals(creditsButton)) {
- creditsDialog.show();
- } else if (v.equals(resetButton)) {
- resetConfirmDialog.show(CALL_ID_CONFIRM_RESET, R.string.confirm_dialog_reset);
- }
- }
-
- @Override
- public void onConfirmed(int callId) {
- if (callId == CALL_ID_CONFIRM_RESET) {
- gameActivity.resetData();
- prepareToBeShown();
- //ResetButton is disabled if caller is GAME, because shortMenu or GoalMessage would still be visible on next level start
- if (super.caller == ScreenType.LEVELS || super.caller == ScreenType.GAME) {
- super.caller = ScreenType.WORLDS;
- topBar.setCustomCallerForScreenSwitch(super.caller);
- }
- }
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.support.annotation.IdRes;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.ToggleButton;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.views.ConfirmDialog;
+import de.frajul.endlessroll.views.CreditsDialog;
+import de.frajul.endlessroll.views.TopBar;
+
+/**
+ * Created by Julian on 10.09.2017.
+ */
+
+public class SettingsScreen extends Screen implements View.OnClickListener, ConfirmDialog.ConfirmDialogListener {
+
+ private final int CALL_ID_CONFIRM_RESET = 1;
+
+ private TopBar topBar;
+ private ToggleButton musicToggle;
+ private ToggleButton soundToggle;
+ private CheckBox fpsCheckbox;
+ private Button creditsButton;
+ private Button resetButton;
+
+ private CreditsDialog creditsDialog;
+ private ConfirmDialog resetConfirmDialog;
+
+ public SettingsScreen(GameActivity gameActivity) {
+ super(ScreenType.SETTINGS, gameActivity, R.layout.settings);
+ topBar = super.createTopBar(R.id.settings_topbar);
+ setTypefaceToTextView(R.id.settings_music_label);
+ setTypefaceToTextView(R.id.settings_sounds_label);
+ musicToggle = layout.findViewById(R.id.settings_musictoggle);
+ musicToggle.setOnClickListener(this);
+ soundToggle = layout.findViewById(R.id.settings_soundtoggle);
+ soundToggle.setOnClickListener(this);
+ fpsCheckbox = layout.findViewById(R.id.settings_fps_checkbox);
+ fpsCheckbox.setTypeface(gameActivity.getTypeface());
+ creditsButton = layout.findViewById(R.id.settings_credits);
+ creditsButton.setOnClickListener(this);
+ resetButton = layout.findViewById(R.id.settings_reset);
+ resetButton.setOnClickListener(this);
+
+ creditsDialog = new CreditsDialog(gameActivity);
+ resetConfirmDialog = new ConfirmDialog(gameActivity, this);
+ }
+
+ private void setTypefaceToTextView(@IdRes int id) {
+ TextView textView = layout.findViewById(id);
+ textView.setTypeface(gameActivity.getTypeface());
+ }
+
+ @Override
+ public void prepareToBeShown() {
+ gameActivity.getSoundManager().menuMusic.start();
+
+ topBar.update();
+ topBar.setCustomCallerForScreenSwitch(super.caller);
+ topBar.setShopsEnabled(!gameActivity.isShortMenuInGameActive());
+
+ musicToggle.setChecked(!gameActivity.getSoundManager().isMusicMuted());
+ soundToggle.setChecked(!gameActivity.getSoundManager().isSoundsMuted());
+ fpsCheckbox.setChecked(gameActivity.getDataStorageHandler().readIsShowFps());
+ resetButton.setEnabled(super.caller != ScreenType.GAME);
+ }
+
+ @Override
+ public void onBackKeyDown() {
+ gameActivity.getDataStorageHandler()
+ .writeSoundsMuted(gameActivity.getSoundManager().isSoundsMuted());
+ gameActivity.getDataStorageHandler()
+ .writeMusicMuted(gameActivity.getSoundManager().isMusicMuted());
+ gameActivity.getDataStorageHandler().writeShowFps(fpsCheckbox.isChecked());
+ flipToCaller();
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v.equals(musicToggle)) {
+ gameActivity.getSoundManager().setMusicMuted(!musicToggle.isChecked());
+ } else if (v.equals(soundToggle)) {
+ gameActivity.getSoundManager().setSoundsMuted(!soundToggle.isChecked());
+ } else if (v.equals(creditsButton)) {
+ creditsDialog.show();
+ } else if (v.equals(resetButton)) {
+ resetConfirmDialog.show(CALL_ID_CONFIRM_RESET, R.string.confirm_dialog_reset);
+ }
+ }
+
+ @Override
+ public void onConfirmed(int callId) {
+ if (callId == CALL_ID_CONFIRM_RESET) {
+ gameActivity.resetData();
+ prepareToBeShown();
+ //ResetButton is disabled if caller is GAME, because shortMenu or GoalMessage would still be visible on next level start
+ if (super.caller == ScreenType.LEVELS || super.caller == ScreenType.GAME) {
+ super.caller = ScreenType.WORLDS;
+ topBar.setCustomCallerForScreenSwitch(super.caller);
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreen.java
index 3cf0dd6..069a751 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreen.java
@@ -1,94 +1,94 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.graphics.Typeface;
-import android.support.annotation.IdRes;
-import android.view.View;
-import android.view.animation.AnimationUtils;
-import android.widget.Button;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.MyGlSurfaceView;
-import de.frajul.endlessroll.main.game.StartScene;
-import de.frajul.endlessroll.sqlDatabase.MyDatabase;
-import de.frajul.endlessroll.views.ConfirmDialog;
-import de.frajul.endlessroll.views.DevToolsDialog;
-
-/**
- * Created by Julian on 07.07.2016.
- */
-public class StartScreen extends GLScreen implements View.OnClickListener, ConfirmDialog.ConfirmDialogListener {
-
- private final int CALL_ID_CONFIRM_EXIT = 1;
-
- private StartScreenRendering rendering;
- private Button play;
- private Button showDevToolsDialog;
- private DevToolsDialog devToolsDialog;
- private ConfirmDialog confirmDialog;
-
- public StartScreen(GameActivity gameActivity, MyGlSurfaceView glSurfaceView) throws Exception {
- super(ScreenType.START, gameActivity, R.layout.start_screen, glSurfaceView);
-
- Typeface typeface = gameActivity.getTypeface();
- TextView title = layout.findViewById(R.id.startscreen_title);
- title.setTypeface(typeface);
- play = createButton(R.id.startscreen_play, typeface);
- play.startAnimation(AnimationUtils.loadAnimation(gameActivity, R.anim.rotate));
- showDevToolsDialog = createButton(R.id.startscreen_show_dev_tools_dialog, typeface);
- showDevToolsDialog.setVisibility(GameActivity.IS_DEVELOPER ? View.VISIBLE : View.GONE);
-
- devToolsDialog = new DevToolsDialog(gameActivity);
- confirmDialog = new ConfirmDialog(gameActivity, this);
-
- rendering = new StartScreenRendering(gameActivity, gameRenderer);
- }
-
- private Button createButton(@IdRes int id, Typeface typeface) {
- Button button = layout.findViewById(id);
- button.setTypeface(typeface);
- button.setOnClickListener(this);
- return button;
- }
-
- @Override
- public void prepareToBeShown() {
- ((StartScene) rendering.getScene()).randomizeWorld();
- ((StartScene) rendering.getScene()).loadTexturesForCurrentWorld();
- gameRenderer.setCurrentRendering(rendering);
-
- gameActivity.getSoundManager().menuMusic.start();
- }
-
- @Override
- public void onBackKeyDown() {
- confirmDialog.show(CALL_ID_CONFIRM_EXIT, R.string.confirm_dialog_exit);
- }
-
- @Override
- public void onClick(View v) {
- if (v.equals(play)) {
- gameActivity.flipToScreen(ScreenType.WORLDS);
- gameRenderer.setCurrentRendering(null);
- } if(v.equals(showDevToolsDialog)){
- devToolsDialog.show();
- }
- }
-
-
- @Override
- public void onConfirmed(int callId) {
- if (callId == CALL_ID_CONFIRM_EXIT) {
- gameActivity.exitGame();
- }
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.graphics.Typeface;
+import android.support.annotation.IdRes;
+import android.view.View;
+import android.view.animation.AnimationUtils;
+import android.widget.Button;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.MyGlSurfaceView;
+import de.frajul.endlessroll.main.game.StartScene;
+import de.frajul.endlessroll.sqlDatabase.MyDatabase;
+import de.frajul.endlessroll.views.ConfirmDialog;
+import de.frajul.endlessroll.views.DevToolsDialog;
+
+/**
+ * Created by Julian on 07.07.2016.
+ */
+public class StartScreen extends GLScreen implements View.OnClickListener, ConfirmDialog.ConfirmDialogListener {
+
+ private final int CALL_ID_CONFIRM_EXIT = 1;
+
+ private StartScreenRendering rendering;
+ private Button play;
+ private Button showDevToolsDialog;
+ private DevToolsDialog devToolsDialog;
+ private ConfirmDialog confirmDialog;
+
+ public StartScreen(GameActivity gameActivity, MyGlSurfaceView glSurfaceView) throws Exception {
+ super(ScreenType.START, gameActivity, R.layout.start_screen, glSurfaceView);
+
+ Typeface typeface = gameActivity.getTypeface();
+ TextView title = layout.findViewById(R.id.startscreen_title);
+ title.setTypeface(typeface);
+ play = createButton(R.id.startscreen_play, typeface);
+ play.startAnimation(AnimationUtils.loadAnimation(gameActivity, R.anim.rotate));
+ showDevToolsDialog = createButton(R.id.startscreen_show_dev_tools_dialog, typeface);
+ showDevToolsDialog.setVisibility(GameActivity.IS_DEVELOPER ? View.VISIBLE : View.GONE);
+
+ devToolsDialog = new DevToolsDialog(gameActivity);
+ confirmDialog = new ConfirmDialog(gameActivity, this);
+
+ rendering = new StartScreenRendering(gameActivity, gameRenderer);
+ }
+
+ private Button createButton(@IdRes int id, Typeface typeface) {
+ Button button = layout.findViewById(id);
+ button.setTypeface(typeface);
+ button.setOnClickListener(this);
+ return button;
+ }
+
+ @Override
+ public void prepareToBeShown() {
+ ((StartScene) rendering.getScene()).randomizeWorld();
+ ((StartScene) rendering.getScene()).loadTexturesForCurrentWorld();
+ gameRenderer.setCurrentRendering(rendering);
+
+ gameActivity.getSoundManager().menuMusic.start();
+ }
+
+ @Override
+ public void onBackKeyDown() {
+ confirmDialog.show(CALL_ID_CONFIRM_EXIT, R.string.confirm_dialog_exit);
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v.equals(play)) {
+ gameActivity.flipToScreen(ScreenType.WORLDS);
+ gameRenderer.setCurrentRendering(null);
+ } if(v.equals(showDevToolsDialog)){
+ devToolsDialog.show();
+ }
+ }
+
+
+ @Override
+ public void onConfirmed(int callId) {
+ if (callId == CALL_ID_CONFIRM_EXIT) {
+ gameActivity.exitGame();
+ }
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreenRendering.java b/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreenRendering.java
index 74722d9..0b99def 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreenRendering.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreenRendering.java
@@ -1,59 +1,59 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameLog;
-import de.frajul.endlessroll.main.game.StartScene;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.rendering.Rendering;
-import de.frajul.endlessroll.rendering.renderer.GameRenderer;
-
-/**
- * Created by Julian on 20.07.2016.
- */
-public class StartScreenRendering extends Rendering {
-
- private GameActivity gameActivity;
- private Timer timer;
- private ParticleSystem particleSystem;
-
- public StartScreenRendering(GameActivity gameActivity, GameRenderer gameRenderer) throws Exception {
- super(gameActivity, gameRenderer);
- this.gameActivity = gameActivity;
- this.particleSystem = new ParticleSystem(gameActivity);
- }
-
- @Override
- public StartScene init(TexturePack texturePack, Timer timer, boolean isFirstTime) {
- GameLog.d("init Start Screen Rendering");
- this.timer = timer;
- if (isFirstTime)
- scene = new StartScene(gameActivity, texturePack, particleSystem);
- else {
- scene.setTexturePack(texturePack);
- }
- try {
- particleSystem.loadTextures();
- } catch (Exception e) {
- }
- return scene;
- }
-
- @Override
- public void update() {
- particleSystem.update(timer);
- scene.update(timer);
- }
-
- @Override
- public void onTouch(float x, float y) {
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameLog;
+import de.frajul.endlessroll.main.game.StartScene;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.rendering.Rendering;
+import de.frajul.endlessroll.rendering.renderer.GameRenderer;
+
+/**
+ * Created by Julian on 20.07.2016.
+ */
+public class StartScreenRendering extends Rendering {
+
+ private GameActivity gameActivity;
+ private Timer timer;
+ private ParticleSystem particleSystem;
+
+ public StartScreenRendering(GameActivity gameActivity, GameRenderer gameRenderer) throws Exception {
+ super(gameActivity, gameRenderer);
+ this.gameActivity = gameActivity;
+ this.particleSystem = new ParticleSystem(gameActivity);
+ }
+
+ @Override
+ public StartScene init(TexturePack texturePack, Timer timer, boolean isFirstTime) {
+ GameLog.d("init Start Screen Rendering");
+ this.timer = timer;
+ if (isFirstTime)
+ scene = new StartScene(gameActivity, texturePack, particleSystem);
+ else {
+ scene.setTexturePack(texturePack);
+ }
+ try {
+ particleSystem.loadTextures();
+ } catch (Exception e) {
+ }
+ return scene;
+ }
+
+ @Override
+ public void update() {
+ particleSystem.update(timer);
+ scene.update(timer);
+ }
+
+ @Override
+ public void onTouch(float x, float y) {
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/TestScreenRendering.java b/app/src/main/java/de/frajul/endlessroll/main/screens/TestScreenRendering.java
index b437165..4b25e10 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/TestScreenRendering.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/TestScreenRendering.java
@@ -1,62 +1,62 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import de.frajul.endlessroll.entities.particles.ParticleSystem;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameLog;
-import de.frajul.endlessroll.main.game.TestScreenScene;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.rendering.Rendering;
-import de.frajul.endlessroll.rendering.renderer.GameRenderer;
-
-/**
- * Created by Julian on 20.07.2016.
- */
-public class TestScreenRendering extends Rendering {
-
- private GameActivity gameActivity;
- private Timer timer;
- private ParticleSystem particleSystem;
-
- public TestScreenRendering(GameActivity gameActivity, GameRenderer gameRenderer) throws Exception {
- super(gameActivity, gameRenderer);
- this.gameActivity = gameActivity;
- particleSystem = new ParticleSystem(gameActivity);
- }
-
- @Override
- public TestScreenScene init(TexturePack texturePack, Timer timer, boolean isFirstTime) {
- this.timer = timer;
- try {
- if (isFirstTime)
- scene = new TestScreenScene(gameActivity, texturePack, particleSystem);
- else
- scene.setTexturePack(texturePack);
- } catch (Exception e) {
- GameLog.e(e);
- }
- try {
- particleSystem.loadTextures();
- } catch (Exception e) {
- }
- return scene;
- }
-
- @Override
- public void update() {
- particleSystem.update(timer);
- scene.update(timer);
- }
-
- @Override
- public void onTouch(float x, float y) {
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import de.frajul.endlessroll.entities.particles.ParticleSystem;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameLog;
+import de.frajul.endlessroll.main.game.TestScreenScene;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.rendering.Rendering;
+import de.frajul.endlessroll.rendering.renderer.GameRenderer;
+
+/**
+ * Created by Julian on 20.07.2016.
+ */
+public class TestScreenRendering extends Rendering {
+
+ private GameActivity gameActivity;
+ private Timer timer;
+ private ParticleSystem particleSystem;
+
+ public TestScreenRendering(GameActivity gameActivity, GameRenderer gameRenderer) throws Exception {
+ super(gameActivity, gameRenderer);
+ this.gameActivity = gameActivity;
+ particleSystem = new ParticleSystem(gameActivity);
+ }
+
+ @Override
+ public TestScreenScene init(TexturePack texturePack, Timer timer, boolean isFirstTime) {
+ this.timer = timer;
+ try {
+ if (isFirstTime)
+ scene = new TestScreenScene(gameActivity, texturePack, particleSystem);
+ else
+ scene.setTexturePack(texturePack);
+ } catch (Exception e) {
+ GameLog.e(e);
+ }
+ try {
+ particleSystem.loadTextures();
+ } catch (Exception e) {
+ }
+ return scene;
+ }
+
+ @Override
+ public void update() {
+ particleSystem.update(timer);
+ scene.update(timer);
+ }
+
+ @Override
+ public void onTouch(float x, float y) {
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/ToolShopScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/ToolShopScreen.java
index e7d659f..9372679 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/ToolShopScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/ToolShopScreen.java
@@ -1,217 +1,217 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.view.View;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.tools.ToolSlot;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.main.DataStorageHandler;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameLog;
-import de.frajul.endlessroll.main.tutorial.ToolShopTutorial;
-import de.frajul.endlessroll.user.ToolSlotSettings;
-import de.frajul.endlessroll.views.ToolInspector;
-import de.frajul.endlessroll.views.ToolOfferSlot;
-import de.frajul.endlessroll.views.TopBar;
-
-/**
- * Created by Julian on 08.07.2016.
- */
-public class ToolShopScreen extends Screen implements View.OnClickListener {
-
- private ToolSlotSettings slotSettings;
- private ToolOfferSlot selectedToolOfferSlot;
-
- private TopBar topBar;
- private List toolSlotViews = new ArrayList<>();
- private List toolOfferSlots = new ArrayList<>();
-
- private Animation pulse;
-
- private ToolInspector toolInspector;
- private ToolShopTutorial tutorial;
-
- public ToolShopScreen(GameActivity gameActivity) {
- super(ScreenType.TOOL_SHOP, gameActivity, R.layout.toolshop);
- this.slotSettings = gameActivity.getUser().getToolSlotSettings();
- this.tutorial = gameActivity.getTutorialManager().getToolShopTutorial();
- tutorial.setToolShopScreen(this);
- pulse = AnimationUtils.loadAnimation(gameActivity, R.anim.pulse);
-
- topBar = super.createTopBar(R.id.toolshop_topbar);
- LinearLayout toolOfferTopRow = layout.findViewById(R.id.toolshop_tool_offer_top_row);
- LinearLayout toolOfferBottomRow = layout
- .findViewById(R.id.toolshop_tool_offer_bottom_row);
-
- toolInspector = new ToolInspector(this, gameActivity,
- layout.findViewById(R.id.toolshop_toolinspector));
-
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- params.setMargins(30, 0, 30, 0);
-
- int i = 0;
- for (ToolType type : ToolType.values()) {
- i++;
- ToolOfferSlot slot = new ToolOfferSlot(this, gameActivity, gameActivity.getTypeface(),
- type);
- toolOfferSlots.add(slot);
- if (i % 2 == 0)
- toolOfferBottomRow.addView(slot.getLayout(), params);
- else
- toolOfferTopRow.addView(slot.getLayout(), params);
- }
-
- toolSlotViews.add(getToolSlotView(R.id.toolshop_slot1));
- toolSlotViews.add(getToolSlotView(R.id.toolshop_slot2));
- toolSlotViews.add(getToolSlotView(R.id.toolshop_slot3));
- toolSlotViews.add(getToolSlotView(R.id.toolshop_slot4));
- }
-
- private ImageView getToolSlotView(int id) {
- View slotLayout = layout.findViewById(id);
- ImageView imageView = slotLayout.findViewById(R.id.toolslot_image);
- imageView.setOnClickListener(this);
- return imageView;
- }
-
- @Override
- public void prepareToBeShown() {
- gameActivity.getSoundManager().menuMusic.start();
-
- topBar.update();
- topBar.setCustomCallerForScreenSwitch(super.caller);
- slotSettings.unlockSlotsIfLevelReached(gameActivity.getUser().getLevelUpBounties());
- onToolOfferSlotSelected(toolOfferSlots.get(0));
-
- for (int i = 0; i < toolSlotViews.size(); i++) {
- ToolSlot toolSlot = slotSettings.get(i);
- ImageView toolSlotView = toolSlotViews.get(i);
- toolSlotView.setImageResource(toolSlot.getDrawable());
- }
- for (ToolOfferSlot toolOfferSlot : toolOfferSlots) {
- boolean locked = gameActivity.getUser().getLevelUpBounties()
- .isToolLocked(toolOfferSlot.getToolType());
- toolOfferSlot.setLocked(locked);
- toolOfferSlot.updateBackgroundColor();
- }
- tutorial.onToolShopScreenPrepare();
- }
-
- public void onToolBought(int price, ToolType toolType) {
- topBar.showStarcountDecrease(-price);
- gameActivity.getUser().increaseStarCount(-price, false);
- topBar.update();
- DataStorageHandler dataStorageHandler = gameActivity.getDataStorageHandler();
- dataStorageHandler.writeUserData(gameActivity.getUser());
- dataStorageHandler.getDatabase().open();
- dataStorageHandler.getDatabase().writeToolData();
- dataStorageHandler.getDatabase().close();
- for (ToolOfferSlot toolOfferSlot : toolOfferSlots) {
- toolOfferSlot.updateBackgroundColor();
- }
- tutorial.onToolBought();
- }
-
- public void onToolUpgraded(int price) {
- topBar.showEnergycountDecrease(-price);
- gameActivity.getUser().increaseEnergyCount(-price, false);
- topBar.update();
- DataStorageHandler dataStorageHandler = gameActivity.getDataStorageHandler();
- dataStorageHandler.writeUserData(gameActivity.getUser());
- dataStorageHandler.getDatabase().open();
- dataStorageHandler.getDatabase().writeToolData();
- dataStorageHandler.getDatabase().close();
- }
-
- public void onToolOfferSlotSelected(ToolOfferSlot slot) {
- selectedToolOfferSlot = slot;
- for (ToolOfferSlot toolOfferSlot : toolOfferSlots)
- toolOfferSlot.setSelected(toolOfferSlot.equals(slot));
- toolInspector.update(slot.getToolType(), slot.isLocked());
- tutorial.onToolSelected();
- }
-
- private void onToolEquipped(int index) {
- slotSettings.changeToolSlotType(index, selectedToolOfferSlot.getToolType());
- DataStorageHandler dataStorageHandler = gameActivity.getDataStorageHandler();
- dataStorageHandler.writeUserData(gameActivity.getUser());
- for (int i = 0; i < toolSlotViews.size(); i++) {
- ToolSlot toolSlot = slotSettings.get(i);
- ImageView view = toolSlotViews.get(i);
- view.setImageResource(toolSlot.getDrawable());
- }
- tutorial.onToolEquipped();
- }
-
- public void stopTutorialAnimations() {
- for (ToolOfferSlot toolOfferSlot : toolOfferSlots)
- if (toolOfferSlot.getToolType() == ToolType.SPRING)
- toolOfferSlot.getLayout().clearAnimation();
-
- toolInspector.clearPriceButtonAnimation();
-
- toolSlotViews.get(0).clearAnimation();
- }
-
- public void tutorialStartSpringOfferSlotPulse() {
- for (ToolOfferSlot toolOfferSlot : toolOfferSlots)
- if (toolOfferSlot.getToolType() == ToolType.SPRING)
- toolOfferSlot.getLayout().startAnimation(pulse);
- }
-
- public void tutorialStartSpringBuyButtonPulse() {
- toolInspector.startPriceButtonAnimation(pulse);
- }
-
- public void tutorialStartSpringToolSlotPulse() {
- toolSlotViews.get(0).startAnimation(pulse);
- }
-
- public void writeToolShopTutorialIsFinished() {
- gameActivity.getDataStorageHandler().writeToolShopTutorialFinished(true);
- }
-
-
- @Override
- public void onBackKeyDown() {
- stopTutorialAnimations();
- flipToCaller();
- }
-
- @Override
- public void onClick(View v) {
- ImageView toolSlotView = (ImageView) v;
- int index = toolSlotViews.indexOf(toolSlotView);
- if (canSelectedToolBePutInSlot(index)) {
- onToolEquipped(index);
- }
- }
-
- private boolean canSelectedToolBePutInSlot(int slotIndex) {
- return slotIndex != -1 && !slotSettings.get(slotIndex)
- .isLocked() && selectedToolOfferSlot != null && selectedToolOfferSlot.getToolType()
- .isBought();
- }
-
- public ToolType getSelectedToolType() {
- return selectedToolOfferSlot.getToolType();
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.tools.ToolSlot;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.main.DataStorageHandler;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameLog;
+import de.frajul.endlessroll.main.tutorial.ToolShopTutorial;
+import de.frajul.endlessroll.user.ToolSlotSettings;
+import de.frajul.endlessroll.views.ToolInspector;
+import de.frajul.endlessroll.views.ToolOfferSlot;
+import de.frajul.endlessroll.views.TopBar;
+
+/**
+ * Created by Julian on 08.07.2016.
+ */
+public class ToolShopScreen extends Screen implements View.OnClickListener {
+
+ private ToolSlotSettings slotSettings;
+ private ToolOfferSlot selectedToolOfferSlot;
+
+ private TopBar topBar;
+ private List toolSlotViews = new ArrayList<>();
+ private List toolOfferSlots = new ArrayList<>();
+
+ private Animation pulse;
+
+ private ToolInspector toolInspector;
+ private ToolShopTutorial tutorial;
+
+ public ToolShopScreen(GameActivity gameActivity) {
+ super(ScreenType.TOOL_SHOP, gameActivity, R.layout.toolshop);
+ this.slotSettings = gameActivity.getUser().getToolSlotSettings();
+ this.tutorial = gameActivity.getTutorialManager().getToolShopTutorial();
+ tutorial.setToolShopScreen(this);
+ pulse = AnimationUtils.loadAnimation(gameActivity, R.anim.pulse);
+
+ topBar = super.createTopBar(R.id.toolshop_topbar);
+ LinearLayout toolOfferTopRow = layout.findViewById(R.id.toolshop_tool_offer_top_row);
+ LinearLayout toolOfferBottomRow = layout
+ .findViewById(R.id.toolshop_tool_offer_bottom_row);
+
+ toolInspector = new ToolInspector(this, gameActivity,
+ layout.findViewById(R.id.toolshop_toolinspector));
+
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
+ LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(30, 0, 30, 0);
+
+ int i = 0;
+ for (ToolType type : ToolType.values()) {
+ i++;
+ ToolOfferSlot slot = new ToolOfferSlot(this, gameActivity, gameActivity.getTypeface(),
+ type);
+ toolOfferSlots.add(slot);
+ if (i % 2 == 0)
+ toolOfferBottomRow.addView(slot.getLayout(), params);
+ else
+ toolOfferTopRow.addView(slot.getLayout(), params);
+ }
+
+ toolSlotViews.add(getToolSlotView(R.id.toolshop_slot1));
+ toolSlotViews.add(getToolSlotView(R.id.toolshop_slot2));
+ toolSlotViews.add(getToolSlotView(R.id.toolshop_slot3));
+ toolSlotViews.add(getToolSlotView(R.id.toolshop_slot4));
+ }
+
+ private ImageView getToolSlotView(int id) {
+ View slotLayout = layout.findViewById(id);
+ ImageView imageView = slotLayout.findViewById(R.id.toolslot_image);
+ imageView.setOnClickListener(this);
+ return imageView;
+ }
+
+ @Override
+ public void prepareToBeShown() {
+ gameActivity.getSoundManager().menuMusic.start();
+
+ topBar.update();
+ topBar.setCustomCallerForScreenSwitch(super.caller);
+ slotSettings.unlockSlotsIfLevelReached(gameActivity.getUser().getLevelUpBounties());
+ onToolOfferSlotSelected(toolOfferSlots.get(0));
+
+ for (int i = 0; i < toolSlotViews.size(); i++) {
+ ToolSlot toolSlot = slotSettings.get(i);
+ ImageView toolSlotView = toolSlotViews.get(i);
+ toolSlotView.setImageResource(toolSlot.getDrawable());
+ }
+ for (ToolOfferSlot toolOfferSlot : toolOfferSlots) {
+ boolean locked = gameActivity.getUser().getLevelUpBounties()
+ .isToolLocked(toolOfferSlot.getToolType());
+ toolOfferSlot.setLocked(locked);
+ toolOfferSlot.updateBackgroundColor();
+ }
+ tutorial.onToolShopScreenPrepare();
+ }
+
+ public void onToolBought(int price, ToolType toolType) {
+ topBar.showStarcountDecrease(-price);
+ gameActivity.getUser().increaseStarCount(-price, false);
+ topBar.update();
+ DataStorageHandler dataStorageHandler = gameActivity.getDataStorageHandler();
+ dataStorageHandler.writeUserData(gameActivity.getUser());
+ dataStorageHandler.getDatabase().open();
+ dataStorageHandler.getDatabase().writeToolData();
+ dataStorageHandler.getDatabase().close();
+ for (ToolOfferSlot toolOfferSlot : toolOfferSlots) {
+ toolOfferSlot.updateBackgroundColor();
+ }
+ tutorial.onToolBought();
+ }
+
+ public void onToolUpgraded(int price) {
+ topBar.showEnergycountDecrease(-price);
+ gameActivity.getUser().increaseEnergyCount(-price, false);
+ topBar.update();
+ DataStorageHandler dataStorageHandler = gameActivity.getDataStorageHandler();
+ dataStorageHandler.writeUserData(gameActivity.getUser());
+ dataStorageHandler.getDatabase().open();
+ dataStorageHandler.getDatabase().writeToolData();
+ dataStorageHandler.getDatabase().close();
+ }
+
+ public void onToolOfferSlotSelected(ToolOfferSlot slot) {
+ selectedToolOfferSlot = slot;
+ for (ToolOfferSlot toolOfferSlot : toolOfferSlots)
+ toolOfferSlot.setSelected(toolOfferSlot.equals(slot));
+ toolInspector.update(slot.getToolType(), slot.isLocked());
+ tutorial.onToolSelected();
+ }
+
+ private void onToolEquipped(int index) {
+ slotSettings.changeToolSlotType(index, selectedToolOfferSlot.getToolType());
+ DataStorageHandler dataStorageHandler = gameActivity.getDataStorageHandler();
+ dataStorageHandler.writeUserData(gameActivity.getUser());
+ for (int i = 0; i < toolSlotViews.size(); i++) {
+ ToolSlot toolSlot = slotSettings.get(i);
+ ImageView view = toolSlotViews.get(i);
+ view.setImageResource(toolSlot.getDrawable());
+ }
+ tutorial.onToolEquipped();
+ }
+
+ public void stopTutorialAnimations() {
+ for (ToolOfferSlot toolOfferSlot : toolOfferSlots)
+ if (toolOfferSlot.getToolType() == ToolType.SPRING)
+ toolOfferSlot.getLayout().clearAnimation();
+
+ toolInspector.clearPriceButtonAnimation();
+
+ toolSlotViews.get(0).clearAnimation();
+ }
+
+ public void tutorialStartSpringOfferSlotPulse() {
+ for (ToolOfferSlot toolOfferSlot : toolOfferSlots)
+ if (toolOfferSlot.getToolType() == ToolType.SPRING)
+ toolOfferSlot.getLayout().startAnimation(pulse);
+ }
+
+ public void tutorialStartSpringBuyButtonPulse() {
+ toolInspector.startPriceButtonAnimation(pulse);
+ }
+
+ public void tutorialStartSpringToolSlotPulse() {
+ toolSlotViews.get(0).startAnimation(pulse);
+ }
+
+ public void writeToolShopTutorialIsFinished() {
+ gameActivity.getDataStorageHandler().writeToolShopTutorialFinished(true);
+ }
+
+
+ @Override
+ public void onBackKeyDown() {
+ stopTutorialAnimations();
+ flipToCaller();
+ }
+
+ @Override
+ public void onClick(View v) {
+ ImageView toolSlotView = (ImageView) v;
+ int index = toolSlotViews.indexOf(toolSlotView);
+ if (canSelectedToolBePutInSlot(index)) {
+ onToolEquipped(index);
+ }
+ }
+
+ private boolean canSelectedToolBePutInSlot(int slotIndex) {
+ return slotIndex != -1 && !slotSettings.get(slotIndex)
+ .isLocked() && selectedToolOfferSlot != null && selectedToolOfferSlot.getToolType()
+ .isBought();
+ }
+
+ public ToolType getSelectedToolType() {
+ return selectedToolOfferSlot.getToolType();
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/WorldsScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/WorldsScreen.java
index 10fba9e..2eb78b8 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/screens/WorldsScreen.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/screens/WorldsScreen.java
@@ -1,70 +1,70 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.screens;
-
-import android.view.Gravity;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.LevelPack;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.views.TopBar;
-import de.frajul.endlessroll.views.WorldButton;
-import de.frajul.endlessroll.views.WorldButtonOnClickListener;
-
-/**
- * Created by Julian on 07.07.2016.
- */
-public class WorldsScreen extends Screen implements WorldButtonOnClickListener {
-
- private List worldButtons = new ArrayList<>();
- private TopBar topBar;
-
- public WorldsScreen(GameActivity gameActivity) {
- super(ScreenType.WORLDS, gameActivity, R.layout.worlds);
- topBar = super.createTopBar(R.id.worlds_topbar);
- LinearLayout buttonLayout = (LinearLayout) layout.findViewById(R.id.worlds_layout);
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- params.gravity = Gravity.CENTER_VERTICAL;
- params.setMargins(25, 0, 25, 0);
-
- for (LevelPack levelPack : gameActivity.getLevelManager()) {
- WorldButton button = new WorldButton(gameActivity, levelPack, this);
- buttonLayout.addView(button.getView(), params);
- worldButtons.add(button);
- }
- }
-
- @Override
- public void prepareToBeShown() {
- gameActivity.getSoundManager().menuMusic.start();
-
- topBar.update();
- for (WorldButton button : worldButtons)
- button.update();
- }
-
- @Override
- public void onBackKeyDown() {
- flipTo(ScreenType.START);
- }
-
- @Override
- public void onClick(WorldButton worldButton) {
- LevelPack levelPack = worldButton.getLevelPack();
- if (!levelPack.isLocked()) {
- gameActivity.onWorldSelected(levelPack);
- gameActivity.flipToScreen(ScreenType.LEVELS);
- }
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.screens;
+
+import android.view.Gravity;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.LevelPack;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.views.TopBar;
+import de.frajul.endlessroll.views.WorldButton;
+import de.frajul.endlessroll.views.WorldButtonOnClickListener;
+
+/**
+ * Created by Julian on 07.07.2016.
+ */
+public class WorldsScreen extends Screen implements WorldButtonOnClickListener {
+
+ private List worldButtons = new ArrayList<>();
+ private TopBar topBar;
+
+ public WorldsScreen(GameActivity gameActivity) {
+ super(ScreenType.WORLDS, gameActivity, R.layout.worlds);
+ topBar = super.createTopBar(R.id.worlds_topbar);
+ LinearLayout buttonLayout = (LinearLayout) layout.findViewById(R.id.worlds_layout);
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
+ LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.gravity = Gravity.CENTER_VERTICAL;
+ params.setMargins(25, 0, 25, 0);
+
+ for (LevelPack levelPack : gameActivity.getLevelManager()) {
+ WorldButton button = new WorldButton(gameActivity, levelPack, this);
+ buttonLayout.addView(button.getView(), params);
+ worldButtons.add(button);
+ }
+ }
+
+ @Override
+ public void prepareToBeShown() {
+ gameActivity.getSoundManager().menuMusic.start();
+
+ topBar.update();
+ for (WorldButton button : worldButtons)
+ button.update();
+ }
+
+ @Override
+ public void onBackKeyDown() {
+ flipTo(ScreenType.START);
+ }
+
+ @Override
+ public void onClick(WorldButton worldButton) {
+ LevelPack levelPack = worldButton.getLevelPack();
+ if (!levelPack.isLocked()) {
+ gameActivity.onWorldSelected(levelPack);
+ gameActivity.flipToScreen(ScreenType.LEVELS);
+ }
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/tutorial/BreakPoint.java b/app/src/main/java/de/frajul/endlessroll/main/tutorial/BreakPoint.java
index 3e9f96f..1d45b64 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/tutorial/BreakPoint.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/tutorial/BreakPoint.java
@@ -1,54 +1,54 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.tutorial;
-
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
-
-/**
- * Created by Julian on 14.03.2017.
- */
-
-public class BreakPoint {
-
- public final static float NONE_X = -1;
-
- private float x;
- private boolean alreadyShown = false;
- @StringRes
- private int textId;
- @DrawableRes
- private int imageId;
-
- public BreakPoint(float x, @StringRes int textId, @DrawableRes int imageId) {
- this.x = x;
- this.textId = textId;
- this.imageId = imageId;
- }
-
- public float getX() {
- return x;
- }
-
- public int getTextId() {
- return textId;
- }
-
- public int getImageId() {
- return imageId;
- }
-
- public void setAlreadyShown(boolean alreadyShown) {
- this.alreadyShown = alreadyShown;
- }
-
- public boolean isAlreadyShown() {
- return alreadyShown;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.tutorial;
+
+import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
+
+/**
+ * Created by Julian on 14.03.2017.
+ */
+
+public class BreakPoint {
+
+ public final static float NONE_X = -1;
+
+ private float x;
+ private boolean alreadyShown = false;
+ @StringRes
+ private int textId;
+ @DrawableRes
+ private int imageId;
+
+ public BreakPoint(float x, @StringRes int textId, @DrawableRes int imageId) {
+ this.x = x;
+ this.textId = textId;
+ this.imageId = imageId;
+ }
+
+ public float getX() {
+ return x;
+ }
+
+ public int getTextId() {
+ return textId;
+ }
+
+ public int getImageId() {
+ return imageId;
+ }
+
+ public void setAlreadyShown(boolean alreadyShown) {
+ this.alreadyShown = alreadyShown;
+ }
+
+ public boolean isAlreadyShown() {
+ return alreadyShown;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/tutorial/ToolShopTutorial.java b/app/src/main/java/de/frajul/endlessroll/main/tutorial/ToolShopTutorial.java
index e1b3165..81ff8b6 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/tutorial/ToolShopTutorial.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/tutorial/ToolShopTutorial.java
@@ -1,101 +1,101 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.tutorial;
-
-import java.util.Arrays;
-
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.screens.Screen;
-import de.frajul.endlessroll.main.screens.ToolShopScreen;
-import de.frajul.endlessroll.user.LevelUpBounties;
-import de.frajul.endlessroll.views.TopBar;
-
-/**
- * Created by Julian on 10.06.2017.
- */
-
-public class ToolShopTutorial {
-
- private GameActivity gameActivity;
- private LevelUpBounties levelUpBounties;
-
- private BreakPoint springEquipped;
- private ToolShopScreen toolShopScreen;
- private boolean finished = false;
-
- public ToolShopTutorial(GameActivity gameActivity, BreakPoint springEquipped) {
- this.gameActivity = gameActivity;
- levelUpBounties = new LevelUpBounties(0);
- this.springEquipped = springEquipped;
- }
-
- public void setToolShopScreen(ToolShopScreen toolShopScreen) {
- this.toolShopScreen = toolShopScreen;
- }
-
- public void onTopBarUpdate(TopBar topBar) {
- if (!finished && isSpringUnlocked()) {
- boolean notOnToolShopScreen = topBar.getParentType() != Screen.ScreenType.TOOL_SHOP;
- if (notOnToolShopScreen && topBar.isToolShopButtonEnabled())
- topBar.startToolShopButtonPulse();
- }
- }
-
- public void onToolShopScreenPrepare() {
- onToolShopUpdate();
- }
-
- public void onToolSelected() {
- onToolShopUpdate();
- }
-
- public void onToolBought() {
- onToolShopUpdate();
- }
-
- public void onToolEquipped() {
- if (!finished && toolShopScreen.getSelectedToolType() == ToolType.SPRING) {
- toolShopScreen.stopTutorialAnimations();
- finished = true;
- toolShopScreen.writeToolShopTutorialIsFinished();
- gameActivity.showTutorial(Arrays.asList(springEquipped));
- }
- }
-
- private void onToolShopUpdate() {
- if (!finished && isSpringUnlocked()) {
- boolean springSelected = toolShopScreen.getSelectedToolType() == ToolType.SPRING;
- boolean springBought = ToolType.SPRING.isBought();
-
- boolean isSelectSpring = !springSelected;
- boolean isBuySpring = springSelected && !springBought;
- boolean isEquipSpring = springSelected && springBought;
-
- if (isSelectSpring) {
- toolShopScreen.stopTutorialAnimations();
- toolShopScreen.tutorialStartSpringOfferSlotPulse();
- } else if (isBuySpring) {
- toolShopScreen.stopTutorialAnimations();
- toolShopScreen.tutorialStartSpringBuyButtonPulse();
- } else if (isEquipSpring) {
- toolShopScreen.stopTutorialAnimations();
- toolShopScreen.tutorialStartSpringToolSlotPulse();
- }
- }
- }
-
- private boolean isSpringUnlocked() {
- levelUpBounties.loadAllForLevel(gameActivity.getUser().getLevel());
- return !levelUpBounties.isToolLocked(ToolType.SPRING);
- }
-
- public void setFinished(boolean finished) {
- this.finished = finished;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.tutorial;
+
+import java.util.Arrays;
+
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.screens.Screen;
+import de.frajul.endlessroll.main.screens.ToolShopScreen;
+import de.frajul.endlessroll.user.LevelUpBounties;
+import de.frajul.endlessroll.views.TopBar;
+
+/**
+ * Created by Julian on 10.06.2017.
+ */
+
+public class ToolShopTutorial {
+
+ private GameActivity gameActivity;
+ private LevelUpBounties levelUpBounties;
+
+ private BreakPoint springEquipped;
+ private ToolShopScreen toolShopScreen;
+ private boolean finished = false;
+
+ public ToolShopTutorial(GameActivity gameActivity, BreakPoint springEquipped) {
+ this.gameActivity = gameActivity;
+ levelUpBounties = new LevelUpBounties(0);
+ this.springEquipped = springEquipped;
+ }
+
+ public void setToolShopScreen(ToolShopScreen toolShopScreen) {
+ this.toolShopScreen = toolShopScreen;
+ }
+
+ public void onTopBarUpdate(TopBar topBar) {
+ if (!finished && isSpringUnlocked()) {
+ boolean notOnToolShopScreen = topBar.getParentType() != Screen.ScreenType.TOOL_SHOP;
+ if (notOnToolShopScreen && topBar.isToolShopButtonEnabled())
+ topBar.startToolShopButtonPulse();
+ }
+ }
+
+ public void onToolShopScreenPrepare() {
+ onToolShopUpdate();
+ }
+
+ public void onToolSelected() {
+ onToolShopUpdate();
+ }
+
+ public void onToolBought() {
+ onToolShopUpdate();
+ }
+
+ public void onToolEquipped() {
+ if (!finished && toolShopScreen.getSelectedToolType() == ToolType.SPRING) {
+ toolShopScreen.stopTutorialAnimations();
+ finished = true;
+ toolShopScreen.writeToolShopTutorialIsFinished();
+ gameActivity.showTutorial(Arrays.asList(springEquipped));
+ }
+ }
+
+ private void onToolShopUpdate() {
+ if (!finished && isSpringUnlocked()) {
+ boolean springSelected = toolShopScreen.getSelectedToolType() == ToolType.SPRING;
+ boolean springBought = ToolType.SPRING.isBought();
+
+ boolean isSelectSpring = !springSelected;
+ boolean isBuySpring = springSelected && !springBought;
+ boolean isEquipSpring = springSelected && springBought;
+
+ if (isSelectSpring) {
+ toolShopScreen.stopTutorialAnimations();
+ toolShopScreen.tutorialStartSpringOfferSlotPulse();
+ } else if (isBuySpring) {
+ toolShopScreen.stopTutorialAnimations();
+ toolShopScreen.tutorialStartSpringBuyButtonPulse();
+ } else if (isEquipSpring) {
+ toolShopScreen.stopTutorialAnimations();
+ toolShopScreen.tutorialStartSpringToolSlotPulse();
+ }
+ }
+ }
+
+ private boolean isSpringUnlocked() {
+ levelUpBounties.loadAllForLevel(gameActivity.getUser().getLevel());
+ return !levelUpBounties.isToolLocked(ToolType.SPRING);
+ }
+
+ public void setFinished(boolean finished) {
+ this.finished = finished;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/tutorial/Tutorial.java b/app/src/main/java/de/frajul/endlessroll/main/tutorial/Tutorial.java
index eedf551..de749d8 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/tutorial/Tutorial.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/tutorial/Tutorial.java
@@ -1,68 +1,68 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.tutorial;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 14.03.2017.
- */
-
-public class Tutorial {
-
- private GameActivity gameActivity;
- private List breakPoints;
- protected List currentBreakPoints = new ArrayList<>();
-
- public Tutorial(GameActivity gameActivity, BreakPoint... breakPoints) {
- this.gameActivity = gameActivity;
- this.breakPoints = Arrays.asList(breakPoints);
- }
-
- public void setFinished() {
- for (BreakPoint breakPoint : breakPoints)
- breakPoint.setAlreadyShown(true);
- currentBreakPoints.clear();
- }
-
- public void reset() {
- for (BreakPoint breakPoint : breakPoints)
- breakPoint.setAlreadyShown(false);
- currentBreakPoints.clear();
- }
-
- public void update(float playerProgress) {
- playerProgress *= 2f;
- currentBreakPoints.clear();
-
- boolean newBreakPoints = false;
- for (BreakPoint breakPoint : breakPoints) {
- if (!breakPoint.isAlreadyShown() && playerProgress >= breakPoint.getX() && breakPoint
- .getX() != BreakPoint.NONE_X) {
- breakPoint.setAlreadyShown(true);
- currentBreakPoints.add(breakPoint);
- newBreakPoints = true;
- }
- }
- if (newBreakPoints)
- showCurrentBreakPoints();
- }
-
- private void showCurrentBreakPoints() {
- gameActivity.showTutorial(currentBreakPoints);
- }
-
- public void showAllBreakPoints() {
- gameActivity.showTutorial(breakPoints);
- }
-
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.tutorial;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 14.03.2017.
+ */
+
+public class Tutorial {
+
+ private GameActivity gameActivity;
+ private List breakPoints;
+ protected List currentBreakPoints = new ArrayList<>();
+
+ public Tutorial(GameActivity gameActivity, BreakPoint... breakPoints) {
+ this.gameActivity = gameActivity;
+ this.breakPoints = Arrays.asList(breakPoints);
+ }
+
+ public void setFinished() {
+ for (BreakPoint breakPoint : breakPoints)
+ breakPoint.setAlreadyShown(true);
+ currentBreakPoints.clear();
+ }
+
+ public void reset() {
+ for (BreakPoint breakPoint : breakPoints)
+ breakPoint.setAlreadyShown(false);
+ currentBreakPoints.clear();
+ }
+
+ public void update(float playerProgress) {
+ playerProgress *= 2f;
+ currentBreakPoints.clear();
+
+ boolean newBreakPoints = false;
+ for (BreakPoint breakPoint : breakPoints) {
+ if (!breakPoint.isAlreadyShown() && playerProgress >= breakPoint.getX() && breakPoint
+ .getX() != BreakPoint.NONE_X) {
+ breakPoint.setAlreadyShown(true);
+ currentBreakPoints.add(breakPoint);
+ newBreakPoints = true;
+ }
+ }
+ if (newBreakPoints)
+ showCurrentBreakPoints();
+ }
+
+ private void showCurrentBreakPoints() {
+ gameActivity.showTutorial(currentBreakPoints);
+ }
+
+ public void showAllBreakPoints() {
+ gameActivity.showTutorial(breakPoints);
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/main/tutorial/TutorialManager.java b/app/src/main/java/de/frajul/endlessroll/main/tutorial/TutorialManager.java
index fa959b6..7010029 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/tutorial/TutorialManager.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/tutorial/TutorialManager.java
@@ -1,99 +1,99 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.tutorial;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.user.User;
-import de.frajul.endlessroll.views.TopBar;
-
-/**
- * Created by Julian on 17.03.2017.
- */
-
-public class TutorialManager {
-
- private final int WELCOME_TUTORIAL_LEVEL = 1;
- private final int IN_AIR_TUTORIAL_LEVEL = 5;
- private final int SWITCH_TOOLS_TUTORIAL_LEVEL = 11;
-
- private Tutorial welcomeTutorial;
- private Tutorial inAirTutorial;
- private Tutorial toToolShopTutorial;
- private ToolShopTutorial toolShopTutorial;
- private Tutorial switchToolsTutorial;
-
- public TutorialManager(GameActivity gameActivity) {
- welcomeTutorial = new Tutorial(gameActivity,
- new BreakPoint(0, R.string.tutorial_welcome, -1),
- new BreakPoint(0, R.string.tutorial_place_tools, R.drawable.tutorial_place_tools),
- new BreakPoint(7, R.string.tutorial_place_ramp_gap,
- R.drawable.tutorial_place_ramp_gap),
- new BreakPoint(21, R.string.tutorial_place_ramp_obstacle,
- R.drawable.tutorial_place_ramp_obstacle));
- inAirTutorial = new Tutorial(gameActivity,
- new BreakPoint(11, R.string.tutorial_place_ramp_air,
- R.drawable.tutorial_place_ramp_air_1),
- new BreakPoint(33, R.string.tutorial_place_ramp_air_2,
- R.drawable.tutorial_place_ramp_air_2));
- toToolShopTutorial = new Tutorial(gameActivity,
- new BreakPoint(BreakPoint.NONE_X, R.string.tutorial_leveled_up_to_toolshop,
- R.drawable.tutorial_to_toolshop));
- toolShopTutorial = new ToolShopTutorial(gameActivity,
- new BreakPoint(BreakPoint.NONE_X, R.string.tutorial_spring_equipped, -1));
- switchToolsTutorial = new Tutorial(gameActivity,
- new BreakPoint(0, R.string.tutorial_switch_tools_two_neccessary, -1),
- new BreakPoint(0, R.string.tutorial_switch_tools_switch,
- R.drawable.tutorial_switch_tools));
- }
-
- public void update(Level level, float playerX) {
- if (level.getPackId() == 1 && level.getId() == WELCOME_TUTORIAL_LEVEL && !level
- .isFinished()) {
- welcomeTutorial.update(playerX);
- } else if (level.getPackId() == 1 && level.getId() == IN_AIR_TUTORIAL_LEVEL && !level
- .isFinished()) {
- inAirTutorial.update(playerX);
- } else if (level.getPackId() == 1 && level.getId() == SWITCH_TOOLS_TUTORIAL_LEVEL && !level
- .isFinished()) {
- switchToolsTutorial.update(playerX);
- }
- }
-
- public void onLvUp(User user) {
- boolean springUnlockedOnLvUp = user.getLevelUpBounties()
- .getLevelToolIsUnlocked(ToolType.SPRING) == user.getLevel();
- if (springUnlockedOnLvUp) {
- toToolShopTutorial.showAllBreakPoints();
- }
- }
-
- public void onTopBarUpdate(TopBar topBar) {
- toolShopTutorial.onTopBarUpdate(topBar);
- }
-
- public void resetGameTutorials() {
- welcomeTutorial.reset();
- inAirTutorial.reset();
- switchToolsTutorial.reset();
- }
-
- public void resetAllTutorials() {
- welcomeTutorial.reset();
- inAirTutorial.reset();
- switchToolsTutorial.reset();
- toToolShopTutorial.reset();
- toolShopTutorial.setFinished(false);
- }
-
- public ToolShopTutorial getToolShopTutorial() {
- return toolShopTutorial;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.tutorial;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.user.User;
+import de.frajul.endlessroll.views.TopBar;
+
+/**
+ * Created by Julian on 17.03.2017.
+ */
+
+public class TutorialManager {
+
+ private final int WELCOME_TUTORIAL_LEVEL = 1;
+ private final int IN_AIR_TUTORIAL_LEVEL = 5;
+ private final int SWITCH_TOOLS_TUTORIAL_LEVEL = 11;
+
+ private Tutorial welcomeTutorial;
+ private Tutorial inAirTutorial;
+ private Tutorial toToolShopTutorial;
+ private ToolShopTutorial toolShopTutorial;
+ private Tutorial switchToolsTutorial;
+
+ public TutorialManager(GameActivity gameActivity) {
+ welcomeTutorial = new Tutorial(gameActivity,
+ new BreakPoint(0, R.string.tutorial_welcome, -1),
+ new BreakPoint(0, R.string.tutorial_place_tools, R.drawable.tutorial_place_tools),
+ new BreakPoint(7, R.string.tutorial_place_ramp_gap,
+ R.drawable.tutorial_place_ramp_gap),
+ new BreakPoint(21, R.string.tutorial_place_ramp_obstacle,
+ R.drawable.tutorial_place_ramp_obstacle));
+ inAirTutorial = new Tutorial(gameActivity,
+ new BreakPoint(11, R.string.tutorial_place_ramp_air,
+ R.drawable.tutorial_place_ramp_air_1),
+ new BreakPoint(33, R.string.tutorial_place_ramp_air_2,
+ R.drawable.tutorial_place_ramp_air_2));
+ toToolShopTutorial = new Tutorial(gameActivity,
+ new BreakPoint(BreakPoint.NONE_X, R.string.tutorial_leveled_up_to_toolshop,
+ R.drawable.tutorial_to_toolshop));
+ toolShopTutorial = new ToolShopTutorial(gameActivity,
+ new BreakPoint(BreakPoint.NONE_X, R.string.tutorial_spring_equipped, -1));
+ switchToolsTutorial = new Tutorial(gameActivity,
+ new BreakPoint(0, R.string.tutorial_switch_tools_two_neccessary, -1),
+ new BreakPoint(0, R.string.tutorial_switch_tools_switch,
+ R.drawable.tutorial_switch_tools));
+ }
+
+ public void update(Level level, float playerX) {
+ if (level.getPackId() == 1 && level.getId() == WELCOME_TUTORIAL_LEVEL && !level
+ .isFinished()) {
+ welcomeTutorial.update(playerX);
+ } else if (level.getPackId() == 1 && level.getId() == IN_AIR_TUTORIAL_LEVEL && !level
+ .isFinished()) {
+ inAirTutorial.update(playerX);
+ } else if (level.getPackId() == 1 && level.getId() == SWITCH_TOOLS_TUTORIAL_LEVEL && !level
+ .isFinished()) {
+ switchToolsTutorial.update(playerX);
+ }
+ }
+
+ public void onLvUp(User user) {
+ boolean springUnlockedOnLvUp = user.getLevelUpBounties()
+ .getLevelToolIsUnlocked(ToolType.SPRING) == user.getLevel();
+ if (springUnlockedOnLvUp) {
+ toToolShopTutorial.showAllBreakPoints();
+ }
+ }
+
+ public void onTopBarUpdate(TopBar topBar) {
+ toolShopTutorial.onTopBarUpdate(topBar);
+ }
+
+ public void resetGameTutorials() {
+ welcomeTutorial.reset();
+ inAirTutorial.reset();
+ switchToolsTutorial.reset();
+ }
+
+ public void resetAllTutorials() {
+ welcomeTutorial.reset();
+ inAirTutorial.reset();
+ switchToolsTutorial.reset();
+ toToolShopTutorial.reset();
+ toolShopTutorial.setFinished(false);
+ }
+
+ public ToolShopTutorial getToolShopTutorial() {
+ return toolShopTutorial;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/main/tutorial/TutorialView.java b/app/src/main/java/de/frajul/endlessroll/main/tutorial/TutorialView.java
index 26f1d29..e47ed71 100644
--- a/app/src/main/java/de/frajul/endlessroll/main/tutorial/TutorialView.java
+++ b/app/src/main/java/de/frajul/endlessroll/main/tutorial/TutorialView.java
@@ -1,92 +1,92 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.main.tutorial;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import java.util.List;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 24.02.2017.
- */
-
-public class TutorialView implements View.OnClickListener {
-
- private View layout;
- private TextView textView;
- private ImageView imageView;
- private GameActivity activity;
-
- private int currentBreakPoint = 0;
- private List breakPoints;
-
- public TutorialView(GameActivity activity) {
- this.activity = activity;
- LayoutInflater inflater = LayoutInflater.from(activity);
- layout = inflater.inflate(R.layout.tutorial, null);
- layout.setVisibility(View.GONE);
- layout.setOnClickListener(this);
- layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT));
- textView = layout.findViewById(R.id.tutorial_text_view);
- textView.setTypeface(activity.getTypeface());
- imageView = layout.findViewById(R.id.tutorial_image_view);
- }
-
- public View getLayout() {
- return layout;
- }
-
- public void show(List breakPoints) {
- this.breakPoints = breakPoints;
- currentBreakPoint = 0;
- if (!breakPoints.isEmpty())
- showCurrentBreakPoint();
- }
-
- public boolean isShowingTutorial() {
- return layout.getVisibility() == View.VISIBLE;
- }
-
- private void showCurrentBreakPoint() {
- int textId = breakPoints.get(currentBreakPoint).getTextId();
- int imageId = breakPoints.get(currentBreakPoint).getImageId();
-
- if (textId == -1)
- textView.setVisibility(View.GONE);
- else {
- textView.setVisibility(View.VISIBLE);
- textView.setText(textId);
- }
- if (imageId == -1)
- imageView.setVisibility(View.GONE);
- else {
- imageView.setVisibility(View.VISIBLE);
- imageView.setImageResource(imageId);
- }
- layout.setVisibility(View.VISIBLE);
- }
-
- @Override
- public void onClick(View v) {
- currentBreakPoint++;
- if (breakPoints.size() <= currentBreakPoint) {
- layout.setVisibility(View.GONE);
- activity.onTutorialViewHidden();
- } else {
- showCurrentBreakPoint();
- }
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.main.tutorial;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.util.List;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 24.02.2017.
+ */
+
+public class TutorialView implements View.OnClickListener {
+
+ private View layout;
+ private TextView textView;
+ private ImageView imageView;
+ private GameActivity activity;
+
+ private int currentBreakPoint = 0;
+ private List breakPoints;
+
+ public TutorialView(GameActivity activity) {
+ this.activity = activity;
+ LayoutInflater inflater = LayoutInflater.from(activity);
+ layout = inflater.inflate(R.layout.tutorial, null);
+ layout.setVisibility(View.GONE);
+ layout.setOnClickListener(this);
+ layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT));
+ textView = layout.findViewById(R.id.tutorial_text_view);
+ textView.setTypeface(activity.getTypeface());
+ imageView = layout.findViewById(R.id.tutorial_image_view);
+ }
+
+ public View getLayout() {
+ return layout;
+ }
+
+ public void show(List breakPoints) {
+ this.breakPoints = breakPoints;
+ currentBreakPoint = 0;
+ if (!breakPoints.isEmpty())
+ showCurrentBreakPoint();
+ }
+
+ public boolean isShowingTutorial() {
+ return layout.getVisibility() == View.VISIBLE;
+ }
+
+ private void showCurrentBreakPoint() {
+ int textId = breakPoints.get(currentBreakPoint).getTextId();
+ int imageId = breakPoints.get(currentBreakPoint).getImageId();
+
+ if (textId == -1)
+ textView.setVisibility(View.GONE);
+ else {
+ textView.setVisibility(View.VISIBLE);
+ textView.setText(textId);
+ }
+ if (imageId == -1)
+ imageView.setVisibility(View.GONE);
+ else {
+ imageView.setVisibility(View.VISIBLE);
+ imageView.setImageResource(imageId);
+ }
+ layout.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onClick(View v) {
+ currentBreakPoint++;
+ if (breakPoints.size() <= currentBreakPoint) {
+ layout.setVisibility(View.GONE);
+ activity.onTutorialViewHidden();
+ } else {
+ showCurrentBreakPoint();
+ }
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/Fbo.java b/app/src/main/java/de/frajul/endlessroll/rendering/Fbo.java
index e443421..eea64fd 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/Fbo.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/Fbo.java
@@ -1,54 +1,54 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering;
-
-import android.opengl.GLES20;
-
-import javax.microedition.khronos.opengles.GL11;
-
-/**
- * Created by Julian on 06.08.2016.
- */
-public class Fbo {
-
- private int frameBuffer;
- private int texture;
-
- public Fbo(int width, int height) {
- int[] frameBuffers = new int[1];
- GLES20.glGenFramebuffers(1, frameBuffers, 0);
- this.frameBuffer = frameBuffers[0];
- bind();
-
- int[] textures = new int[1];
- GLES20.glGenTextures(1, textures, 0);
- this.texture = textures[0];
- GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture);
- GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, GLES20.GL_RGBA, GL11.GL_UNSIGNED_BYTE, null);
- GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
- GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
- GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_NONE);
- GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_NONE);
- GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, texture, 0);
-
- unbind();
- }
-
- public void bind() {
- GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, frameBuffer);
- }
-
- public void unbind() {
- GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
- GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
- }
-
- public int getTexture() {
- return texture;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering;
+
+import android.opengl.GLES20;
+
+import javax.microedition.khronos.opengles.GL11;
+
+/**
+ * Created by Julian on 06.08.2016.
+ */
+public class Fbo {
+
+ private int frameBuffer;
+ private int texture;
+
+ public Fbo(int width, int height) {
+ int[] frameBuffers = new int[1];
+ GLES20.glGenFramebuffers(1, frameBuffers, 0);
+ this.frameBuffer = frameBuffers[0];
+ bind();
+
+ int[] textures = new int[1];
+ GLES20.glGenTextures(1, textures, 0);
+ this.texture = textures[0];
+ GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture);
+ GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, GLES20.GL_RGBA, GL11.GL_UNSIGNED_BYTE, null);
+ GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
+ GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
+ GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_NONE);
+ GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_NONE);
+ GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, texture, 0);
+
+ unbind();
+ }
+
+ public void bind() {
+ GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, frameBuffer);
+ }
+
+ public void unbind() {
+ GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
+ GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
+ }
+
+ public int getTexture() {
+ return texture;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/Lock.java b/app/src/main/java/de/frajul/endlessroll/rendering/Lock.java
index 799d344..4789f49 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/Lock.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/Lock.java
@@ -1,29 +1,29 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering;
-
-public class Lock {
-
- private boolean isLocked = false;
-
- public synchronized void lock() {
- while (isLocked) {
- try {
- wait();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- isLocked = true;
- }
-
- public synchronized void unlock() {
- isLocked = false;
- notify();
- }
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering;
+
+public class Lock {
+
+ private boolean isLocked = false;
+
+ public synchronized void lock() {
+ while (isLocked) {
+ try {
+ wait();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ isLocked = true;
+ }
+
+ public synchronized void unlock() {
+ isLocked = false;
+ notify();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/MatrixCreator.java b/app/src/main/java/de/frajul/endlessroll/rendering/MatrixCreator.java
index 45c9ee1..fd4dc11 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/MatrixCreator.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/MatrixCreator.java
@@ -1,69 +1,69 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering;
-
-import android.opengl.Matrix;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.main.game.Camera;
-
-/**
- * Created by Julian on 23.11.2015.
- */
-public class MatrixCreator {
-
- private float width, height;
-
- public void setMVPMSize(float width, float height) {
- this.width = width;
- this.height = height;
- }
-
- public float[] createGuiModelViewProjectionMatrix() {
- float[] mvpMatrix = new float[16];
- float[] projectionMatrix = new float[16];
- float[] viewMatrix = new float[16];
-
- float ratio = width / height;
- Matrix.frustumM(projectionMatrix, 0, -ratio, ratio, -1, 1, 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;
- }
-
- 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 + 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;
- }
-
- public float[] createTransformationMatrix(Entity entity) {
- float width = entity.getWidth();
- float height = entity.getHeight();
- float rotation = entity.getRotation();
- Vector position = entity.getPosition();
- return createTransformationMatrix(width, height, rotation, position);
- }
-
- public float[] createTransformationMatrix(float width, float height, float rotation, Vector position) {
- float[] transformationMatrix = new float[16];
- Matrix.setIdentityM(transformationMatrix, 0);
- Matrix.translateM(transformationMatrix, 0, position.x, position.y, 0);
- Matrix.rotateM(transformationMatrix, 0, rotation, 0, 0, 1);
- Matrix.scaleM(transformationMatrix, 0, width * .5f, height * .5f, 0);
- return transformationMatrix;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering;
+
+import android.opengl.Matrix;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.main.game.Camera;
+
+/**
+ * Created by Julian on 23.11.2015.
+ */
+public class MatrixCreator {
+
+ private float width, height;
+
+ public void setMVPMSize(float width, float height) {
+ this.width = width;
+ this.height = height;
+ }
+
+ public float[] createGuiModelViewProjectionMatrix() {
+ float[] mvpMatrix = new float[16];
+ float[] projectionMatrix = new float[16];
+ float[] viewMatrix = new float[16];
+
+ float ratio = width / height;
+ Matrix.frustumM(projectionMatrix, 0, -ratio, ratio, -1, 1, 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;
+ }
+
+ 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 + 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;
+ }
+
+ public float[] createTransformationMatrix(Entity entity) {
+ float width = entity.getWidth();
+ float height = entity.getHeight();
+ float rotation = entity.getRotation();
+ Vector position = entity.getPosition();
+ return createTransformationMatrix(width, height, rotation, position);
+ }
+
+ public float[] createTransformationMatrix(float width, float height, float rotation, Vector position) {
+ float[] transformationMatrix = new float[16];
+ Matrix.setIdentityM(transformationMatrix, 0);
+ Matrix.translateM(transformationMatrix, 0, position.x, position.y, 0);
+ Matrix.rotateM(transformationMatrix, 0, rotation, 0, 0, 1);
+ Matrix.scaleM(transformationMatrix, 0, width * .5f, height * .5f, 0);
+ return transformationMatrix;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/Quad.java b/app/src/main/java/de/frajul/endlessroll/rendering/Quad.java
index 1b15047..cffd080 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/Quad.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/Quad.java
@@ -1,56 +1,56 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering;
-
-import android.opengl.GLES20;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.FloatBuffer;
-
-/**
- * Created by Julian on 26.11.2015.
- */
-public class Quad {
-
- private FloatBuffer vertexBuffer;
- private FloatBuffer textureBuffer;
-
- private float vertices[] = {1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f,
- 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f};
-
- private float textures[] = {1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,
- 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
-
- public Quad() {
- vertexBuffer = createEmptyFloatBuffer();
- vertexBuffer.put(vertices);
- vertexBuffer.position(0);
-
- textureBuffer = createEmptyFloatBuffer();
- textureBuffer.put(textures);
- textureBuffer.position(0);
- }
-
- private FloatBuffer createEmptyFloatBuffer() {
- ByteBuffer bb = ByteBuffer.allocateDirect(vertices.length * 4);
- bb.order(ByteOrder.nativeOrder());
- return bb.asFloatBuffer();
- }
-
- public void draw() {
- GLES20.glEnableVertexAttribArray(0);
- GLES20.glEnableVertexAttribArray(1);
- GLES20.glVertexAttribPointer(0, 2, GLES20.GL_FLOAT, false, 0, vertexBuffer);
- GLES20.glVertexAttribPointer(1, 2, GLES20.GL_FLOAT, false, 0, textureBuffer);
- GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertices.length / 2);
- GLES20.glDisableVertexAttribArray(1);
- GLES20.glDisableVertexAttribArray(0);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering;
+
+import android.opengl.GLES20;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.FloatBuffer;
+
+/**
+ * Created by Julian on 26.11.2015.
+ */
+public class Quad {
+
+ private FloatBuffer vertexBuffer;
+ private FloatBuffer textureBuffer;
+
+ private float vertices[] = {1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f,
+ 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f};
+
+ private float textures[] = {1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,
+ 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
+
+ public Quad() {
+ vertexBuffer = createEmptyFloatBuffer();
+ vertexBuffer.put(vertices);
+ vertexBuffer.position(0);
+
+ textureBuffer = createEmptyFloatBuffer();
+ textureBuffer.put(textures);
+ textureBuffer.position(0);
+ }
+
+ private FloatBuffer createEmptyFloatBuffer() {
+ ByteBuffer bb = ByteBuffer.allocateDirect(vertices.length * 4);
+ bb.order(ByteOrder.nativeOrder());
+ return bb.asFloatBuffer();
+ }
+
+ public void draw() {
+ GLES20.glEnableVertexAttribArray(0);
+ GLES20.glEnableVertexAttribArray(1);
+ GLES20.glVertexAttribPointer(0, 2, GLES20.GL_FLOAT, false, 0, vertexBuffer);
+ GLES20.glVertexAttribPointer(1, 2, GLES20.GL_FLOAT, false, 0, textureBuffer);
+ GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertices.length / 2);
+ GLES20.glDisableVertexAttribArray(1);
+ GLES20.glDisableVertexAttribArray(0);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/Rendering.java b/app/src/main/java/de/frajul/endlessroll/rendering/Rendering.java
index 3abd49f..74548b1 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/Rendering.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/Rendering.java
@@ -1,56 +1,56 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering;
-
-import android.content.Context;
-
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.game.Scene;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.rendering.renderer.GameRenderer;
-
-/**
- * Created by Julian on 26.11.2015.
- */
-public abstract class Rendering {
-
- protected S scene;
- private GameActivity gameActivity;
- private boolean alreadyInitiated = false;
-
- public Rendering(GameActivity gameActivity, GameRenderer gameRenderer) {
- this.gameActivity = gameActivity;
- gameRenderer.addRenderTarget(this);
- }
-
- public void initiate(TexturePack texturePack, Timer timer) {
- this.scene = init(texturePack, timer, !alreadyInitiated);
- alreadyInitiated = true;
- }
-
- protected abstract S init(TexturePack texturePack, Timer timer, boolean isFirstTime);
-
- public abstract void update();
-
- public abstract void onTouch(float x, float y);
-
- public void setScreenSize(int width, int height) {
- if (scene != null)
- scene.setScreenSize(width, height);
- }
-
- public Scene getScene() {
- return scene;
- }
-
- public Context getContext() {
- return gameActivity;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering;
+
+import android.content.Context;
+
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.game.Scene;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.rendering.renderer.GameRenderer;
+
+/**
+ * Created by Julian on 26.11.2015.
+ */
+public abstract class Rendering {
+
+ protected S scene;
+ private GameActivity gameActivity;
+ private boolean alreadyInitiated = false;
+
+ public Rendering(GameActivity gameActivity, GameRenderer gameRenderer) {
+ this.gameActivity = gameActivity;
+ gameRenderer.addRenderTarget(this);
+ }
+
+ public void initiate(TexturePack texturePack, Timer timer) {
+ this.scene = init(texturePack, timer, !alreadyInitiated);
+ alreadyInitiated = true;
+ }
+
+ protected abstract S init(TexturePack texturePack, Timer timer, boolean isFirstTime);
+
+ public abstract void update();
+
+ public abstract void onTouch(float x, float y);
+
+ public void setScreenSize(int width, int height) {
+ if (scene != null)
+ scene.setScreenSize(width, height);
+ }
+
+ public Scene getScene() {
+ return scene;
+ }
+
+ public Context getContext() {
+ return gameActivity;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/renderer/GameRenderer.java b/app/src/main/java/de/frajul/endlessroll/rendering/renderer/GameRenderer.java
index 95703bb..4601702 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/renderer/GameRenderer.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/renderer/GameRenderer.java
@@ -1,277 +1,277 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:55 PM
- *
- */
-
-package de.frajul.endlessroll.rendering.renderer;
-
-import android.opengl.GLES20;
-import android.opengl.GLSurfaceView;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.opengles.GL10;
-
-import de.frajul.endlessroll.entities.BackgroundLayer;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.Obstacle;
-import de.frajul.endlessroll.entities.guis.Gui;
-import de.frajul.endlessroll.entities.guis.Progressbar;
-import de.frajul.endlessroll.entities.textures.TexturePack;
-import de.frajul.endlessroll.entities.tileLists.Tile;
-import de.frajul.endlessroll.entities.tileLists.TileList;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameLog;
-import de.frajul.endlessroll.main.game.Camera;
-import de.frajul.endlessroll.main.game.Scene;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.rendering.MatrixCreator;
-import de.frajul.endlessroll.rendering.Quad;
-import de.frajul.endlessroll.rendering.Rendering;
-import de.frajul.endlessroll.rendering.shader.EntityShader;
-import de.frajul.endlessroll.rendering.shader.GuiShader;
-import de.frajul.endlessroll.rendering.shader.ObstacleShader;
-import de.frajul.endlessroll.rendering.shader.SimpleShader;
-import de.frajul.endlessroll.rendering.shader.TerrainShader;
-
-/**
- * Created by Julian on 22.11.2015.
- */
-public class GameRenderer implements GLSurfaceView.Renderer {
-
- private List renderTargets = new ArrayList<>();
- private final Object currentRenderingLock = new Object();
- private Rendering currentRendering;
- private MatrixCreator matrixCreator;
-
- private GameActivity activity;
- private Quad quad;
-
- private ParticleRenderer particleRenderer;
-
- private EntityShader entityShader;
- private ObstacleShader obstacleShader;
- private TerrainShader terrainShader;
- private SimpleShader simpleShader;
- private GuiShader guiShader;
- private TexturePack texturePack;
- private Timer timer;
-
- public GameRenderer(GameActivity activity) {
- this.activity = activity;
- matrixCreator = new MatrixCreator();
- quad = new Quad();
- particleRenderer = new ParticleRenderer(activity, quad, matrixCreator);
- }
-
- public void addRenderTarget(Rendering renderTarget) {
- renderTargets.add(renderTarget);
- }
-
- public void setCurrentRendering(Rendering currentRendering) {
- synchronized (currentRenderingLock) {
- this.currentRendering = currentRendering;
- }
- }
-
- public void onTouch(float x, float y) {
- synchronized (currentRenderingLock) {
- if (currentRendering != null)
- currentRendering.onTouch(x, y);
- }
- }
-
- @Override
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- GameLog.d("onSurfaceCreated");
- GLES20.glClearColor(1, 0, 1, 1.0f);
- gl.glEnable(GL10.GL_BLEND);
- gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
-
- try {
- particleRenderer.createShader();
- entityShader = new EntityShader(activity);
- obstacleShader = new ObstacleShader(activity);
- terrainShader = new TerrainShader(activity);
- simpleShader = new SimpleShader(activity);
- guiShader = new GuiShader(activity);
- texturePack = new TexturePack(activity);
- timer = new Timer();
- } catch (Exception e) {
- activity.onException(e);
- }
- for (Rendering renderTarget : renderTargets)
- renderTarget.initiate(texturePack, timer);
- }
-
- @Override
- public void onSurfaceChanged(GL10 gl, int width, int height) {
- GameLog.d("onSurfaceChanged: width=" + width + ", height=" + height);
- particleRenderer.createFbo(width, height);
- GLES20.glViewport(0, 0, width, height);
- matrixCreator.setMVPMSize(width, height);
- for (Rendering renderTarget : renderTargets)
- renderTarget.setScreenSize(width, height);
- activity.onSurfaceChanged();
- }
-
- @Override
- public synchronized void onDrawFrame(GL10 gl) {
- timer.update();
- synchronized (currentRenderingLock) {
- if (currentRendering != null) {
- currentRendering.update();
- Scene scene = currentRendering.getScene();
-
- particleRenderer.renderParticlesToFbo(gl, scene);
-
- GLES20.glClearColor(1, 1, 1, 1.0f);
- GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
-
- renderBackground(gl, scene);
- renderTileList(gl, scene.getTerrain(), scene);
- renderTileList(gl, scene.getCeiling(), scene);
- renderEntityList(gl, scene.getCollectables(), scene.getCamera());
- renderObstacles(gl, scene);
- renderEntityList(gl, scene.getTools(), scene.getCamera());
-
- renderEntityList(gl, scene.getUncategorizedEntities(), scene.getCamera());
-
- renderFbo(gl);
-
- //TODO: change mvp matrix for non moving entites / change type of these entities (colorFilter, background)
- if(currentRendering.getScene().getColorFilter() != null) {
- entityShader.start();
- entityShader.loadMVPMatrix(matrixCreator, new Camera());
- renderEntity(gl, currentRendering.getScene().getColorFilter());
- entityShader.stop();
- }
-
- renderGuis(gl, scene.getGuis());
- }
- }
- }
-
- private void renderGuis(GL10 gl, List guis) {
- guiShader.start();
- guiShader.loadMVPMatrix(matrixCreator);
- synchronized (guis) {
- for (Gui gui : guis)
- renderGui(gl, gui);
- }
- guiShader.stop();
- }
-
- private void renderGui(GL10 gl, Gui gui) {
- if (!gui.isVisible())
- return;
-
- gl.glActiveTexture(GL10.GL_TEXTURE0);
- gl.glBindTexture(GL10.GL_TEXTURE_2D, gui.getTexture().getId());
- guiShader.loadTransformationMatrix(matrixCreator, gui);
- guiShader.loadCustomColor(gui.getColor());
- guiShader.loadAlpha(gui.getAlpha());
- guiShader.loadRoundValue(gui.getRoundValue());
- if (gui instanceof Progressbar)
- guiShader.loadVisibleAmount(((Progressbar) gui).getProgress());
- else
- guiShader.loadVisibleAmount(0);
- quad.draw();
- }
-
- private void renderBackground(GL10 gl, Scene scene) {
- entityShader.start();
- entityShader.loadMVPMatrix(matrixCreator, scene.getCamera());
- List layers = scene.getBackground().getLayers();
- synchronized (layers) {
- for (BackgroundLayer layer : layers) {
- synchronized (layer) {
- for (Entity backgroundPart : layer)
- renderEntity(gl, backgroundPart);
- }
- }
- }
- entityShader.stop();
- }
-
- private void renderObstacles(GL10 gl, Scene scene) {
- List obstacles = scene.getObstacles();
- obstacleShader.start();
- obstacleShader.loadMVPMatrix(matrixCreator, scene.getCamera());
- obstacleShader.loadBombSelected(scene.getBombSelected().get());
- synchronized (obstacles) {
- for (Obstacle obstacle : obstacles)
- renderObstacle(gl, obstacle);
- }
- obstacleShader.stop();
- }
-
-
- private void renderObstacle(GL10 gl, Obstacle obstacle) {
- gl.glActiveTexture(GL10.GL_TEXTURE0);
- gl.glBindTexture(GL10.GL_TEXTURE_2D, obstacle.getTexture().getId());
- obstacleShader.loadTransformationMatrix(matrixCreator, obstacle);
- obstacleShader.loadAlpha(obstacle.getAlpha());
- obstacleShader.loadTextureAtlasInfos(obstacle.getTexture());
- obstacleShader.loadGridSize(obstacle.getGridSize());
- obstacleShader.loadDeadly(obstacle.isDeadly());
- obstacleShader.loadFloating(obstacle.isFloating());
- obstacleShader.loadBombExplosionState(obstacle.getBombExplosionState());
- quad.draw();
- }
-
- private void renderEntityList(GL10 gl, List extends Entity> list, Camera camera) {
- entityShader.start();
- entityShader.loadMVPMatrix(matrixCreator, camera);
- synchronized (list) {
- for (Entity entity : list) {
- renderEntity(gl, entity);
- }
- }
- entityShader.stop();
- }
-
- private void renderEntity(GL10 gl, Entity entity) {
- if (!entity.isVisible())
- return;
-
- gl.glActiveTexture(GL10.GL_TEXTURE0);
- gl.glBindTexture(GL10.GL_TEXTURE_2D, entity.getTexture().getId());
- entityShader.loadTransformationMatrix(matrixCreator, entity);
- entityShader.loadColor(entity.getColor());
- entityShader.loadAlpha(entity.getAlpha());
- entityShader.loadTextureAtlasInfos(entity.getTexture(), entity.getTextureAtlasIndex());
- entityShader.loadTexCoordScaling(entity.calcTexScaleX(), entity.calcTexScaleY());
- quad.draw();
- }
-
- private void renderTileList(GL10 gl, TileList tileList, Scene scene) {
- terrainShader.start();
- terrainShader.loadMVPMatrix(matrixCreator, scene.getCamera());
- terrainShader.loadIsEndlessTileList(tileList.isEndless());
- synchronized (tileList) {
- for (Tile tile : tileList) {
- gl.glActiveTexture(GL10.GL_TEXTURE0);
- gl.glBindTexture(GL10.GL_TEXTURE_2D, tile.getTexture().getId());
- terrainShader.loadTransformationMatrix(matrixCreator, tile);
- terrainShader.loadGridColumnCount(tile.getGridColumnCount());
- quad.draw();
- }
- }
- terrainShader.stop();
- }
-
- private void renderFbo(GL10 gl) {
- simpleShader.start();
- gl.glActiveTexture(GL10.GL_TEXTURE0);
- gl.glBindTexture(GL10.GL_TEXTURE_2D, particleRenderer.getFboTexture());
- quad.draw();
- simpleShader.stop();
- }
-
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:55 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering.renderer;
+
+import android.opengl.GLES20;
+import android.opengl.GLSurfaceView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.opengles.GL10;
+
+import de.frajul.endlessroll.entities.BackgroundLayer;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.Obstacle;
+import de.frajul.endlessroll.entities.guis.Gui;
+import de.frajul.endlessroll.entities.guis.Progressbar;
+import de.frajul.endlessroll.entities.textures.TexturePack;
+import de.frajul.endlessroll.entities.tileLists.Tile;
+import de.frajul.endlessroll.entities.tileLists.TileList;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameLog;
+import de.frajul.endlessroll.main.game.Camera;
+import de.frajul.endlessroll.main.game.Scene;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.rendering.MatrixCreator;
+import de.frajul.endlessroll.rendering.Quad;
+import de.frajul.endlessroll.rendering.Rendering;
+import de.frajul.endlessroll.rendering.shader.EntityShader;
+import de.frajul.endlessroll.rendering.shader.GuiShader;
+import de.frajul.endlessroll.rendering.shader.ObstacleShader;
+import de.frajul.endlessroll.rendering.shader.SimpleShader;
+import de.frajul.endlessroll.rendering.shader.TerrainShader;
+
+/**
+ * Created by Julian on 22.11.2015.
+ */
+public class GameRenderer implements GLSurfaceView.Renderer {
+
+ private List renderTargets = new ArrayList<>();
+ private final Object currentRenderingLock = new Object();
+ private Rendering currentRendering;
+ private MatrixCreator matrixCreator;
+
+ private GameActivity activity;
+ private Quad quad;
+
+ private ParticleRenderer particleRenderer;
+
+ private EntityShader entityShader;
+ private ObstacleShader obstacleShader;
+ private TerrainShader terrainShader;
+ private SimpleShader simpleShader;
+ private GuiShader guiShader;
+ private TexturePack texturePack;
+ private Timer timer;
+
+ public GameRenderer(GameActivity activity) {
+ this.activity = activity;
+ matrixCreator = new MatrixCreator();
+ quad = new Quad();
+ particleRenderer = new ParticleRenderer(activity, quad, matrixCreator);
+ }
+
+ public void addRenderTarget(Rendering renderTarget) {
+ renderTargets.add(renderTarget);
+ }
+
+ public void setCurrentRendering(Rendering currentRendering) {
+ synchronized (currentRenderingLock) {
+ this.currentRendering = currentRendering;
+ }
+ }
+
+ public void onTouch(float x, float y) {
+ synchronized (currentRenderingLock) {
+ if (currentRendering != null)
+ currentRendering.onTouch(x, y);
+ }
+ }
+
+ @Override
+ public void onSurfaceCreated(GL10 gl, EGLConfig config) {
+ GameLog.d("onSurfaceCreated");
+ GLES20.glClearColor(1, 0, 1, 1.0f);
+ gl.glEnable(GL10.GL_BLEND);
+ gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
+
+ try {
+ particleRenderer.createShader();
+ entityShader = new EntityShader(activity);
+ obstacleShader = new ObstacleShader(activity);
+ terrainShader = new TerrainShader(activity);
+ simpleShader = new SimpleShader(activity);
+ guiShader = new GuiShader(activity);
+ texturePack = new TexturePack(activity);
+ timer = new Timer();
+ } catch (Exception e) {
+ activity.onException(e);
+ }
+ for (Rendering renderTarget : renderTargets)
+ renderTarget.initiate(texturePack, timer);
+ }
+
+ @Override
+ public void onSurfaceChanged(GL10 gl, int width, int height) {
+ GameLog.d("onSurfaceChanged: width=" + width + ", height=" + height);
+ particleRenderer.createFbo(width, height);
+ GLES20.glViewport(0, 0, width, height);
+ matrixCreator.setMVPMSize(width, height);
+ for (Rendering renderTarget : renderTargets)
+ renderTarget.setScreenSize(width, height);
+ activity.onSurfaceChanged();
+ }
+
+ @Override
+ public synchronized void onDrawFrame(GL10 gl) {
+ timer.update();
+ synchronized (currentRenderingLock) {
+ if (currentRendering != null) {
+ currentRendering.update();
+ Scene scene = currentRendering.getScene();
+
+ particleRenderer.renderParticlesToFbo(gl, scene);
+
+ GLES20.glClearColor(1, 1, 1, 1.0f);
+ GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
+
+ renderBackground(gl, scene);
+ renderTileList(gl, scene.getTerrain(), scene);
+ renderTileList(gl, scene.getCeiling(), scene);
+ renderEntityList(gl, scene.getCollectables(), scene.getCamera());
+ renderObstacles(gl, scene);
+ renderEntityList(gl, scene.getTools(), scene.getCamera());
+
+ renderEntityList(gl, scene.getUncategorizedEntities(), scene.getCamera());
+
+ renderFbo(gl);
+
+ //TODO: change mvp matrix for non moving entites / change type of these entities (colorFilter, background)
+ if(currentRendering.getScene().getColorFilter() != null) {
+ entityShader.start();
+ entityShader.loadMVPMatrix(matrixCreator, new Camera());
+ renderEntity(gl, currentRendering.getScene().getColorFilter());
+ entityShader.stop();
+ }
+
+ renderGuis(gl, scene.getGuis());
+ }
+ }
+ }
+
+ private void renderGuis(GL10 gl, List guis) {
+ guiShader.start();
+ guiShader.loadMVPMatrix(matrixCreator);
+ synchronized (guis) {
+ for (Gui gui : guis)
+ renderGui(gl, gui);
+ }
+ guiShader.stop();
+ }
+
+ private void renderGui(GL10 gl, Gui gui) {
+ if (!gui.isVisible())
+ return;
+
+ gl.glActiveTexture(GL10.GL_TEXTURE0);
+ gl.glBindTexture(GL10.GL_TEXTURE_2D, gui.getTexture().getId());
+ guiShader.loadTransformationMatrix(matrixCreator, gui);
+ guiShader.loadCustomColor(gui.getColor());
+ guiShader.loadAlpha(gui.getAlpha());
+ guiShader.loadRoundValue(gui.getRoundValue());
+ if (gui instanceof Progressbar)
+ guiShader.loadVisibleAmount(((Progressbar) gui).getProgress());
+ else
+ guiShader.loadVisibleAmount(0);
+ quad.draw();
+ }
+
+ private void renderBackground(GL10 gl, Scene scene) {
+ entityShader.start();
+ entityShader.loadMVPMatrix(matrixCreator, scene.getCamera());
+ List layers = scene.getBackground().getLayers();
+ synchronized (layers) {
+ for (BackgroundLayer layer : layers) {
+ synchronized (layer) {
+ for (Entity backgroundPart : layer)
+ renderEntity(gl, backgroundPart);
+ }
+ }
+ }
+ entityShader.stop();
+ }
+
+ private void renderObstacles(GL10 gl, Scene scene) {
+ List obstacles = scene.getObstacles();
+ obstacleShader.start();
+ obstacleShader.loadMVPMatrix(matrixCreator, scene.getCamera());
+ obstacleShader.loadBombSelected(scene.getBombSelected().get());
+ synchronized (obstacles) {
+ for (Obstacle obstacle : obstacles)
+ renderObstacle(gl, obstacle);
+ }
+ obstacleShader.stop();
+ }
+
+
+ private void renderObstacle(GL10 gl, Obstacle obstacle) {
+ gl.glActiveTexture(GL10.GL_TEXTURE0);
+ gl.glBindTexture(GL10.GL_TEXTURE_2D, obstacle.getTexture().getId());
+ obstacleShader.loadTransformationMatrix(matrixCreator, obstacle);
+ obstacleShader.loadAlpha(obstacle.getAlpha());
+ obstacleShader.loadTextureAtlasInfos(obstacle.getTexture());
+ obstacleShader.loadGridSize(obstacle.getGridSize());
+ obstacleShader.loadDeadly(obstacle.isDeadly());
+ obstacleShader.loadFloating(obstacle.isFloating());
+ obstacleShader.loadBombExplosionState(obstacle.getBombExplosionState());
+ quad.draw();
+ }
+
+ private void renderEntityList(GL10 gl, List extends Entity> list, Camera camera) {
+ entityShader.start();
+ entityShader.loadMVPMatrix(matrixCreator, camera);
+ synchronized (list) {
+ for (Entity entity : list) {
+ renderEntity(gl, entity);
+ }
+ }
+ entityShader.stop();
+ }
+
+ private void renderEntity(GL10 gl, Entity entity) {
+ if (!entity.isVisible())
+ return;
+
+ gl.glActiveTexture(GL10.GL_TEXTURE0);
+ gl.glBindTexture(GL10.GL_TEXTURE_2D, entity.getTexture().getId());
+ entityShader.loadTransformationMatrix(matrixCreator, entity);
+ entityShader.loadColor(entity.getColor());
+ entityShader.loadAlpha(entity.getAlpha());
+ entityShader.loadTextureAtlasInfos(entity.getTexture(), entity.getTextureAtlasIndex());
+ entityShader.loadTexCoordScaling(entity.calcTexScaleX(), entity.calcTexScaleY());
+ quad.draw();
+ }
+
+ private void renderTileList(GL10 gl, TileList tileList, Scene scene) {
+ terrainShader.start();
+ terrainShader.loadMVPMatrix(matrixCreator, scene.getCamera());
+ terrainShader.loadIsEndlessTileList(tileList.isEndless());
+ synchronized (tileList) {
+ for (Tile tile : tileList) {
+ gl.glActiveTexture(GL10.GL_TEXTURE0);
+ gl.glBindTexture(GL10.GL_TEXTURE_2D, tile.getTexture().getId());
+ terrainShader.loadTransformationMatrix(matrixCreator, tile);
+ terrainShader.loadGridColumnCount(tile.getGridColumnCount());
+ quad.draw();
+ }
+ }
+ terrainShader.stop();
+ }
+
+ private void renderFbo(GL10 gl) {
+ simpleShader.start();
+ gl.glActiveTexture(GL10.GL_TEXTURE0);
+ gl.glBindTexture(GL10.GL_TEXTURE_2D, particleRenderer.getFboTexture());
+ quad.draw();
+ simpleShader.stop();
+ }
+
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/renderer/ParticleRenderer.java b/app/src/main/java/de/frajul/endlessroll/rendering/renderer/ParticleRenderer.java
index c398ea5..c7b2611 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/renderer/ParticleRenderer.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/renderer/ParticleRenderer.java
@@ -1,112 +1,112 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering.renderer;
-
-import android.content.Context;
-import android.opengl.GLES20;
-
-import javax.microedition.khronos.opengles.GL10;
-
-import de.frajul.endlessroll.entities.particles.Particle;
-import de.frajul.endlessroll.entities.particles.ParticleEffect;
-import de.frajul.endlessroll.entities.particles.ParticleSource;
-import de.frajul.endlessroll.main.game.Scene;
-import de.frajul.endlessroll.rendering.Fbo;
-import de.frajul.endlessroll.rendering.MatrixCreator;
-import de.frajul.endlessroll.rendering.Quad;
-import de.frajul.endlessroll.rendering.shader.ParticleShader;
-
-/**
- * Created by Julian on 10.08.2016.
- */
-public class ParticleRenderer {
-
- private Context context;
- private Quad quad;
- private MatrixCreator matrixCreator;
- private boolean additiveBlending = false;
-
- private ParticleShader particleShader;
- private Fbo fbo;
-
- public ParticleRenderer(Context context, Quad quad, MatrixCreator matrixCreator) {
- this.context = context;
- this.quad = quad;
- this.matrixCreator = matrixCreator;
- }
-
- public void createShader() throws Exception {
- particleShader = new ParticleShader(context);
- }
-
- public void createFbo(int width, int height) {
- fbo = new Fbo(width, height);
- }
-
- public void renderParticlesToFbo(GL10 gl, Scene scene) {
- fbo.bind();
- GLES20.glClearColor(0, 0, 0, 0.0f);
- GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
-
- particleShader.start();
- particleShader.loadMVPMatrix(matrixCreator, scene.getCamera());
- synchronized (scene.getParticleSystem().getEffects()) {
- for (ParticleEffect effect : scene.getParticleSystem().getEffects()) {
- gl.glActiveTexture(GL10.GL_TEXTURE0);
- gl.glBindTexture(GL10.GL_TEXTURE_2D, effect.getTexture().getId());
-
- switchAdditiveBlending(gl, effect.getOptions().isAdditive());
- synchronized (effect.getSources()) {
- for (ParticleSource source : effect.getSources()) {
- source.getActiveParticleLock().lock();
- for (Particle particle : source.getActiveParticles())
- renderParticle(particle);
- source.getActiveParticleLock().unlock();
- }
- }
- }
- }
- disableAdditiveBlending(gl);
-
- particleShader.stop();
- fbo.unbind();
- }
-
-
- private void renderParticle(Particle particle) {
- particleShader.loadTransformationMatrix(matrixCreator, particle);
- particleShader.loadColor(particle.getColor());
- particleShader.loadAlpha(particle.getAlpha());
- quad.draw();
- }
-
- private void switchAdditiveBlending(GL10 gl, boolean additive) {
- if (additive && !additiveBlending)
- enableAdditiveBlending(gl);
- if (!additive && additiveBlending)
- disableAdditiveBlending(gl);
- }
-
- private void enableAdditiveBlending(GL10 gl) {
- if (!additiveBlending) {
- additiveBlending = true;
- gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE);
- }
- }
-
- private void disableAdditiveBlending(GL10 gl) {
- if (additiveBlending) {
- additiveBlending = false;
- gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
- }
- }
-
- public int getFboTexture() {
- return fbo.getTexture();
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering.renderer;
+
+import android.content.Context;
+import android.opengl.GLES20;
+
+import javax.microedition.khronos.opengles.GL10;
+
+import de.frajul.endlessroll.entities.particles.Particle;
+import de.frajul.endlessroll.entities.particles.ParticleEffect;
+import de.frajul.endlessroll.entities.particles.ParticleSource;
+import de.frajul.endlessroll.main.game.Scene;
+import de.frajul.endlessroll.rendering.Fbo;
+import de.frajul.endlessroll.rendering.MatrixCreator;
+import de.frajul.endlessroll.rendering.Quad;
+import de.frajul.endlessroll.rendering.shader.ParticleShader;
+
+/**
+ * Created by Julian on 10.08.2016.
+ */
+public class ParticleRenderer {
+
+ private Context context;
+ private Quad quad;
+ private MatrixCreator matrixCreator;
+ private boolean additiveBlending = false;
+
+ private ParticleShader particleShader;
+ private Fbo fbo;
+
+ public ParticleRenderer(Context context, Quad quad, MatrixCreator matrixCreator) {
+ this.context = context;
+ this.quad = quad;
+ this.matrixCreator = matrixCreator;
+ }
+
+ public void createShader() throws Exception {
+ particleShader = new ParticleShader(context);
+ }
+
+ public void createFbo(int width, int height) {
+ fbo = new Fbo(width, height);
+ }
+
+ public void renderParticlesToFbo(GL10 gl, Scene scene) {
+ fbo.bind();
+ GLES20.glClearColor(0, 0, 0, 0.0f);
+ GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
+
+ particleShader.start();
+ particleShader.loadMVPMatrix(matrixCreator, scene.getCamera());
+ synchronized (scene.getParticleSystem().getEffects()) {
+ for (ParticleEffect effect : scene.getParticleSystem().getEffects()) {
+ gl.glActiveTexture(GL10.GL_TEXTURE0);
+ gl.glBindTexture(GL10.GL_TEXTURE_2D, effect.getTexture().getId());
+
+ switchAdditiveBlending(gl, effect.getOptions().isAdditive());
+ synchronized (effect.getSources()) {
+ for (ParticleSource source : effect.getSources()) {
+ source.getActiveParticleLock().lock();
+ for (Particle particle : source.getActiveParticles())
+ renderParticle(particle);
+ source.getActiveParticleLock().unlock();
+ }
+ }
+ }
+ }
+ disableAdditiveBlending(gl);
+
+ particleShader.stop();
+ fbo.unbind();
+ }
+
+
+ private void renderParticle(Particle particle) {
+ particleShader.loadTransformationMatrix(matrixCreator, particle);
+ particleShader.loadColor(particle.getColor());
+ particleShader.loadAlpha(particle.getAlpha());
+ quad.draw();
+ }
+
+ private void switchAdditiveBlending(GL10 gl, boolean additive) {
+ if (additive && !additiveBlending)
+ enableAdditiveBlending(gl);
+ if (!additive && additiveBlending)
+ disableAdditiveBlending(gl);
+ }
+
+ private void enableAdditiveBlending(GL10 gl) {
+ if (!additiveBlending) {
+ additiveBlending = true;
+ gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE);
+ }
+ }
+
+ private void disableAdditiveBlending(GL10 gl) {
+ if (additiveBlending) {
+ additiveBlending = false;
+ gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
+ }
+ }
+
+ public int getFboTexture() {
+ return fbo.getTexture();
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/shader/EntityShader.java b/app/src/main/java/de/frajul/endlessroll/rendering/shader/EntityShader.java
index ee14d42..24a1181 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/shader/EntityShader.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/shader/EntityShader.java
@@ -1,79 +1,79 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering.shader;
-
-import android.content.Context;
-import android.opengl.GLES20;
-
-import de.frajul.endlessroll.data.Color3f;
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.main.game.Camera;
-import de.frajul.endlessroll.rendering.MatrixCreator;
-
-/**
- * Created by Julian on 10.08.2016.
- */
-public class EntityShader extends ShaderProgram {
-
- private int location_mvpMatrix;
- private int location_transformationMatrix;
- private int location_alpha;
- private int location_texAtlasSize;
- private int location_texAtlasIndex;
- private int location_texCoordScaling;
- private int location_hasColor;
- private int location_color;
-
- public EntityShader(Context context) throws Exception {
- super(context, "shader/entityVertexShader.glsl", "shader/entityFragmentShader.glsl");
- }
-
- @Override
- protected void loadUniformLocations() {
- location_mvpMatrix = super.getUniformLocation("mvpMatrix");
- location_transformationMatrix = super.getUniformLocation("transformationMatrix");
- location_alpha = super.getUniformLocation("alpha");
- location_texAtlasSize = super.getUniformLocation("texAtlasSize");
- location_texAtlasIndex = super.getUniformLocation("texAtlasIndex");
- location_texCoordScaling = super.getUniformLocation("texCoordScaling");
- location_hasColor = super.getUniformLocation("hasColor");
- location_color = super.getUniformLocation("color");
- }
-
- public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
- float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
- GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
- }
-
- public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
- float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
- GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
- }
-
- public void loadAlpha(float alpha) {
- GLES20.glUniform1f(location_alpha, alpha);
- }
-
- public void loadTextureAtlasInfos(Texture texture, int atlasIndex) {
- 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);
- }
-
- public void loadColor(Color3f color){
- GLES20.glUniform1f(location_hasColor, color == null ? 0 : 1);
- if(color != null)
- GLES20.glUniform3f(location_color, color.getR(), color.getG(), color.getB());
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering.shader;
+
+import android.content.Context;
+import android.opengl.GLES20;
+
+import de.frajul.endlessroll.data.Color3f;
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.main.game.Camera;
+import de.frajul.endlessroll.rendering.MatrixCreator;
+
+/**
+ * Created by Julian on 10.08.2016.
+ */
+public class EntityShader extends ShaderProgram {
+
+ private int location_mvpMatrix;
+ private int location_transformationMatrix;
+ private int location_alpha;
+ private int location_texAtlasSize;
+ private int location_texAtlasIndex;
+ private int location_texCoordScaling;
+ private int location_hasColor;
+ private int location_color;
+
+ public EntityShader(Context context) throws Exception {
+ super(context, "shader/entityVertexShader.glsl", "shader/entityFragmentShader.glsl");
+ }
+
+ @Override
+ protected void loadUniformLocations() {
+ location_mvpMatrix = super.getUniformLocation("mvpMatrix");
+ location_transformationMatrix = super.getUniformLocation("transformationMatrix");
+ location_alpha = super.getUniformLocation("alpha");
+ location_texAtlasSize = super.getUniformLocation("texAtlasSize");
+ location_texAtlasIndex = super.getUniformLocation("texAtlasIndex");
+ location_texCoordScaling = super.getUniformLocation("texCoordScaling");
+ location_hasColor = super.getUniformLocation("hasColor");
+ location_color = super.getUniformLocation("color");
+ }
+
+ public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
+ float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
+ GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
+ }
+
+ public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
+ float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
+ GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
+ }
+
+ public void loadAlpha(float alpha) {
+ GLES20.glUniform1f(location_alpha, alpha);
+ }
+
+ public void loadTextureAtlasInfos(Texture texture, int atlasIndex) {
+ 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);
+ }
+
+ public void loadColor(Color3f color){
+ GLES20.glUniform1f(location_hasColor, color == null ? 0 : 1);
+ if(color != null)
+ GLES20.glUniform3f(location_color, color.getR(), color.getG(), color.getB());
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/shader/GuiShader.java b/app/src/main/java/de/frajul/endlessroll/rendering/shader/GuiShader.java
index e3ae322..15787ea 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/shader/GuiShader.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/shader/GuiShader.java
@@ -1,74 +1,74 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering.shader;
-
-import android.content.Context;
-import android.opengl.GLES20;
-
-import de.frajul.endlessroll.data.Color3f;
-import de.frajul.endlessroll.data.Color4f;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.rendering.MatrixCreator;
-
-/**
- * Created by Julian on 10.08.2016.
- */
-public class GuiShader extends ShaderProgram {
-
- private int location_mvpMatrix;
- private int location_transformationMatrix;
- private int location_useCustomColor;
- private int location_color;
- private int location_alpha;
- private int location_roundValue;
- private int location_visibleAmount;
-
- public GuiShader(Context context) throws Exception {
- super(context, "shader/guiVertexShader.glsl", "shader/guiFragmentShader.glsl");
- }
-
- @Override
- protected void loadUniformLocations() {
- location_mvpMatrix = super.getUniformLocation("mvpMatrix");
- location_transformationMatrix = super.getUniformLocation("transformationMatrix");
- location_useCustomColor = super.getUniformLocation("useCustomColor");
- location_color = super.getUniformLocation("color");
- location_alpha = super.getUniformLocation("alpha");
- location_roundValue = super.getUniformLocation("roundValue");
- location_visibleAmount = super.getUniformLocation("visibleAmount");
- }
-
- public void loadMVPMatrix(MatrixCreator matrixCreator) {
- float[] mvpMatrix = matrixCreator.createGuiModelViewProjectionMatrix();
- GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
- }
-
- public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
- float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
- GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
- }
-
- public void loadCustomColor(Color3f color) {
- GLES20.glUniform1f(location_useCustomColor, color == null ? 0 : 1);
- if (color != null)
- GLES20.glUniform3f(location_color, color.getR(), color.getG(), color.getB());
- }
-
- public void loadAlpha(float alpha) {
- GLES20.glUniform1f(location_alpha, alpha);
- }
-
- public void loadRoundValue(float roundValue) {
- GLES20.glUniform1f(location_roundValue, roundValue);
- }
-
- public void loadVisibleAmount(float visibleAmount) {
- GLES20.glUniform1f(location_visibleAmount, visibleAmount);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering.shader;
+
+import android.content.Context;
+import android.opengl.GLES20;
+
+import de.frajul.endlessroll.data.Color3f;
+import de.frajul.endlessroll.data.Color4f;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.rendering.MatrixCreator;
+
+/**
+ * Created by Julian on 10.08.2016.
+ */
+public class GuiShader extends ShaderProgram {
+
+ private int location_mvpMatrix;
+ private int location_transformationMatrix;
+ private int location_useCustomColor;
+ private int location_color;
+ private int location_alpha;
+ private int location_roundValue;
+ private int location_visibleAmount;
+
+ public GuiShader(Context context) throws Exception {
+ super(context, "shader/guiVertexShader.glsl", "shader/guiFragmentShader.glsl");
+ }
+
+ @Override
+ protected void loadUniformLocations() {
+ location_mvpMatrix = super.getUniformLocation("mvpMatrix");
+ location_transformationMatrix = super.getUniformLocation("transformationMatrix");
+ location_useCustomColor = super.getUniformLocation("useCustomColor");
+ location_color = super.getUniformLocation("color");
+ location_alpha = super.getUniformLocation("alpha");
+ location_roundValue = super.getUniformLocation("roundValue");
+ location_visibleAmount = super.getUniformLocation("visibleAmount");
+ }
+
+ public void loadMVPMatrix(MatrixCreator matrixCreator) {
+ float[] mvpMatrix = matrixCreator.createGuiModelViewProjectionMatrix();
+ GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
+ }
+
+ public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
+ float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
+ GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
+ }
+
+ public void loadCustomColor(Color3f color) {
+ GLES20.glUniform1f(location_useCustomColor, color == null ? 0 : 1);
+ if (color != null)
+ GLES20.glUniform3f(location_color, color.getR(), color.getG(), color.getB());
+ }
+
+ public void loadAlpha(float alpha) {
+ GLES20.glUniform1f(location_alpha, alpha);
+ }
+
+ public void loadRoundValue(float roundValue) {
+ GLES20.glUniform1f(location_roundValue, roundValue);
+ }
+
+ public void loadVisibleAmount(float visibleAmount) {
+ GLES20.glUniform1f(location_visibleAmount, visibleAmount);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/shader/ObstacleShader.java b/app/src/main/java/de/frajul/endlessroll/rendering/shader/ObstacleShader.java
index eb0e519..5f125ba 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/shader/ObstacleShader.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/shader/ObstacleShader.java
@@ -1,90 +1,90 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering.shader;
-
-import android.content.Context;
-import android.opengl.GLES20;
-
-import de.frajul.endlessroll.data.Vector;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.entities.textures.Texture;
-import de.frajul.endlessroll.main.game.Camera;
-import de.frajul.endlessroll.rendering.MatrixCreator;
-
-/**
- * Created by Julian on 10.08.2016.
- */
-public class ObstacleShader extends ShaderProgram {
-
- private int location_mvpMatrix;
- private int location_transformationMatrix;
- private int location_alpha;
- private int location_texAtlasSize;
- private int location_gridSize;
- private int location_deadly;
- private int location_floating;
- private int location_bombSelected;
- private int location_bombExplosionState;
-
- public ObstacleShader(Context context) throws Exception {
- super(context, "shader/entityVertexShader.glsl", "shader/obstacleFragmentShader.glsl");
- }
-
- @Override
- protected void loadUniformLocations() {
- location_mvpMatrix = super.getUniformLocation("mvpMatrix");
- location_transformationMatrix = super.getUniformLocation("transformationMatrix");
- location_alpha = super.getUniformLocation("alpha");
- location_texAtlasSize = super.getUniformLocation("texAtlasSize");
- location_gridSize = super.getUniformLocation("gridSize");
- location_deadly = super.getUniformLocation("deadly");
- location_floating = super.getUniformLocation("floating");
- location_bombSelected = super.getUniformLocation("bombSelected");
- location_bombExplosionState = super.getUniformLocation("bombExplosionState");
- }
-
- public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
- float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
- GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
- }
-
- public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
- float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
- GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
- }
-
- public void loadAlpha(float alpha) {
- GLES20.glUniform1f(location_alpha, alpha);
- }
-
- public void loadTextureAtlasInfos(Texture texture) {
- GLES20.glUniform2f(location_texAtlasSize, texture.getAtlasWidth(),
- texture.getAtlasHeight());
- }
-
- public void loadGridSize(Vector gridSize) {
- GLES20.glUniform2f(location_gridSize, gridSize.getX(), gridSize.getY());
- }
-
- public void loadDeadly(boolean deadly) {
- GLES20.glUniform1f(location_deadly, deadly ? 1 : 0);
- }
-
- public void loadFloating(boolean floating) {
- GLES20.glUniform1f(location_floating, floating ? 1 : 0);
- }
-
- public void loadBombSelected(boolean bombSelected) {
- GLES20.glUniform1f(location_bombSelected, bombSelected ? 1 : 0);
- }
-
- public void loadBombExplosionState(int explosionState) {
- GLES20.glUniform1f(location_bombExplosionState, explosionState);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering.shader;
+
+import android.content.Context;
+import android.opengl.GLES20;
+
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.entities.textures.Texture;
+import de.frajul.endlessroll.main.game.Camera;
+import de.frajul.endlessroll.rendering.MatrixCreator;
+
+/**
+ * Created by Julian on 10.08.2016.
+ */
+public class ObstacleShader extends ShaderProgram {
+
+ private int location_mvpMatrix;
+ private int location_transformationMatrix;
+ private int location_alpha;
+ private int location_texAtlasSize;
+ private int location_gridSize;
+ private int location_deadly;
+ private int location_floating;
+ private int location_bombSelected;
+ private int location_bombExplosionState;
+
+ public ObstacleShader(Context context) throws Exception {
+ super(context, "shader/entityVertexShader.glsl", "shader/obstacleFragmentShader.glsl");
+ }
+
+ @Override
+ protected void loadUniformLocations() {
+ location_mvpMatrix = super.getUniformLocation("mvpMatrix");
+ location_transformationMatrix = super.getUniformLocation("transformationMatrix");
+ location_alpha = super.getUniformLocation("alpha");
+ location_texAtlasSize = super.getUniformLocation("texAtlasSize");
+ location_gridSize = super.getUniformLocation("gridSize");
+ location_deadly = super.getUniformLocation("deadly");
+ location_floating = super.getUniformLocation("floating");
+ location_bombSelected = super.getUniformLocation("bombSelected");
+ location_bombExplosionState = super.getUniformLocation("bombExplosionState");
+ }
+
+ public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
+ float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
+ GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
+ }
+
+ public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
+ float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
+ GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
+ }
+
+ public void loadAlpha(float alpha) {
+ GLES20.glUniform1f(location_alpha, alpha);
+ }
+
+ public void loadTextureAtlasInfos(Texture texture) {
+ GLES20.glUniform2f(location_texAtlasSize, texture.getAtlasWidth(),
+ texture.getAtlasHeight());
+ }
+
+ public void loadGridSize(Vector gridSize) {
+ GLES20.glUniform2f(location_gridSize, gridSize.getX(), gridSize.getY());
+ }
+
+ public void loadDeadly(boolean deadly) {
+ GLES20.glUniform1f(location_deadly, deadly ? 1 : 0);
+ }
+
+ public void loadFloating(boolean floating) {
+ GLES20.glUniform1f(location_floating, floating ? 1 : 0);
+ }
+
+ public void loadBombSelected(boolean bombSelected) {
+ GLES20.glUniform1f(location_bombSelected, bombSelected ? 1 : 0);
+ }
+
+ public void loadBombExplosionState(int explosionState) {
+ GLES20.glUniform1f(location_bombExplosionState, explosionState);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/shader/ParticleShader.java b/app/src/main/java/de/frajul/endlessroll/rendering/shader/ParticleShader.java
index 6c13175..5e7d66b 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/shader/ParticleShader.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/shader/ParticleShader.java
@@ -1,58 +1,58 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering.shader;
-
-import android.content.Context;
-import android.opengl.GLES20;
-
-import de.frajul.endlessroll.data.Color3f;
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.main.game.Camera;
-import de.frajul.endlessroll.rendering.MatrixCreator;
-
-/**
- * Created by Julian on 10.08.2016.
- */
-public class ParticleShader extends ShaderProgram {
-
- private int location_mvpMatrix;
- private int location_transformationMatrix;
- private int location_color;
- private int location_alpha;
-
- public ParticleShader(Context context) throws Exception {
- super(context, "shader/entityVertexShader.glsl", "shader/particleFragmentShader.glsl");
- }
-
- @Override
- protected void loadUniformLocations() {
- location_mvpMatrix = super.getUniformLocation("mvpMatrix");
- location_transformationMatrix = super.getUniformLocation("transformationMatrix");
- location_color = super.getUniformLocation("color");
- location_alpha = super.getUniformLocation("alpha");
- }
-
- public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
- float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
- GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
- }
-
- public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
- float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
- GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
- }
-
- public void loadAlpha(float alpha) {
- GLES20.glUniform1f(location_alpha, alpha);
- }
-
- public void loadColor(Color3f color) {
- GLES20.glUniform3f(location_color, color.getR(), color.getG(), color.getB());
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering.shader;
+
+import android.content.Context;
+import android.opengl.GLES20;
+
+import de.frajul.endlessroll.data.Color3f;
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.main.game.Camera;
+import de.frajul.endlessroll.rendering.MatrixCreator;
+
+/**
+ * Created by Julian on 10.08.2016.
+ */
+public class ParticleShader extends ShaderProgram {
+
+ private int location_mvpMatrix;
+ private int location_transformationMatrix;
+ private int location_color;
+ private int location_alpha;
+
+ public ParticleShader(Context context) throws Exception {
+ super(context, "shader/entityVertexShader.glsl", "shader/particleFragmentShader.glsl");
+ }
+
+ @Override
+ protected void loadUniformLocations() {
+ location_mvpMatrix = super.getUniformLocation("mvpMatrix");
+ location_transformationMatrix = super.getUniformLocation("transformationMatrix");
+ location_color = super.getUniformLocation("color");
+ location_alpha = super.getUniformLocation("alpha");
+ }
+
+ public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
+ float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
+ GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
+ }
+
+ public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
+ float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
+ GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
+ }
+
+ public void loadAlpha(float alpha) {
+ GLES20.glUniform1f(location_alpha, alpha);
+ }
+
+ public void loadColor(Color3f color) {
+ GLES20.glUniform3f(location_color, color.getR(), color.getG(), color.getB());
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/shader/ShaderProgram.java b/app/src/main/java/de/frajul/endlessroll/rendering/shader/ShaderProgram.java
index 36219ae..9005766 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/shader/ShaderProgram.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/shader/ShaderProgram.java
@@ -1,96 +1,96 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering.shader;
-
-import android.content.Context;
-import android.opengl.GLES20;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-import de.frajul.endlessroll.main.GameLog;
-
-/**
- * Created by Julian on 23.11.2015.
- */
-public abstract class ShaderProgram {
-
- private Context context;
- private int vertexShader, fragmentShader, program;
-
- public ShaderProgram(Context context, String vertexShaderPath, String fragmentShaderPath) throws Exception {
- this.context = context;
- vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderPath);
- fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderPath);
- program = GLES20.glCreateProgram();
- GLES20.glAttachShader(program, vertexShader);
- GLES20.glAttachShader(program, fragmentShader);
- GLES20.glLinkProgram(program);
- int[] linkStatus = new int[1];
- GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
- if (linkStatus[0] == GLES20.GL_FALSE) {
- GLES20.glDeleteProgram(program);
- throw new Exception("Could not link program: "
- + GLES20.glGetProgramInfoLog(program));
- }
-
- bindAttribLocations();
- loadUniformLocations();
- GameLog.d("ShaderProgram successfully loaded");
- }
-
- private void bindAttribLocations() {
- GLES20.glBindAttribLocation(program, 0, "position");
- GLES20.glBindAttribLocation(program, 1, "texCoords");
- }
-
- protected abstract void loadUniformLocations();
-
- protected int getUniformLocation(String name) {
- return GLES20.glGetUniformLocation(program, name);
- }
-
- public void start() {
- GLES20.glUseProgram(program);
- }
-
- public void stop() {
- GLES20.glUseProgram(0);
- }
-
-
- private int loadShader(int type, String shaderName) throws Exception {
- try {
- InputStream is = context.getAssets().open(shaderName);
- InputStreamReader isReader = new InputStreamReader(is);
- BufferedReader reader = new BufferedReader(isReader);
- StringBuilder source = new StringBuilder();
- String line;
- while ((line = reader.readLine()) != null)
- source.append(line);
-
- int shader = GLES20.glCreateShader(type);
- GLES20.glShaderSource(shader, source.toString());
- GLES20.glCompileShader(shader);
-
- int[] compiled = new int[1];
- GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
- if (compiled[0] == GLES20.GL_FALSE) {
- GLES20.glDeleteShader(shader);
- throw new Exception("Could not compile shader \"" + shaderName + "\": "
- + GLES20.glGetShaderInfoLog(shader));
- }
- GameLog.d("Shader \"" + shaderName + "\" successfully loaded");
- return shader;
- } catch (Exception e) {
- throw new Exception("Could not load Shader \"" + shaderName + "\"", e);
- }
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering.shader;
+
+import android.content.Context;
+import android.opengl.GLES20;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import de.frajul.endlessroll.main.GameLog;
+
+/**
+ * Created by Julian on 23.11.2015.
+ */
+public abstract class ShaderProgram {
+
+ private Context context;
+ private int vertexShader, fragmentShader, program;
+
+ public ShaderProgram(Context context, String vertexShaderPath, String fragmentShaderPath) throws Exception {
+ this.context = context;
+ vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderPath);
+ fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderPath);
+ program = GLES20.glCreateProgram();
+ GLES20.glAttachShader(program, vertexShader);
+ GLES20.glAttachShader(program, fragmentShader);
+ GLES20.glLinkProgram(program);
+ int[] linkStatus = new int[1];
+ GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
+ if (linkStatus[0] == GLES20.GL_FALSE) {
+ GLES20.glDeleteProgram(program);
+ throw new Exception("Could not link program: "
+ + GLES20.glGetProgramInfoLog(program));
+ }
+
+ bindAttribLocations();
+ loadUniformLocations();
+ GameLog.d("ShaderProgram successfully loaded");
+ }
+
+ private void bindAttribLocations() {
+ GLES20.glBindAttribLocation(program, 0, "position");
+ GLES20.glBindAttribLocation(program, 1, "texCoords");
+ }
+
+ protected abstract void loadUniformLocations();
+
+ protected int getUniformLocation(String name) {
+ return GLES20.glGetUniformLocation(program, name);
+ }
+
+ public void start() {
+ GLES20.glUseProgram(program);
+ }
+
+ public void stop() {
+ GLES20.glUseProgram(0);
+ }
+
+
+ private int loadShader(int type, String shaderName) throws Exception {
+ try {
+ InputStream is = context.getAssets().open(shaderName);
+ InputStreamReader isReader = new InputStreamReader(is);
+ BufferedReader reader = new BufferedReader(isReader);
+ StringBuilder source = new StringBuilder();
+ String line;
+ while ((line = reader.readLine()) != null)
+ source.append(line);
+
+ int shader = GLES20.glCreateShader(type);
+ GLES20.glShaderSource(shader, source.toString());
+ GLES20.glCompileShader(shader);
+
+ int[] compiled = new int[1];
+ GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
+ if (compiled[0] == GLES20.GL_FALSE) {
+ GLES20.glDeleteShader(shader);
+ throw new Exception("Could not compile shader \"" + shaderName + "\": "
+ + GLES20.glGetShaderInfoLog(shader));
+ }
+ GameLog.d("Shader \"" + shaderName + "\" successfully loaded");
+ return shader;
+ } catch (Exception e) {
+ throw new Exception("Could not load Shader \"" + shaderName + "\"", e);
+ }
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/shader/SimpleShader.java b/app/src/main/java/de/frajul/endlessroll/rendering/shader/SimpleShader.java
index cf8cf89..cf80911 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/shader/SimpleShader.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/shader/SimpleShader.java
@@ -1,24 +1,24 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering.shader;
-
-import android.content.Context;
-
-/**
- * Created by Julian on 10.08.2016.
- */
-public class SimpleShader extends ShaderProgram {
-
- public SimpleShader(Context context) throws Exception {
- super(context, "shader/simpleVertexShader.glsl", "shader/simpleFragmentShader.glsl");
- }
-
- @Override
- protected void loadUniformLocations() {
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering.shader;
+
+import android.content.Context;
+
+/**
+ * Created by Julian on 10.08.2016.
+ */
+public class SimpleShader extends ShaderProgram {
+
+ public SimpleShader(Context context) throws Exception {
+ super(context, "shader/simpleVertexShader.glsl", "shader/simpleFragmentShader.glsl");
+ }
+
+ @Override
+ protected void loadUniformLocations() {
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/shader/TerrainShader.java b/app/src/main/java/de/frajul/endlessroll/rendering/shader/TerrainShader.java
index 71aced4..cf53d9e 100644
--- a/app/src/main/java/de/frajul/endlessroll/rendering/shader/TerrainShader.java
+++ b/app/src/main/java/de/frajul/endlessroll/rendering/shader/TerrainShader.java
@@ -1,57 +1,57 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.rendering.shader;
-
-import android.content.Context;
-import android.opengl.GLES20;
-
-import de.frajul.endlessroll.entities.Entity;
-import de.frajul.endlessroll.main.game.Camera;
-import de.frajul.endlessroll.rendering.MatrixCreator;
-
-/**
- * Created by Julian on 10.08.2016.
- */
-public class TerrainShader extends ShaderProgram {
-
- private int location_mvpMatrix;
- private int location_transformationMatrix;
- private int location_gridColumnCount;
- private int location_isEndlessTileList;
-
- public TerrainShader(Context context) throws Exception {
- super(context, "shader/entityVertexShader.glsl", "shader/terrainFragmentShader.glsl");
- }
-
- @Override
- protected void loadUniformLocations() {
- location_mvpMatrix = super.getUniformLocation("mvpMatrix");
- location_transformationMatrix = super.getUniformLocation("transformationMatrix");
- location_gridColumnCount = super.getUniformLocation("gridColumnCount");
- location_isEndlessTileList = super.getUniformLocation("isEndlessTileList");
- }
-
- public void loadGridColumnCount(int gridColumnCount) {
- GLES20.glUniform1f(location_gridColumnCount, gridColumnCount);
- }
-
- public void loadIsEndlessTileList(boolean endless) {
- GLES20.glUniform1f(location_isEndlessTileList, endless ? 1f : 0f);
- }
-
- public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
- float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
- GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
- }
-
- public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
- float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
- GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.rendering.shader;
+
+import android.content.Context;
+import android.opengl.GLES20;
+
+import de.frajul.endlessroll.entities.Entity;
+import de.frajul.endlessroll.main.game.Camera;
+import de.frajul.endlessroll.rendering.MatrixCreator;
+
+/**
+ * Created by Julian on 10.08.2016.
+ */
+public class TerrainShader extends ShaderProgram {
+
+ private int location_mvpMatrix;
+ private int location_transformationMatrix;
+ private int location_gridColumnCount;
+ private int location_isEndlessTileList;
+
+ public TerrainShader(Context context) throws Exception {
+ super(context, "shader/entityVertexShader.glsl", "shader/terrainFragmentShader.glsl");
+ }
+
+ @Override
+ protected void loadUniformLocations() {
+ location_mvpMatrix = super.getUniformLocation("mvpMatrix");
+ location_transformationMatrix = super.getUniformLocation("transformationMatrix");
+ location_gridColumnCount = super.getUniformLocation("gridColumnCount");
+ location_isEndlessTileList = super.getUniformLocation("isEndlessTileList");
+ }
+
+ public void loadGridColumnCount(int gridColumnCount) {
+ GLES20.glUniform1f(location_gridColumnCount, gridColumnCount);
+ }
+
+ public void loadIsEndlessTileList(boolean endless) {
+ GLES20.glUniform1f(location_isEndlessTileList, endless ? 1f : 0f);
+ }
+
+ public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
+ float[] mvpMatrix = matrixCreator.createModelViewProjectionMatrix(camera);
+ GLES20.glUniformMatrix4fv(location_mvpMatrix, 1, false, mvpMatrix, 0);
+ }
+
+ public void loadTransformationMatrix(MatrixCreator matrixCreator, Entity entity) {
+ float[] transformationMatrix = matrixCreator.createTransformationMatrix(entity);
+ GLES20.glUniformMatrix4fv(location_transformationMatrix, 1, false, transformationMatrix, 0);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/sounds/Music.java b/app/src/main/java/de/frajul/endlessroll/sounds/Music.java
index a39009c..b414195 100644
--- a/app/src/main/java/de/frajul/endlessroll/sounds/Music.java
+++ b/app/src/main/java/de/frajul/endlessroll/sounds/Music.java
@@ -1,90 +1,90 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.sounds;
-
-import android.content.Context;
-import android.media.MediaPlayer;
-
-import de.frajul.endlessroll.main.ExceptionHandler;
-
-/**
- * Created by Julian on 18.12.2015.
- */
-public class Music {
-
- private ExceptionHandler handler;
- private MediaPlayer player;
- private boolean started;
- private boolean muted;
- private boolean paused;
- private boolean activityPaused;
-
- public Music(ExceptionHandler handler, Context context, int id) {
- this.handler = handler;
- player = MediaPlayer.create(context, id);
- }
-
- public void start() {
- started = true;
- paused = false;
- onStateChanged();
- }
-
- public void stop() {
- started = false;
- onStateChanged();
- reset();
- }
-
- public void setMuted(boolean muted) {
- this.muted = muted;
- onStateChanged();
- }
-
- public void pause() {
- paused = true;
- onStateChanged();
- }
-
- public void activityPause() {
- activityPaused = true;
- onStateChanged();
- }
-
- public void activityResume() {
- activityPaused = false;
- onStateChanged();
- }
-
- private void onStateChanged() {
- try {
- boolean newState = started && !muted && !paused && !activityPaused;
- if (player.isPlaying()) {
- if (!newState)
- player.pause();
- } else {
- if (newState)
- player.start();
- }
- } catch (Exception e) {
- handler.onException(e);
- }
- }
-
- public void reset() {
- try {
- player.seekTo(0);
- } catch (Exception e) {
- handler.onException(e);
- }
- }
-
- public MediaPlayer getPlayer() {
- return player;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.sounds;
+
+import android.content.Context;
+import android.media.MediaPlayer;
+
+import de.frajul.endlessroll.main.ExceptionHandler;
+
+/**
+ * Created by Julian on 18.12.2015.
+ */
+public class Music {
+
+ private ExceptionHandler handler;
+ private MediaPlayer player;
+ private boolean started;
+ private boolean muted;
+ private boolean paused;
+ private boolean activityPaused;
+
+ public Music(ExceptionHandler handler, Context context, int id) {
+ this.handler = handler;
+ player = MediaPlayer.create(context, id);
+ }
+
+ public void start() {
+ started = true;
+ paused = false;
+ onStateChanged();
+ }
+
+ public void stop() {
+ started = false;
+ onStateChanged();
+ reset();
+ }
+
+ public void setMuted(boolean muted) {
+ this.muted = muted;
+ onStateChanged();
+ }
+
+ public void pause() {
+ paused = true;
+ onStateChanged();
+ }
+
+ public void activityPause() {
+ activityPaused = true;
+ onStateChanged();
+ }
+
+ public void activityResume() {
+ activityPaused = false;
+ onStateChanged();
+ }
+
+ private void onStateChanged() {
+ try {
+ boolean newState = started && !muted && !paused && !activityPaused;
+ if (player.isPlaying()) {
+ if (!newState)
+ player.pause();
+ } else {
+ if (newState)
+ player.start();
+ }
+ } catch (Exception e) {
+ handler.onException(e);
+ }
+ }
+
+ public void reset() {
+ try {
+ player.seekTo(0);
+ } catch (Exception e) {
+ handler.onException(e);
+ }
+ }
+
+ public MediaPlayer getPlayer() {
+ return player;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/sounds/Sound.java b/app/src/main/java/de/frajul/endlessroll/sounds/Sound.java
index 0b88147..4ff53b8 100644
--- a/app/src/main/java/de/frajul/endlessroll/sounds/Sound.java
+++ b/app/src/main/java/de/frajul/endlessroll/sounds/Sound.java
@@ -1,62 +1,62 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.sounds;
-
-/**
- * Created by Julian on 17.01.2018.
- */
-
-public class Sound {
-
- private int soundId;
- private float volume;
- private boolean looping;
-
- public Sound(int soundId) {
- this(soundId, 1.0f);
- }
-
- public Sound(int soundId, float volume) {
- this(soundId, volume, false);
- }
-
- public Sound(int soundId, boolean looping) {
- this(soundId, 1.0f, looping);
- }
-
- public Sound(int soundId, float volume, boolean looping) {
- this.soundId = soundId;
- this.volume = volume;
- this.looping = looping;
- }
-
- public int getSoundId() {
- return soundId;
- }
-
- public void setSoundId(int soundId) {
- this.soundId = soundId;
- }
-
- public float getVolume() {
- return volume;
- }
-
- public void setVolume(float volume) {
- this.volume = volume;
- }
-
- public boolean isLooping() {
- return looping;
- }
-
- public void setLooping(boolean looping) {
- this.looping = looping;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.sounds;
+
+/**
+ * Created by Julian on 17.01.2018.
+ */
+
+public class Sound {
+
+ private int soundId;
+ private float volume;
+ private boolean looping;
+
+ public Sound(int soundId) {
+ this(soundId, 1.0f);
+ }
+
+ public Sound(int soundId, float volume) {
+ this(soundId, volume, false);
+ }
+
+ public Sound(int soundId, boolean looping) {
+ this(soundId, 1.0f, looping);
+ }
+
+ public Sound(int soundId, float volume, boolean looping) {
+ this.soundId = soundId;
+ this.volume = volume;
+ this.looping = looping;
+ }
+
+ public int getSoundId() {
+ return soundId;
+ }
+
+ public void setSoundId(int soundId) {
+ this.soundId = soundId;
+ }
+
+ public float getVolume() {
+ return volume;
+ }
+
+ public void setVolume(float volume) {
+ this.volume = volume;
+ }
+
+ public boolean isLooping() {
+ return looping;
+ }
+
+ public void setLooping(boolean looping) {
+ this.looping = looping;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java b/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java
index c2a57f2..8f37440 100644
--- a/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java
+++ b/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java
@@ -1,204 +1,204 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.sounds;
-
-import android.content.Context;
-import android.media.AudioManager;
-import android.media.SoundPool;
-import android.support.annotation.RawRes;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameLog;
-
-/**
- * Created by Julian on 18.12.2015.
- */
-public class SoundManager {
-
- private Context context;
- private Random random;
- private SoundPool soundPool;
- private boolean soundsMuted;
- private boolean musicMuted;
-
- public final Music menuMusic;
- private List gameMusicList = new ArrayList<>();
- private int currentGameMusicIndex = 0;
-
- public final Sound goalSound;
- public final Sound dieSound;
- public final Sound collectStarSound;
- public final Sound collectEnergySound;
- public final Sound countdownSoundSingle;
- public final Sound countdownSoundLast;
- public final Sound explosionSound;
- public final Sound fireworkSound;
- public final Sound stasisSound;
- public final Sound mushroomSound;
- public final Sound springSound;
- public final Sound placeToolSound;
- public final Sound magnetSound;
-
- private final List allStartedStreams = Collections.synchronizedList(new ArrayList());
-
- public SoundManager(GameActivity gameActivity) {
- this.context = gameActivity;
- random = new Random();
- soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
-
- menuMusic = new Music(gameActivity, gameActivity, R.raw.music_menu);
- menuMusic.getPlayer().setLooping(true);
- gameMusicList.add(createGameMusic(gameActivity, R.raw.music_game_1));
- gameMusicList.add(createGameMusic(gameActivity, R.raw.music_game_2));
- gameMusicList.add(createGameMusic(gameActivity, R.raw.music_game_3));
-
- goalSound = new Sound(loadSound(R.raw.sound_goal));
- dieSound = new Sound(loadSound(R.raw.sound_die));
- collectStarSound = new Sound(loadSound(R.raw.sound_collect_star), .7f);
- collectEnergySound = new Sound(loadSound(R.raw.sound_collect_energy));
- countdownSoundSingle = new Sound(loadSound(R.raw.sound_countdown_single), .9f);
- countdownSoundLast = new Sound(loadSound(R.raw.sound_countdown_last), .8f);
- explosionSound = new Sound(loadSound(R.raw.sound_explosion), 2);
- fireworkSound = new Sound(loadSound(R.raw.sound_firework));
- stasisSound = new Sound(loadSound(R.raw.sound_stasis), 1.3f, true);
- mushroomSound = new Sound(loadSound(R.raw.sound_mushroom));
- springSound = new Sound(loadSound(R.raw.sound_spring));
- placeToolSound = new Sound(loadSound(R.raw.sound_place_tool), 1.5f);
- magnetSound = new Sound(loadSound(R.raw.sound_magnet), 0.8f, true);
- }
-
- private Music createGameMusic(GameActivity gameActivity, @RawRes int musicId) {
- Music gameMusic = new Music(gameActivity, context, musicId);
- gameMusic.getPlayer().setLooping(true);
- return gameMusic;
- }
-
- public void randomizeCurrentGameMusic() {
- getCurrentGameMusic().stop();
- int randomIndex = random.nextInt(gameMusicList.size());
- currentGameMusicIndex = randomIndex;
- }
-
- public Music getCurrentGameMusic() {
- return gameMusicList.get(currentGameMusicIndex);
- }
-
- public void setSoundsMuted(boolean soundsMuted) {
- this.soundsMuted = soundsMuted;
- synchronized (allStartedStreams) {
- for (SoundStream stream : allStartedStreams) {
- float systemVolume = getSystemVolume();
- soundPool.setVolume(stream.getId(), systemVolume * stream.getModifiedVolume(),
- systemVolume * stream.getModifiedVolume());
- }
- }
- }
-
- public void setMusicMuted(boolean musicMuted) {
- this.musicMuted = musicMuted;
- menuMusic.setMuted(musicMuted);
- for (Music gameMusic : gameMusicList)
- gameMusic.setMuted(musicMuted);
- }
-
- public boolean isSoundsMuted() {
- return soundsMuted;
- }
-
- public boolean isMusicMuted() {
- return musicMuted;
- }
-
- public void activityPause() {
- soundPool.autoPause();
- for (Music gameMusic : gameMusicList)
- gameMusic.activityPause();
- menuMusic.activityPause();
- }
-
- public void activityResume() {
- soundPool.autoResume();
- for (Music gameMusic : gameMusicList)
- gameMusic.activityResume();
- menuMusic.activityResume();
- }
-
- public void pauseAllSounds() {
- synchronized (allStartedStreams) {
- for (SoundStream stream : allStartedStreams)
- soundPool.pause(stream.getId());
- }
- }
-
- public void resumeAllSounds() {
- synchronized (allStartedStreams) {
- for (SoundStream stream : allStartedStreams)
- soundPool.resume(stream.getId());
- }
- }
-
- public void destroy() {
- menuMusic.getPlayer().release();
- for (Music gameMusic : gameMusicList)
- gameMusic.getPlayer().release();
- soundPool.release();
- }
-
- public int loadSound(int id) {
- int sound = soundPool.load(context, id, 1);
- return sound;
- }
-
- public SoundStream playSound(Sound sound) {
- float systemVolume = getSystemVolume();
- int streamId = soundPool.play(sound.getSoundId(), systemVolume * sound.getVolume(),
- systemVolume * sound.getVolume(), 1, sound.isLooping() ? -1 : 0, 1);
- if (streamId == 0)
- GameLog.e("SoundId: " + sound.getSoundId() + " cannot be played");
- SoundStream soundStream = new SoundStream(streamId, sound.getVolume());
- allStartedStreams.add(soundStream);
- return soundStream;
- }
-
- public void onStreamVolumeChanged(SoundStream stream) {
- if (!soundsMuted) {
- float systemVolume = getSystemVolume();
- soundPool.setVolume(stream.getId(), systemVolume * stream.getModifiedVolume(),
- systemVolume * stream.getModifiedVolume());
- }
- }
-
- public void stopSound(SoundStream stream) {
- allStartedStreams.remove(stream);
- soundPool.stop(stream.getId());
- }
-
- public void stopAllSounds() {
- synchronized (allStartedStreams) {
- for (SoundStream stream : allStartedStreams)
- soundPool.stop(stream.getId());
- }
- allStartedStreams.clear();
- }
-
- private float getSystemVolume() {
- if (soundsMuted)
- return 0;
- AudioManager manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
- float volume = manager.getStreamVolume(AudioManager.STREAM_MUSIC);
- float maxVolume = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
- return volume / maxVolume;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.sounds;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.SoundPool;
+import android.support.annotation.RawRes;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameLog;
+
+/**
+ * Created by Julian on 18.12.2015.
+ */
+public class SoundManager {
+
+ private Context context;
+ private Random random;
+ private SoundPool soundPool;
+ private boolean soundsMuted;
+ private boolean musicMuted;
+
+ public final Music menuMusic;
+ private List gameMusicList = new ArrayList<>();
+ private int currentGameMusicIndex = 0;
+
+ public final Sound goalSound;
+ public final Sound dieSound;
+ public final Sound collectStarSound;
+ public final Sound collectEnergySound;
+ public final Sound countdownSoundSingle;
+ public final Sound countdownSoundLast;
+ public final Sound explosionSound;
+ public final Sound fireworkSound;
+ public final Sound stasisSound;
+ public final Sound mushroomSound;
+ public final Sound springSound;
+ public final Sound placeToolSound;
+ public final Sound magnetSound;
+
+ private final List allStartedStreams = Collections.synchronizedList(new ArrayList());
+
+ public SoundManager(GameActivity gameActivity) {
+ this.context = gameActivity;
+ random = new Random();
+ soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
+
+ menuMusic = new Music(gameActivity, gameActivity, R.raw.music_menu);
+ menuMusic.getPlayer().setLooping(true);
+ gameMusicList.add(createGameMusic(gameActivity, R.raw.music_game_1));
+ gameMusicList.add(createGameMusic(gameActivity, R.raw.music_game_2));
+ gameMusicList.add(createGameMusic(gameActivity, R.raw.music_game_3));
+
+ goalSound = new Sound(loadSound(R.raw.sound_goal));
+ dieSound = new Sound(loadSound(R.raw.sound_die));
+ collectStarSound = new Sound(loadSound(R.raw.sound_collect_star), .7f);
+ collectEnergySound = new Sound(loadSound(R.raw.sound_collect_energy));
+ countdownSoundSingle = new Sound(loadSound(R.raw.sound_countdown_single), .9f);
+ countdownSoundLast = new Sound(loadSound(R.raw.sound_countdown_last), .8f);
+ explosionSound = new Sound(loadSound(R.raw.sound_explosion), 2);
+ fireworkSound = new Sound(loadSound(R.raw.sound_firework));
+ stasisSound = new Sound(loadSound(R.raw.sound_stasis), 1.3f, true);
+ mushroomSound = new Sound(loadSound(R.raw.sound_mushroom));
+ springSound = new Sound(loadSound(R.raw.sound_spring));
+ placeToolSound = new Sound(loadSound(R.raw.sound_place_tool), 1.5f);
+ magnetSound = new Sound(loadSound(R.raw.sound_magnet), 0.8f, true);
+ }
+
+ private Music createGameMusic(GameActivity gameActivity, @RawRes int musicId) {
+ Music gameMusic = new Music(gameActivity, context, musicId);
+ gameMusic.getPlayer().setLooping(true);
+ return gameMusic;
+ }
+
+ public void randomizeCurrentGameMusic() {
+ getCurrentGameMusic().stop();
+ int randomIndex = random.nextInt(gameMusicList.size());
+ currentGameMusicIndex = randomIndex;
+ }
+
+ public Music getCurrentGameMusic() {
+ return gameMusicList.get(currentGameMusicIndex);
+ }
+
+ public void setSoundsMuted(boolean soundsMuted) {
+ this.soundsMuted = soundsMuted;
+ synchronized (allStartedStreams) {
+ for (SoundStream stream : allStartedStreams) {
+ float systemVolume = getSystemVolume();
+ soundPool.setVolume(stream.getId(), systemVolume * stream.getModifiedVolume(),
+ systemVolume * stream.getModifiedVolume());
+ }
+ }
+ }
+
+ public void setMusicMuted(boolean musicMuted) {
+ this.musicMuted = musicMuted;
+ menuMusic.setMuted(musicMuted);
+ for (Music gameMusic : gameMusicList)
+ gameMusic.setMuted(musicMuted);
+ }
+
+ public boolean isSoundsMuted() {
+ return soundsMuted;
+ }
+
+ public boolean isMusicMuted() {
+ return musicMuted;
+ }
+
+ public void activityPause() {
+ soundPool.autoPause();
+ for (Music gameMusic : gameMusicList)
+ gameMusic.activityPause();
+ menuMusic.activityPause();
+ }
+
+ public void activityResume() {
+ soundPool.autoResume();
+ for (Music gameMusic : gameMusicList)
+ gameMusic.activityResume();
+ menuMusic.activityResume();
+ }
+
+ public void pauseAllSounds() {
+ synchronized (allStartedStreams) {
+ for (SoundStream stream : allStartedStreams)
+ soundPool.pause(stream.getId());
+ }
+ }
+
+ public void resumeAllSounds() {
+ synchronized (allStartedStreams) {
+ for (SoundStream stream : allStartedStreams)
+ soundPool.resume(stream.getId());
+ }
+ }
+
+ public void destroy() {
+ menuMusic.getPlayer().release();
+ for (Music gameMusic : gameMusicList)
+ gameMusic.getPlayer().release();
+ soundPool.release();
+ }
+
+ public int loadSound(int id) {
+ int sound = soundPool.load(context, id, 1);
+ return sound;
+ }
+
+ public SoundStream playSound(Sound sound) {
+ float systemVolume = getSystemVolume();
+ int streamId = soundPool.play(sound.getSoundId(), systemVolume * sound.getVolume(),
+ systemVolume * sound.getVolume(), 1, sound.isLooping() ? -1 : 0, 1);
+ if (streamId == 0)
+ GameLog.e("SoundId: " + sound.getSoundId() + " cannot be played");
+ SoundStream soundStream = new SoundStream(streamId, sound.getVolume());
+ allStartedStreams.add(soundStream);
+ return soundStream;
+ }
+
+ public void onStreamVolumeChanged(SoundStream stream) {
+ if (!soundsMuted) {
+ float systemVolume = getSystemVolume();
+ soundPool.setVolume(stream.getId(), systemVolume * stream.getModifiedVolume(),
+ systemVolume * stream.getModifiedVolume());
+ }
+ }
+
+ public void stopSound(SoundStream stream) {
+ allStartedStreams.remove(stream);
+ soundPool.stop(stream.getId());
+ }
+
+ public void stopAllSounds() {
+ synchronized (allStartedStreams) {
+ for (SoundStream stream : allStartedStreams)
+ soundPool.stop(stream.getId());
+ }
+ allStartedStreams.clear();
+ }
+
+ private float getSystemVolume() {
+ if (soundsMuted)
+ return 0;
+ AudioManager manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+ float volume = manager.getStreamVolume(AudioManager.STREAM_MUSIC);
+ float maxVolume = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
+ return volume / maxVolume;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/sounds/SoundStream.java b/app/src/main/java/de/frajul/endlessroll/sounds/SoundStream.java
index 46cebcc..a136346 100644
--- a/app/src/main/java/de/frajul/endlessroll/sounds/SoundStream.java
+++ b/app/src/main/java/de/frajul/endlessroll/sounds/SoundStream.java
@@ -1,44 +1,44 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.sounds;
-
-/**
- * Created by Julian on 19.01.2018.
- */
-
-public class SoundStream {
-
- private int id;
- private float soundVolume;
- private float currentVolumeModifier;
-
- public SoundStream(int id, float soundVolume) {
- this.id = id;
- this.soundVolume = soundVolume;
- }
-
- public float getModifiedVolume() {
- return soundVolume * currentVolumeModifier;
- }
-
- public int getId() {
- return id;
- }
-
- public float getSoundVolume() {
- return soundVolume;
- }
-
- public float getCurrentVolumeModifier() {
- return currentVolumeModifier;
- }
-
- public void setCurrentVolumeModifier(float currentVolumeModifier) {
- this.currentVolumeModifier = currentVolumeModifier;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.sounds;
+
+/**
+ * Created by Julian on 19.01.2018.
+ */
+
+public class SoundStream {
+
+ private int id;
+ private float soundVolume;
+ private float currentVolumeModifier;
+
+ public SoundStream(int id, float soundVolume) {
+ this.id = id;
+ this.soundVolume = soundVolume;
+ }
+
+ public float getModifiedVolume() {
+ return soundVolume * currentVolumeModifier;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public float getSoundVolume() {
+ return soundVolume;
+ }
+
+ public float getCurrentVolumeModifier() {
+ return currentVolumeModifier;
+ }
+
+ public void setCurrentVolumeModifier(float currentVolumeModifier) {
+ this.currentVolumeModifier = currentVolumeModifier;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/DatabaseAdapter.java b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/DatabaseAdapter.java
index 08b31f6..96be926 100644
--- a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/DatabaseAdapter.java
+++ b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/DatabaseAdapter.java
@@ -1,95 +1,95 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.sqlDatabase;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.database.SQLException;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-
-import de.frajul.endlessroll.main.GameLog;
-
-/**
- * Created by Julian on 07.06.2016.
- */
-public abstract class DatabaseAdapter extends SQLiteOpenHelper {
-
- private SQLTable[] tables;
- private SQLiteDatabase database;
-
- public DatabaseAdapter(Context context, String databaseName, int version) {
- super(context, databaseName, null, version);
- createColumns();
- this.tables = createTables();
- }
-
- protected abstract void createColumns();
-
- protected abstract SQLTable[] createTables();
-
- @Override
- public void onCreate(SQLiteDatabase db) {
- GameLog.i("DATABASE CREATE");
- for (SQLTable table : tables)
- db.execSQL(table.getSqlCreateTable());
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- for (SQLTable table : tables)
- db.execSQL(table.getSqlDeleteTable());
- onCreate(db);
- }
-
- @Override
- public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- onUpgrade(db, oldVersion, newVersion);
- }
-
- public void open() throws SQLException {
- database = getWritableDatabase();
- }
-
- protected void deleteTableEntry(SQLTable table, SQLTableColumn c0, int c0Condition, SQLTableColumn c1, int c1Condition) {
- database.execSQL("DELETE FROM " + table.getName() + " WHERE " + c0.getKey() + " = " + c0Condition + " AND " + c1.getKey() + " = " + c1Condition);
- }
-
- protected void clearTable(SQLTable table) {
- database.execSQL(table.getSqlClearTable());
- }
-
- protected long insertData(SQLTable table, ContentValues data) {
- return database.insert(table.getName(), null, data);
- }
-
- protected long update(SQLTable table, ContentValues data, SQLTableColumn c0, int c0Condition, SQLTableColumn c1, int c1Condition) {
- int reached = database.delete(table.getName(), c0.getKey() + "=" + c0Condition + " and " + c1.getKey() + "=" + c1Condition, null);
- return insertData(table, data);
- }
-
- protected long update(SQLTable table, ContentValues data, SQLTableColumn c0, int c0Condition) {
- int reached = database.delete(table.getName(), c0.getKey() + "=" + c0Condition, null);
- return insertData(table, data);
- }
-
- protected Cursor getCursor(SQLTable table) {
- return database.rawQuery(table.getSqlGetCursor(), null);
- }
-
- protected Cursor getCursor(SQLTable table, SQLTableColumn c0, int c0Condition, SQLTableColumn c1, int c1Condition) {
- return database.rawQuery(table.getSqlGetCursor() + " where " + c0.getKey() + "=" + c0Condition + " and " + c1.getKey() + "=" + c1Condition, null);
- }
-
- protected Cursor getCursor(SQLTable table, SQLTableColumn c, int cCondition) {
- return database.rawQuery(table.getSqlGetCursor() + " where " + c.getKey() + "=" + cCondition, null);
- }
-
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.sqlDatabase;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.SQLException;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+import de.frajul.endlessroll.main.GameLog;
+
+/**
+ * Created by Julian on 07.06.2016.
+ */
+public abstract class DatabaseAdapter extends SQLiteOpenHelper {
+
+ private SQLTable[] tables;
+ private SQLiteDatabase database;
+
+ public DatabaseAdapter(Context context, String databaseName, int version) {
+ super(context, databaseName, null, version);
+ createColumns();
+ this.tables = createTables();
+ }
+
+ protected abstract void createColumns();
+
+ protected abstract SQLTable[] createTables();
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ GameLog.i("DATABASE CREATE");
+ for (SQLTable table : tables)
+ db.execSQL(table.getSqlCreateTable());
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ for (SQLTable table : tables)
+ db.execSQL(table.getSqlDeleteTable());
+ onCreate(db);
+ }
+
+ @Override
+ public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ onUpgrade(db, oldVersion, newVersion);
+ }
+
+ public void open() throws SQLException {
+ database = getWritableDatabase();
+ }
+
+ protected void deleteTableEntry(SQLTable table, SQLTableColumn c0, int c0Condition, SQLTableColumn c1, int c1Condition) {
+ database.execSQL("DELETE FROM " + table.getName() + " WHERE " + c0.getKey() + " = " + c0Condition + " AND " + c1.getKey() + " = " + c1Condition);
+ }
+
+ protected void clearTable(SQLTable table) {
+ database.execSQL(table.getSqlClearTable());
+ }
+
+ protected long insertData(SQLTable table, ContentValues data) {
+ return database.insert(table.getName(), null, data);
+ }
+
+ protected long update(SQLTable table, ContentValues data, SQLTableColumn c0, int c0Condition, SQLTableColumn c1, int c1Condition) {
+ int reached = database.delete(table.getName(), c0.getKey() + "=" + c0Condition + " and " + c1.getKey() + "=" + c1Condition, null);
+ return insertData(table, data);
+ }
+
+ protected long update(SQLTable table, ContentValues data, SQLTableColumn c0, int c0Condition) {
+ int reached = database.delete(table.getName(), c0.getKey() + "=" + c0Condition, null);
+ return insertData(table, data);
+ }
+
+ protected Cursor getCursor(SQLTable table) {
+ return database.rawQuery(table.getSqlGetCursor(), null);
+ }
+
+ protected Cursor getCursor(SQLTable table, SQLTableColumn c0, int c0Condition, SQLTableColumn c1, int c1Condition) {
+ return database.rawQuery(table.getSqlGetCursor() + " where " + c0.getKey() + "=" + c0Condition + " and " + c1.getKey() + "=" + c1Condition, null);
+ }
+
+ protected Cursor getCursor(SQLTable table, SQLTableColumn c, int cCondition) {
+ return database.rawQuery(table.getSqlGetCursor() + " where " + c.getKey() + "=" + cCondition, null);
+ }
+
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/MyDatabase.java b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/MyDatabase.java
index 77e4345..09b8132 100644
--- a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/MyDatabase.java
+++ b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/MyDatabase.java
@@ -1,148 +1,148 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.sqlDatabase;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.LevelManager;
-import de.frajul.endlessroll.levels.LevelPack;
-
-/**
- * Created by Julian on 10.05.2016.
- */
-public class MyDatabase extends DatabaseAdapter {
-
- private final static int VERSION = 9;
- private final static String DATABASE_NAME = "DATABASE";
- private SQLTableColumn levelPackIdColumn, lockedColumn;
- private SQLTableColumn levelIdColumn, levelFinishedColumn, collectedStarsColumn, collectedEnergyColumn;
- private SQLTableColumn toolIdColumn, boughtColumn, toolLevelColumn;
- private SQLTable levelPackTable, levelTable, toolTable;
-
- public MyDatabase(Context context) {
- super(context, DATABASE_NAME, VERSION);
- }
-
- @Override
- protected void createColumns() {
- levelPackIdColumn = new SQLTableColumn("LEVELPACK_ID", SQLTableColumn.ColumnType.INTEGER);
- lockedColumn = new SQLTableColumn("LOCKED", SQLTableColumn.ColumnType.INTEGER);
-
- levelIdColumn = new SQLTableColumn("LEVEL_ID", SQLTableColumn.ColumnType.INTEGER);
- levelFinishedColumn = new SQLTableColumn("FINISHED", SQLTableColumn.ColumnType.INTEGER);
- collectedStarsColumn = new SQLTableColumn("STARS", SQLTableColumn.ColumnType.TEXT);
- collectedEnergyColumn = new SQLTableColumn("ENERGY", SQLTableColumn.ColumnType.INTEGER);
-
- toolIdColumn = new SQLTableColumn("TOOL_ID", SQLTableColumn.ColumnType.INTEGER);
- boughtColumn = new SQLTableColumn("BOUGHT", SQLTableColumn.ColumnType.INTEGER);
- toolLevelColumn = new SQLTableColumn("TOOL_LEVEL", SQLTableColumn.ColumnType.INTEGER);
- }
-
- @Override
- protected SQLTable[] createTables() {
- levelPackTable = new SQLTable("LEVELPACK_TABLE", levelPackIdColumn, lockedColumn);
- levelTable = new SQLTable("LEVEL_TABLE", levelPackIdColumn, levelIdColumn, lockedColumn,
- levelFinishedColumn, collectedStarsColumn, collectedEnergyColumn);
- toolTable = new SQLTable("TOOL_TABLE", toolIdColumn, boughtColumn, toolLevelColumn);
- return new SQLTable[]{levelPackTable, levelTable, toolTable};
- }
-
- public void writeLevelPackLocked(LevelPack levelPack) {
- ContentValues values = new ContentValues();
- values.put(levelPackIdColumn.getKey(), levelPack.getId());
- values.put(lockedColumn.getKey(), levelPack.isLocked() ? 1 : 0);
- super.update(levelPackTable, values, levelPackIdColumn, levelPack.getId());
- }
-
- public void writeAllLevelAndPackStatus(LevelManager levelManager) {
- for (LevelPack levelPack : levelManager) {
- writeLevelPackLocked(levelPack);
- for (Level level : levelPack.getLevels()) {
- writeLevelProgress(level);
- }
- }
- }
-
- public void readLevelPackLocked(LevelPack levelPack) {
- Cursor cursor = super.getCursor(levelPackTable, levelPackIdColumn, levelPack.getId());
- if (cursor.moveToFirst()) {
- boolean locked = cursor.getInt(1) == 1;
- levelPack.setLocked(locked);
- }
- cursor.close();
- }
-
- public void clearLevelPackLocked() {
- super.clearTable(levelPackTable);
- }
-
- public void writeLevelProgress(Level level) {
- ContentValues values = new ContentValues();
- values.put(levelPackIdColumn.getKey(), level.getPackId());
- values.put(levelIdColumn.getKey(), level.getId());
- values.put(lockedColumn.getKey(), level.isLocked() ? 1 : 0);
- values.put(levelFinishedColumn.getKey(), level.isFinished() ? 1 : 0);
- values.put(collectedStarsColumn.getKey(), level.getCollectedStarCodeForSQL());
- values.put(collectedEnergyColumn.getKey(), level.isEnergyCollected());
- super.update(levelTable, values, levelPackIdColumn, level.getPackId(), levelIdColumn,
- level.getId());
- }
-
- public void readLevelProgress(Level level) {
- Cursor cursor = super
- .getCursor(levelTable, levelPackIdColumn, level.getPackId(), levelIdColumn,
- level.getId());
- if (cursor.moveToFirst()) {
- boolean locked = cursor.getInt(2) == 1;
- boolean finished = cursor.getInt(3) == 1;
- String stars = cursor.getString(4);
- boolean energy = cursor.getInt(5) == 1;
-
- level.setLocked(locked);
- level.setFinished(finished);
- level.setCollectedStarsFromSQL(stars);
- level.setEnergyCollected(energy);
- }
- cursor.close();
- }
-
- public void clearLevelProgess() {
- super.clearTable(levelTable);
- }
-
- public void writeToolData() {
- for (ToolType tool : ToolType.values()) {
- ContentValues values = new ContentValues();
- values.put(toolIdColumn.getKey(), tool.ordinal());
- values.put(boughtColumn.getKey(), tool.isBought() ? 1 : 0);
- values.put(toolLevelColumn.getKey(), tool.getCurrentUpgradeLevel());
- super.update(toolTable, values, toolIdColumn, tool.ordinal());
- }
- }
-
- public void readToolData() {
- Cursor cursor = super.getCursor(toolTable);
- if (cursor.moveToFirst()) {
- do {
- int id = cursor.getInt(0);
- boolean bought = cursor.getInt(1) == 1;
- int toolLevel = cursor.getInt(2);
-
- ToolType tool = ToolType.values()[id];
- tool.setBought(bought);
- tool.setCurrentUpgradeLevel(toolLevel);
- } while (cursor.moveToNext());
- }
- cursor.close();
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.sqlDatabase;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.LevelManager;
+import de.frajul.endlessroll.levels.LevelPack;
+
+/**
+ * Created by Julian on 10.05.2016.
+ */
+public class MyDatabase extends DatabaseAdapter {
+
+ private final static int VERSION = 9;
+ private final static String DATABASE_NAME = "DATABASE";
+ private SQLTableColumn levelPackIdColumn, lockedColumn;
+ private SQLTableColumn levelIdColumn, levelFinishedColumn, collectedStarsColumn, collectedEnergyColumn;
+ private SQLTableColumn toolIdColumn, boughtColumn, toolLevelColumn;
+ private SQLTable levelPackTable, levelTable, toolTable;
+
+ public MyDatabase(Context context) {
+ super(context, DATABASE_NAME, VERSION);
+ }
+
+ @Override
+ protected void createColumns() {
+ levelPackIdColumn = new SQLTableColumn("LEVELPACK_ID", SQLTableColumn.ColumnType.INTEGER);
+ lockedColumn = new SQLTableColumn("LOCKED", SQLTableColumn.ColumnType.INTEGER);
+
+ levelIdColumn = new SQLTableColumn("LEVEL_ID", SQLTableColumn.ColumnType.INTEGER);
+ levelFinishedColumn = new SQLTableColumn("FINISHED", SQLTableColumn.ColumnType.INTEGER);
+ collectedStarsColumn = new SQLTableColumn("STARS", SQLTableColumn.ColumnType.TEXT);
+ collectedEnergyColumn = new SQLTableColumn("ENERGY", SQLTableColumn.ColumnType.INTEGER);
+
+ toolIdColumn = new SQLTableColumn("TOOL_ID", SQLTableColumn.ColumnType.INTEGER);
+ boughtColumn = new SQLTableColumn("BOUGHT", SQLTableColumn.ColumnType.INTEGER);
+ toolLevelColumn = new SQLTableColumn("TOOL_LEVEL", SQLTableColumn.ColumnType.INTEGER);
+ }
+
+ @Override
+ protected SQLTable[] createTables() {
+ levelPackTable = new SQLTable("LEVELPACK_TABLE", levelPackIdColumn, lockedColumn);
+ levelTable = new SQLTable("LEVEL_TABLE", levelPackIdColumn, levelIdColumn, lockedColumn,
+ levelFinishedColumn, collectedStarsColumn, collectedEnergyColumn);
+ toolTable = new SQLTable("TOOL_TABLE", toolIdColumn, boughtColumn, toolLevelColumn);
+ return new SQLTable[]{levelPackTable, levelTable, toolTable};
+ }
+
+ public void writeLevelPackLocked(LevelPack levelPack) {
+ ContentValues values = new ContentValues();
+ values.put(levelPackIdColumn.getKey(), levelPack.getId());
+ values.put(lockedColumn.getKey(), levelPack.isLocked() ? 1 : 0);
+ super.update(levelPackTable, values, levelPackIdColumn, levelPack.getId());
+ }
+
+ public void writeAllLevelAndPackStatus(LevelManager levelManager) {
+ for (LevelPack levelPack : levelManager) {
+ writeLevelPackLocked(levelPack);
+ for (Level level : levelPack.getLevels()) {
+ writeLevelProgress(level);
+ }
+ }
+ }
+
+ public void readLevelPackLocked(LevelPack levelPack) {
+ Cursor cursor = super.getCursor(levelPackTable, levelPackIdColumn, levelPack.getId());
+ if (cursor.moveToFirst()) {
+ boolean locked = cursor.getInt(1) == 1;
+ levelPack.setLocked(locked);
+ }
+ cursor.close();
+ }
+
+ public void clearLevelPackLocked() {
+ super.clearTable(levelPackTable);
+ }
+
+ public void writeLevelProgress(Level level) {
+ ContentValues values = new ContentValues();
+ values.put(levelPackIdColumn.getKey(), level.getPackId());
+ values.put(levelIdColumn.getKey(), level.getId());
+ values.put(lockedColumn.getKey(), level.isLocked() ? 1 : 0);
+ values.put(levelFinishedColumn.getKey(), level.isFinished() ? 1 : 0);
+ values.put(collectedStarsColumn.getKey(), level.getCollectedStarCodeForSQL());
+ values.put(collectedEnergyColumn.getKey(), level.isEnergyCollected());
+ super.update(levelTable, values, levelPackIdColumn, level.getPackId(), levelIdColumn,
+ level.getId());
+ }
+
+ public void readLevelProgress(Level level) {
+ Cursor cursor = super
+ .getCursor(levelTable, levelPackIdColumn, level.getPackId(), levelIdColumn,
+ level.getId());
+ if (cursor.moveToFirst()) {
+ boolean locked = cursor.getInt(2) == 1;
+ boolean finished = cursor.getInt(3) == 1;
+ String stars = cursor.getString(4);
+ boolean energy = cursor.getInt(5) == 1;
+
+ level.setLocked(locked);
+ level.setFinished(finished);
+ level.setCollectedStarsFromSQL(stars);
+ level.setEnergyCollected(energy);
+ }
+ cursor.close();
+ }
+
+ public void clearLevelProgess() {
+ super.clearTable(levelTable);
+ }
+
+ public void writeToolData() {
+ for (ToolType tool : ToolType.values()) {
+ ContentValues values = new ContentValues();
+ values.put(toolIdColumn.getKey(), tool.ordinal());
+ values.put(boughtColumn.getKey(), tool.isBought() ? 1 : 0);
+ values.put(toolLevelColumn.getKey(), tool.getCurrentUpgradeLevel());
+ super.update(toolTable, values, toolIdColumn, tool.ordinal());
+ }
+ }
+
+ public void readToolData() {
+ Cursor cursor = super.getCursor(toolTable);
+ if (cursor.moveToFirst()) {
+ do {
+ int id = cursor.getInt(0);
+ boolean bought = cursor.getInt(1) == 1;
+ int toolLevel = cursor.getInt(2);
+
+ ToolType tool = ToolType.values()[id];
+ tool.setBought(bought);
+ tool.setCurrentUpgradeLevel(toolLevel);
+ } while (cursor.moveToNext());
+ }
+ cursor.close();
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTable.java b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTable.java
index acf3de1..67e464d 100644
--- a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTable.java
+++ b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTable.java
@@ -1,45 +1,45 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.sqlDatabase;
-
-public class SQLTable {
-
- private final String name;
- private final String columnsAsText;
-
- public SQLTable(String name, SQLTableColumn... columns) {
- this.name = name;
- StringBuilder builder = new StringBuilder();
- for (int i = 0; i < columns.length; i++) {
- builder.append(columns[i].toString());
- if (i != columns.length - 1)
- builder.append(", ");
- }
- columnsAsText = builder.toString();
- }
-
- public String getName() {
- return name;
- }
-
- public String getSqlCreateTable() {
- return "CREATE TABLE " + name + "(" + columnsAsText + ");";
- }
-
- public String getSqlDeleteTable() {
- return "DROP TABLE IF EXISTS " + name;
- }
-
- public String getSqlClearTable() {
- return "DELETE FROM " + name;
- }
-
- public String getSqlGetCursor() {
- return "SELECT * FROM " + name;
- }
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.sqlDatabase;
+
+public class SQLTable {
+
+ private final String name;
+ private final String columnsAsText;
+
+ public SQLTable(String name, SQLTableColumn... columns) {
+ this.name = name;
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < columns.length; i++) {
+ builder.append(columns[i].toString());
+ if (i != columns.length - 1)
+ builder.append(", ");
+ }
+ columnsAsText = builder.toString();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getSqlCreateTable() {
+ return "CREATE TABLE " + name + "(" + columnsAsText + ");";
+ }
+
+ public String getSqlDeleteTable() {
+ return "DROP TABLE IF EXISTS " + name;
+ }
+
+ public String getSqlClearTable() {
+ return "DELETE FROM " + name;
+ }
+
+ public String getSqlGetCursor() {
+ return "SELECT * FROM " + name;
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTableColumn.java b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTableColumn.java
index 946121d..8a2b467 100644
--- a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTableColumn.java
+++ b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTableColumn.java
@@ -1,55 +1,55 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.sqlDatabase;
-
-public class SQLTableColumn {
-
- public enum ColumnType {
- TEXT, INTEGER, REAL
- }
-
- public enum ColumnExtra {
- NONE(""), PRIMARY_KEY("PRIMARY KEY"), NOT_NULL("NOT NULL");
-
- private String name;
-
- ColumnExtra(String name) {
- this.name = name;
- }
-
- @Override
- public String toString() {
- return name;
- }
- }
-
- private String title;
- private ColumnType type;
- private ColumnExtra extra;
-
- public SQLTableColumn(String title, ColumnType type, ColumnExtra extra) {
- this.title = title;
- this.type = type;
- this.extra = extra;
- }
-
- public SQLTableColumn(String title, ColumnType type) {
- this.title = title;
- this.type = type;
- this.extra = ColumnExtra.NOT_NULL;
- }
-
- public String getKey() {
- return title;
- }
-
- @Override
- public String toString() {
- return title + " " + type.toString() + " " + extra.toString();
- }
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.sqlDatabase;
+
+public class SQLTableColumn {
+
+ public enum ColumnType {
+ TEXT, INTEGER, REAL
+ }
+
+ public enum ColumnExtra {
+ NONE(""), PRIMARY_KEY("PRIMARY KEY"), NOT_NULL("NOT NULL");
+
+ private String name;
+
+ ColumnExtra(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+ }
+
+ private String title;
+ private ColumnType type;
+ private ColumnExtra extra;
+
+ public SQLTableColumn(String title, ColumnType type, ColumnExtra extra) {
+ this.title = title;
+ this.type = type;
+ this.extra = extra;
+ }
+
+ public SQLTableColumn(String title, ColumnType type) {
+ this.title = title;
+ this.type = type;
+ this.extra = ColumnExtra.NOT_NULL;
+ }
+
+ public String getKey() {
+ return title;
+ }
+
+ @Override
+ public String toString() {
+ return title + " " + type.toString() + " " + extra.toString();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTablePrimaryKeyColumn.java b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTablePrimaryKeyColumn.java
index ba2224b..d0db0cf 100644
--- a/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTablePrimaryKeyColumn.java
+++ b/app/src/main/java/de/frajul/endlessroll/sqlDatabase/SQLTablePrimaryKeyColumn.java
@@ -1,28 +1,28 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.sqlDatabase;
-
-/**
- * Created by Julian on 30.05.2016.
- */
-public class SQLTablePrimaryKeyColumn extends SQLTableColumn {
-
- private boolean autoincrement;
-
- public SQLTablePrimaryKeyColumn(boolean autoincrement) {
- super("_ID", ColumnType.INTEGER, ColumnExtra.PRIMARY_KEY);
- this.autoincrement = autoincrement;
- }
-
- @Override
- public String toString() {
- if (autoincrement)
- return super.toString() + " AUTOINCREMENT";
- return super.toString();
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.sqlDatabase;
+
+/**
+ * Created by Julian on 30.05.2016.
+ */
+public class SQLTablePrimaryKeyColumn extends SQLTableColumn {
+
+ private boolean autoincrement;
+
+ public SQLTablePrimaryKeyColumn(boolean autoincrement) {
+ super("_ID", ColumnType.INTEGER, ColumnExtra.PRIMARY_KEY);
+ this.autoincrement = autoincrement;
+ }
+
+ @Override
+ public String toString() {
+ if (autoincrement)
+ return super.toString() + " AUTOINCREMENT";
+ return super.toString();
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/user/LevelUpBounties.java b/app/src/main/java/de/frajul/endlessroll/user/LevelUpBounties.java
index e0ee48f..5dd22a9 100644
--- a/app/src/main/java/de/frajul/endlessroll/user/LevelUpBounties.java
+++ b/app/src/main/java/de/frajul/endlessroll/user/LevelUpBounties.java
@@ -1,73 +1,73 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.user;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import de.frajul.endlessroll.entities.tools.ToolType;
-
-/**
- * Created by Julian on 17.07.2016.
- */
-public class LevelUpBounties extends HashMap {
-
- private List unlockedTools = new ArrayList<>();
- 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(5, 0, null, true));
- super.put(4, new LevelBounty(5, 1, ToolType.BOMB, false));
- super.put(5, new LevelBounty(5, 1, ToolType.MAGNET, false));
- super.put(6, new LevelBounty(5, 2, null, true));
- super.put(7, new LevelBounty(5, 1, ToolType.STASIS, false));
- super.put(8, new LevelBounty(2, 2, ToolType.POWER_MUSHROOM, false));
- super.put(9, new LevelBounty(2, 3, null, true));
- super.put(10, new LevelBounty(2, 1, null, false));
- super.put(11, new LevelBounty(2, 2, null, false));
- super.put(12, new LevelBounty(2, 4, null, false));
- loadAllForLevel(level);
- }
-
- public void loadAllForLevel(int level) {
- unlockedTools.clear();
- unlockedToolSlots = 0;
- for (int i = level; i > 0; i--)
- loadBounty(super.get(i));
- }
-
- private void loadBounty(LevelBounty bounty) {
- if (bounty != null) {
- if (bounty.getToolType() != null)
- unlockedTools.add(bounty.getToolType());
- if (bounty.isToolSlot())
- unlockedToolSlots++;
- }
- }
-
- public int getLevelToolIsUnlocked(ToolType tool) {
- for (int level : this.keySet()) {
- LevelBounty bounty = this.get(level);
- if (tool.equals(bounty.getToolType()))
- return level;
- }
- return -1;
- }
-
- public boolean isToolLocked(ToolType tool) {
- return !unlockedTools.contains(tool);
- }
-
- public boolean isToolSlotLocked(int index) {
- return index >= unlockedToolSlots;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.user;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import de.frajul.endlessroll.entities.tools.ToolType;
+
+/**
+ * Created by Julian on 17.07.2016.
+ */
+public class LevelUpBounties extends HashMap {
+
+ private List unlockedTools = new ArrayList<>();
+ 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(5, 0, null, true));
+ super.put(4, new LevelBounty(5, 1, ToolType.BOMB, false));
+ super.put(5, new LevelBounty(5, 1, ToolType.MAGNET, false));
+ super.put(6, new LevelBounty(5, 2, null, true));
+ super.put(7, new LevelBounty(5, 1, ToolType.STASIS, false));
+ super.put(8, new LevelBounty(2, 2, ToolType.POWER_MUSHROOM, false));
+ super.put(9, new LevelBounty(2, 3, null, true));
+ super.put(10, new LevelBounty(2, 1, null, false));
+ super.put(11, new LevelBounty(2, 2, null, false));
+ super.put(12, new LevelBounty(2, 4, null, false));
+ loadAllForLevel(level);
+ }
+
+ public void loadAllForLevel(int level) {
+ unlockedTools.clear();
+ unlockedToolSlots = 0;
+ for (int i = level; i > 0; i--)
+ loadBounty(super.get(i));
+ }
+
+ private void loadBounty(LevelBounty bounty) {
+ if (bounty != null) {
+ if (bounty.getToolType() != null)
+ unlockedTools.add(bounty.getToolType());
+ if (bounty.isToolSlot())
+ unlockedToolSlots++;
+ }
+ }
+
+ public int getLevelToolIsUnlocked(ToolType tool) {
+ for (int level : this.keySet()) {
+ LevelBounty bounty = this.get(level);
+ if (tool.equals(bounty.getToolType()))
+ return level;
+ }
+ return -1;
+ }
+
+ public boolean isToolLocked(ToolType tool) {
+ return !unlockedTools.contains(tool);
+ }
+
+ public boolean isToolSlotLocked(int index) {
+ return index >= unlockedToolSlots;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/user/ToolSlotSettings.java b/app/src/main/java/de/frajul/endlessroll/user/ToolSlotSettings.java
index 9dffb52..0eaa19f 100644
--- a/app/src/main/java/de/frajul/endlessroll/user/ToolSlotSettings.java
+++ b/app/src/main/java/de/frajul/endlessroll/user/ToolSlotSettings.java
@@ -1,56 +1,56 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.user;
-
-import java.util.ArrayList;
-
-import de.frajul.endlessroll.entities.tools.ToolSlot;
-import de.frajul.endlessroll.entities.tools.ToolType;
-
-/**
- * Created by Julian on 15.07.2016.
- */
-public class ToolSlotSettings extends ArrayList {
-
- public ToolSlotSettings(String slot1, String slot2, String slot3, String slot4, int slotsLocked) {
- super.add(new ToolSlot(slot1.equals("null") ? null : ToolType.valueOf(slot1), false));
- super.add(new ToolSlot(slot2.equals("null") ? null : ToolType.valueOf(slot2), slotsLocked >= 3));
- super.add(new ToolSlot(slot3.equals("null") ? null : ToolType.valueOf(slot3), slotsLocked >= 2));
- super.add(new ToolSlot(slot4.equals("null") ? null : ToolType.valueOf(slot4), slotsLocked >= 1));
- }
-
- public void reset() {
- super.set(0, new ToolSlot(ToolType.RAMP, false));
- super.set(1, new ToolSlot(null, true));
- super.set(2, new ToolSlot(null, true));
- super.set(3, new ToolSlot(null, true));
- }
-
- public void changeToolSlotType(int slot, ToolType newType) {
- for (ToolSlot toolSlot : this) {
- if (super.indexOf(toolSlot) == slot)
- toolSlot.setToolType(newType);
- else if (toolSlot.getToolType() == newType)
- toolSlot.setToolType(null);
- }
- }
-
- public void unlockSlotsIfLevelReached(LevelUpBounties levelUpBounties) {
- for (int i = 0; i < 4; i++)
- super.get(i).setLocked(levelUpBounties.isToolSlotLocked(i));
- }
-
- public int getLockedSlotCount() {
- int count = 0;
- for (ToolSlot slot : this)
- if (slot.isLocked())
- count++;
- return count;
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.user;
+
+import java.util.ArrayList;
+
+import de.frajul.endlessroll.entities.tools.ToolSlot;
+import de.frajul.endlessroll.entities.tools.ToolType;
+
+/**
+ * Created by Julian on 15.07.2016.
+ */
+public class ToolSlotSettings extends ArrayList {
+
+ public ToolSlotSettings(String slot1, String slot2, String slot3, String slot4, int slotsLocked) {
+ super.add(new ToolSlot(slot1.equals("null") ? null : ToolType.valueOf(slot1), false));
+ super.add(new ToolSlot(slot2.equals("null") ? null : ToolType.valueOf(slot2), slotsLocked >= 3));
+ super.add(new ToolSlot(slot3.equals("null") ? null : ToolType.valueOf(slot3), slotsLocked >= 2));
+ super.add(new ToolSlot(slot4.equals("null") ? null : ToolType.valueOf(slot4), slotsLocked >= 1));
+ }
+
+ public void reset() {
+ super.set(0, new ToolSlot(ToolType.RAMP, false));
+ super.set(1, new ToolSlot(null, true));
+ super.set(2, new ToolSlot(null, true));
+ super.set(3, new ToolSlot(null, true));
+ }
+
+ public void changeToolSlotType(int slot, ToolType newType) {
+ for (ToolSlot toolSlot : this) {
+ if (super.indexOf(toolSlot) == slot)
+ toolSlot.setToolType(newType);
+ else if (toolSlot.getToolType() == newType)
+ toolSlot.setToolType(null);
+ }
+ }
+
+ public void unlockSlotsIfLevelReached(LevelUpBounties levelUpBounties) {
+ for (int i = 0; i < 4; i++)
+ super.get(i).setLocked(levelUpBounties.isToolSlotLocked(i));
+ }
+
+ public int getLockedSlotCount() {
+ int count = 0;
+ for (ToolSlot slot : this)
+ if (slot.isLocked())
+ count++;
+ return count;
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/user/User.java b/app/src/main/java/de/frajul/endlessroll/user/User.java
index 8b8ac73..db66b6a 100644
--- a/app/src/main/java/de/frajul/endlessroll/user/User.java
+++ b/app/src/main/java/de/frajul/endlessroll/user/User.java
@@ -1,143 +1,143 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.user;
-
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-
-/**
- * Created by Julian on 10.07.2016.
- */
-public class User {
-
- public interface LvUpListener {
- void onLvUp(int level, boolean showLvUpMessage);
- }
-
- private final int LV_DONE_EP = 20;
- private final int STAR_EP = 2;
- private final int ENERGY_EP = 10;
- //MAX EP IN ONE LEVEL: 36 (20 + 3*2 + 10)
-
- private LvUpListener lvUpListener;
- private int ep;
- private int level;
- private int starCount;
- private int energyCount;
- private ToolSlotSettings toolSlotSettings;
- private PlayerShape currentPlayerShape;
-
- private LevelUpBounties levelUpBounties;
-
- public User(LvUpListener lvUpListener, int ep, int level, int starCount, int energyCount, ToolSlotSettings toolSlotSettings, PlayerShape playerShape) {
- this.lvUpListener = lvUpListener;
- this.ep = ep;
- this.level = level;
- this.starCount = starCount;
- this.energyCount = energyCount;
- this.toolSlotSettings = toolSlotSettings;
- this.currentPlayerShape = playerShape;
-
- levelUpBounties = new LevelUpBounties(level);
- }
-
- public void clearData() {
- ep = 0;
- level = 1;
- starCount = 0;
- energyCount = 0;
- levelUpBounties.loadAllForLevel(level);
- toolSlotSettings.reset();
- currentPlayerShape = PlayerShape.BALL;
- }
-
- public void onStarCollected() {
- increaseStarCount(1, true);
- }
-
- public void increaseStarCount(int starCount, boolean gainEp) {
- this.starCount += starCount;
- if (gainEp)
- gainEp(STAR_EP * starCount, true);
- }
-
- public void onEnergyCollected() {
- increaseEnergyCount(1, true);
- }
-
- public void increaseEnergyCount(int energyCount, boolean gainEp) {
- this.energyCount += energyCount;
- if (gainEp)
- gainEp(ENERGY_EP * energyCount, true);
- }
-
- public void gainLvFinishedEp() {
- gainEp(LV_DONE_EP, true);
- }
-
- public void gainEp(int amount, boolean showLvUpMessage) {
- ep += amount;
- while (ep >= 100) {
- ep -= 100;
- levelUp(showLvUpMessage);
- }
- }
-
- private void levelUp(boolean showLvUpMessage) {
- level++;
- levelUpBounties.loadAllForLevel(level);
-
- toolSlotSettings.unlockSlotsIfLevelReached(levelUpBounties);
- LevelBounty bounty = levelUpBounties.get(level);
- if (bounty != null) {
- increaseStarCount(bounty.getStarCount(), false);
- increaseEnergyCount(bounty.getEnergyCount(), false);
- }
- lvUpListener.onLvUp(level, showLvUpMessage);
- }
-
- public int getEp() {
- return ep;
- }
-
- public int getLevel() {
- return level;
- }
-
- public int getStarCount() {
- return starCount;
- }
-
- public int getEnergyCount() {
- return energyCount;
- }
-
- public ToolSlotSettings getToolSlotSettings() {
- return toolSlotSettings;
- }
-
- public PlayerShape getCurrentPlayerShape() {
- return currentPlayerShape;
- }
-
- public void setCurrentPlayerShape(PlayerShape currentPlayerShape) {
- this.currentPlayerShape = currentPlayerShape;
- }
-
- public LevelUpBounties getLevelUpBounties() {
- return levelUpBounties;
- }
-
- //CHEAT
- public void setLevel(int level) {
- this.level = level;
- }
-
- public void setStarCount(int starCount) {
- this.starCount = starCount;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.user;
+
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+
+/**
+ * Created by Julian on 10.07.2016.
+ */
+public class User {
+
+ public interface LvUpListener {
+ void onLvUp(int level, boolean showLvUpMessage);
+ }
+
+ private final int LV_DONE_EP = 20;
+ private final int STAR_EP = 2;
+ private final int ENERGY_EP = 10;
+ //MAX EP IN ONE LEVEL: 36 (20 + 3*2 + 10)
+
+ private LvUpListener lvUpListener;
+ private int ep;
+ private int level;
+ private int starCount;
+ private int energyCount;
+ private ToolSlotSettings toolSlotSettings;
+ private PlayerShape currentPlayerShape;
+
+ private LevelUpBounties levelUpBounties;
+
+ public User(LvUpListener lvUpListener, int ep, int level, int starCount, int energyCount, ToolSlotSettings toolSlotSettings, PlayerShape playerShape) {
+ this.lvUpListener = lvUpListener;
+ this.ep = ep;
+ this.level = level;
+ this.starCount = starCount;
+ this.energyCount = energyCount;
+ this.toolSlotSettings = toolSlotSettings;
+ this.currentPlayerShape = playerShape;
+
+ levelUpBounties = new LevelUpBounties(level);
+ }
+
+ public void clearData() {
+ ep = 0;
+ level = 1;
+ starCount = 0;
+ energyCount = 0;
+ levelUpBounties.loadAllForLevel(level);
+ toolSlotSettings.reset();
+ currentPlayerShape = PlayerShape.BALL;
+ }
+
+ public void onStarCollected() {
+ increaseStarCount(1, true);
+ }
+
+ public void increaseStarCount(int starCount, boolean gainEp) {
+ this.starCount += starCount;
+ if (gainEp)
+ gainEp(STAR_EP * starCount, true);
+ }
+
+ public void onEnergyCollected() {
+ increaseEnergyCount(1, true);
+ }
+
+ public void increaseEnergyCount(int energyCount, boolean gainEp) {
+ this.energyCount += energyCount;
+ if (gainEp)
+ gainEp(ENERGY_EP * energyCount, true);
+ }
+
+ public void gainLvFinishedEp() {
+ gainEp(LV_DONE_EP, true);
+ }
+
+ public void gainEp(int amount, boolean showLvUpMessage) {
+ ep += amount;
+ while (ep >= 100) {
+ ep -= 100;
+ levelUp(showLvUpMessage);
+ }
+ }
+
+ private void levelUp(boolean showLvUpMessage) {
+ level++;
+ levelUpBounties.loadAllForLevel(level);
+
+ toolSlotSettings.unlockSlotsIfLevelReached(levelUpBounties);
+ LevelBounty bounty = levelUpBounties.get(level);
+ if (bounty != null) {
+ increaseStarCount(bounty.getStarCount(), false);
+ increaseEnergyCount(bounty.getEnergyCount(), false);
+ }
+ lvUpListener.onLvUp(level, showLvUpMessage);
+ }
+
+ public int getEp() {
+ return ep;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public int getStarCount() {
+ return starCount;
+ }
+
+ public int getEnergyCount() {
+ return energyCount;
+ }
+
+ public ToolSlotSettings getToolSlotSettings() {
+ return toolSlotSettings;
+ }
+
+ public PlayerShape getCurrentPlayerShape() {
+ return currentPlayerShape;
+ }
+
+ public void setCurrentPlayerShape(PlayerShape currentPlayerShape) {
+ this.currentPlayerShape = currentPlayerShape;
+ }
+
+ public LevelUpBounties getLevelUpBounties() {
+ return levelUpBounties;
+ }
+
+ //CHEAT
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public void setStarCount(int starCount) {
+ this.starCount = starCount;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/BombErrorMessage.java b/app/src/main/java/de/frajul/endlessroll/views/BombErrorMessage.java
index a7ba64d..ed27971 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/BombErrorMessage.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/BombErrorMessage.java
@@ -1,63 +1,63 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.view.LayoutInflater;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 18.03.2018.
- */
-
-public class BombErrorMessage implements Animation.AnimationListener {
-
- private TextView view;
- private Animation animation;
- private boolean animationRunning = false;
-
- public BombErrorMessage(GameActivity gameActivity) {
- LayoutInflater inflater = LayoutInflater.from(gameActivity);
- view = (TextView) inflater.inflate(R.layout.bomb_error_message, null);
- view.setTypeface(gameActivity.getTypeface());
- animation = AnimationUtils.loadAnimation(gameActivity, R.anim.fade_out_accelerating);
- animation.setAnimationListener(this);
- }
-
- public void show(float xPos, float yPos) {
- animationRunning = true;
- view.setX(xPos - (float) view.getWidth() / 2);
- view.setY(yPos);
- view.startAnimation(animation);
- }
-
- @Override
- public void onAnimationEnd(Animation animation) {
- animationRunning = false;
- }
-
- public TextView getView() {
- return view;
- }
-
- public boolean isAnimationRunning() {
- return animationRunning;
- }
-
- @Override
- public void onAnimationStart(Animation animation) {
- }
-
- @Override
- public void onAnimationRepeat(Animation animation) {
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.view.LayoutInflater;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 18.03.2018.
+ */
+
+public class BombErrorMessage implements Animation.AnimationListener {
+
+ private TextView view;
+ private Animation animation;
+ private boolean animationRunning = false;
+
+ public BombErrorMessage(GameActivity gameActivity) {
+ LayoutInflater inflater = LayoutInflater.from(gameActivity);
+ view = (TextView) inflater.inflate(R.layout.bomb_error_message, null);
+ view.setTypeface(gameActivity.getTypeface());
+ animation = AnimationUtils.loadAnimation(gameActivity, R.anim.fade_out_accelerating);
+ animation.setAnimationListener(this);
+ }
+
+ public void show(float xPos, float yPos) {
+ animationRunning = true;
+ view.setX(xPos - (float) view.getWidth() / 2);
+ view.setY(yPos);
+ view.startAnimation(animation);
+ }
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ animationRunning = false;
+ }
+
+ public TextView getView() {
+ return view;
+ }
+
+ public boolean isAnimationRunning() {
+ return animationRunning;
+ }
+
+ @Override
+ public void onAnimationStart(Animation animation) {
+ }
+
+ @Override
+ public void onAnimationRepeat(Animation animation) {
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/BountyMessage.java b/app/src/main/java/de/frajul/endlessroll/views/BountyMessage.java
index 2309df2..f7ba55e 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/BountyMessage.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/BountyMessage.java
@@ -1,96 +1,96 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.content.Context;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.screens.Screen;
-
-/**
- * Created by Julian on 15.07.2016.
- */
-public class BountyMessage implements View.OnClickListener {
-
- public interface ScreenSwitchCaller {
- void switchScreen(Screen.ScreenType screenType);
- }
-
- public enum MessageType {
- STARS(R.string.bounty_message_resource_format_s, Screen.ScreenType.NONE),
- ENERGY(R.string.bounty_message_resource_format_s, Screen.ScreenType.NONE),
- TOOL(R.string.bounty_message_tool_format_s, Screen.ScreenType.TOOL_SHOP),
- TOOL_SLOT(R.string.bounty_message_tool_slot, Screen.ScreenType.TOOL_SHOP),
- SHAPE_UNLOCKED(R.string.bounty_message_shape_unlocked, Screen.ScreenType.SHAPE_SHOP);
-
- @StringRes
- private int textId;
- private Screen.ScreenType goalScreenType;
-
- MessageType(@StringRes int textId, Screen.ScreenType goalScreenType) {
- this.textId = textId;
- this.goalScreenType = goalScreenType;
- }
-
- public String formatText(Context context, @Nullable String textArgs) {
- String text = context.getString(textId);
- if (textArgs == null)
- return text;
- return String.format(text, textArgs);
- }
-
-
- public Screen.ScreenType getGoalScreenType() {
- return goalScreenType;
- }
-
- }
-
- private LinearLayout layout;
- private ImageView image;
- private TextView text;
-
- private MessageType messageType;
- private ScreenSwitchCaller screenSwitchCaller;
-
- public BountyMessage(GameActivity gameActivity, MessageType messageType, @Nullable String textArgs, ScreenSwitchCaller screenSwitchCaller, @DrawableRes int drawableId) {
- findViews(gameActivity);
- this.image.setImageResource(drawableId);
- this.text.setText(messageType.formatText(gameActivity, textArgs));
- this.text.setTypeface(gameActivity.getTypeface());
- this.messageType = messageType;
- this.screenSwitchCaller = screenSwitchCaller;
- }
-
- private void findViews(Context context) {
- LayoutInflater inflater = LayoutInflater.from(context);
- layout = (LinearLayout) inflater.inflate(R.layout.unlock_message, null);
- layout.setOnClickListener(this);
- image = layout.findViewById(R.id.unlockmessage_toolimage);
- text = layout.findViewById(R.id.unlockmessage_message);
- }
-
- @Override
- public void onClick(View v) {
- if (messageType.getGoalScreenType() != Screen.ScreenType.NONE)
- screenSwitchCaller.switchScreen(messageType.getGoalScreenType());
- }
-
- public LinearLayout getLayout() {
- return layout;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.content.Context;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.screens.Screen;
+
+/**
+ * Created by Julian on 15.07.2016.
+ */
+public class BountyMessage implements View.OnClickListener {
+
+ public interface ScreenSwitchCaller {
+ void switchScreen(Screen.ScreenType screenType);
+ }
+
+ public enum MessageType {
+ STARS(R.string.bounty_message_resource_format_s, Screen.ScreenType.NONE),
+ ENERGY(R.string.bounty_message_resource_format_s, Screen.ScreenType.NONE),
+ TOOL(R.string.bounty_message_tool_format_s, Screen.ScreenType.TOOL_SHOP),
+ TOOL_SLOT(R.string.bounty_message_tool_slot, Screen.ScreenType.TOOL_SHOP),
+ SHAPE_UNLOCKED(R.string.bounty_message_shape_unlocked, Screen.ScreenType.SHAPE_SHOP);
+
+ @StringRes
+ private int textId;
+ private Screen.ScreenType goalScreenType;
+
+ MessageType(@StringRes int textId, Screen.ScreenType goalScreenType) {
+ this.textId = textId;
+ this.goalScreenType = goalScreenType;
+ }
+
+ public String formatText(Context context, @Nullable String textArgs) {
+ String text = context.getString(textId);
+ if (textArgs == null)
+ return text;
+ return String.format(text, textArgs);
+ }
+
+
+ public Screen.ScreenType getGoalScreenType() {
+ return goalScreenType;
+ }
+
+ }
+
+ private LinearLayout layout;
+ private ImageView image;
+ private TextView text;
+
+ private MessageType messageType;
+ private ScreenSwitchCaller screenSwitchCaller;
+
+ public BountyMessage(GameActivity gameActivity, MessageType messageType, @Nullable String textArgs, ScreenSwitchCaller screenSwitchCaller, @DrawableRes int drawableId) {
+ findViews(gameActivity);
+ this.image.setImageResource(drawableId);
+ this.text.setText(messageType.formatText(gameActivity, textArgs));
+ this.text.setTypeface(gameActivity.getTypeface());
+ this.messageType = messageType;
+ this.screenSwitchCaller = screenSwitchCaller;
+ }
+
+ private void findViews(Context context) {
+ LayoutInflater inflater = LayoutInflater.from(context);
+ layout = (LinearLayout) inflater.inflate(R.layout.unlock_message, null);
+ layout.setOnClickListener(this);
+ image = layout.findViewById(R.id.unlockmessage_toolimage);
+ text = layout.findViewById(R.id.unlockmessage_message);
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (messageType.getGoalScreenType() != Screen.ScreenType.NONE)
+ screenSwitchCaller.switchScreen(messageType.getGoalScreenType());
+ }
+
+ public LinearLayout getLayout() {
+ return layout;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/ConfirmDialog.java b/app/src/main/java/de/frajul/endlessroll/views/ConfirmDialog.java
index b6b38d2..5d10efc 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/ConfirmDialog.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/ConfirmDialog.java
@@ -1,72 +1,72 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.app.Dialog;
-import android.os.Bundle;
-import android.support.annotation.StringRes;
-import android.view.View;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 31.10.2017.
- */
-
-public class ConfirmDialog extends Dialog implements View.OnClickListener {
-
- public interface ConfirmDialogListener {
- void onConfirmed(int callId);
- }
-
- private GameActivity gameActivity;
- private int callId = -1;
- private ConfirmDialogListener listener;
-
- private TextView textView;
- private Button yesButton;
- private Button noButton;
-
- public ConfirmDialog(GameActivity gameActivity, ConfirmDialogListener listener) {
- super(gameActivity);
- this.gameActivity = gameActivity;
- this.listener = listener;
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.confirm_dialog);
- textView = findViewById(R.id.confirm_dialog_textview);
- textView.setTypeface(gameActivity.getTypeface());
- noButton = findViewById(R.id.confirm_dialog_no_button);
- noButton.setTypeface(gameActivity.getTypeface());
- noButton.setOnClickListener(this);
- yesButton = findViewById(R.id.confirm_dialog_yes_button);
- yesButton.setTypeface(gameActivity.getTypeface());
- yesButton.setOnClickListener(this);
- }
-
- public void show(int callId, @StringRes int text) {
- this.callId = callId;
- super.show();
- textView.setText(text);
- }
-
- @Override
- public void onClick(View v) {
- dismiss();
- if (v.equals(yesButton))
- listener.onConfirmed(callId);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.app.Dialog;
+import android.os.Bundle;
+import android.support.annotation.StringRes;
+import android.view.View;
+import android.view.Window;
+import android.widget.Button;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 31.10.2017.
+ */
+
+public class ConfirmDialog extends Dialog implements View.OnClickListener {
+
+ public interface ConfirmDialogListener {
+ void onConfirmed(int callId);
+ }
+
+ private GameActivity gameActivity;
+ private int callId = -1;
+ private ConfirmDialogListener listener;
+
+ private TextView textView;
+ private Button yesButton;
+ private Button noButton;
+
+ public ConfirmDialog(GameActivity gameActivity, ConfirmDialogListener listener) {
+ super(gameActivity);
+ this.gameActivity = gameActivity;
+ this.listener = listener;
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
+ setContentView(R.layout.confirm_dialog);
+ textView = findViewById(R.id.confirm_dialog_textview);
+ textView.setTypeface(gameActivity.getTypeface());
+ noButton = findViewById(R.id.confirm_dialog_no_button);
+ noButton.setTypeface(gameActivity.getTypeface());
+ noButton.setOnClickListener(this);
+ yesButton = findViewById(R.id.confirm_dialog_yes_button);
+ yesButton.setTypeface(gameActivity.getTypeface());
+ yesButton.setOnClickListener(this);
+ }
+
+ public void show(int callId, @StringRes int text) {
+ this.callId = callId;
+ super.show();
+ textView.setText(text);
+ }
+
+ @Override
+ public void onClick(View v) {
+ dismiss();
+ if (v.equals(yesButton))
+ listener.onConfirmed(callId);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/CreditsDialog.java b/app/src/main/java/de/frajul/endlessroll/views/CreditsDialog.java
index 3534194..e8e9597 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/CreditsDialog.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/CreditsDialog.java
@@ -1,113 +1,113 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.animation.ObjectAnimator;
-import android.app.Dialog;
-import android.os.Bundle;
-import android.support.annotation.IdRes;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.Window;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.view.animation.LinearInterpolator;
-import android.widget.ImageView;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-import java.util.concurrent.locks.ReentrantLock;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 31.10.2017.
- */
-
-public class CreditsDialog extends Dialog implements View.OnTouchListener {
-
- private GameActivity gameActivity;
-
- private View scrollViewLayout;
- private ImageView ball;
- private Animation rotation;
- private ScrollView scrollView;
- private ReentrantLock scrollViewAnimatorLock;
- private ObjectAnimator scrollViewAnimator;
-
- public CreditsDialog(GameActivity gameActivity) {
- super(gameActivity);
- this.gameActivity = gameActivity;
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.credits_dialog);
-
- setTypefaceToTextView(R.id.credits_title);
- setTypefaceToTextView(R.id.credits_author);
- setTypefaceToTextView(R.id.credits_art_title);
- setTypefaceToTextView(R.id.credits_art);
- setTypefaceToTextView(R.id.credits_testers_title);
- setTypefaceToTextView(R.id.credits_testers);
- setTypefaceToTextView(R.id.credits_sounds_title);
- setTypefaceToTextView(R.id.credits_sounds);
- setTypefaceToTextView(R.id.credits_music_title);
- setTypefaceToTextView(R.id.credits_music);
-
- ball = findViewById(R.id.credits_ball);
- rotation = AnimationUtils.loadAnimation(gameActivity, R.anim.shape_button_rotation);
- scrollView = findViewById(R.id.credits_scrollview);
- scrollView.setOnTouchListener(this);
- scrollViewLayout = findViewById(R.id.credits_scrollview_layout);
- scrollViewAnimatorLock = new ReentrantLock();
- }
-
- private void setTypefaceToTextView(@IdRes int id) {
- TextView textView = findViewById(id);
- textView.setTypeface(gameActivity.getTypeface());
- }
-
- @Override
- public void show() {
- super.show();
- ball.startAnimation(rotation);
- scrollView.post(new Runnable() {
- @Override
- public void run() {
- scrollView.scrollTo(0, 0);
-
- scrollViewAnimatorLock.lock();
- try {
- scrollViewAnimator = ObjectAnimator
- .ofInt(scrollView, "scrollY", scrollViewLayout.getBottom() - scrollView.getHeight());
- scrollViewAnimator.setDuration(16000);
- scrollViewAnimator.setInterpolator(new LinearInterpolator());
- scrollViewAnimator.start();
- } finally {
- scrollViewAnimatorLock.unlock();
- }
- }
- });
- }
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- scrollViewAnimatorLock.lock();
- try {
- if (scrollViewAnimator != null)
- scrollViewAnimator.cancel();
- } finally {
- scrollViewAnimatorLock.unlock();
- }
- return false;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.animation.ObjectAnimator;
+import android.app.Dialog;
+import android.os.Bundle;
+import android.support.annotation.IdRes;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.Window;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.view.animation.LinearInterpolator;
+import android.widget.ImageView;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import java.util.concurrent.locks.ReentrantLock;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 31.10.2017.
+ */
+
+public class CreditsDialog extends Dialog implements View.OnTouchListener {
+
+ private GameActivity gameActivity;
+
+ private View scrollViewLayout;
+ private ImageView ball;
+ private Animation rotation;
+ private ScrollView scrollView;
+ private ReentrantLock scrollViewAnimatorLock;
+ private ObjectAnimator scrollViewAnimator;
+
+ public CreditsDialog(GameActivity gameActivity) {
+ super(gameActivity);
+ this.gameActivity = gameActivity;
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
+ setContentView(R.layout.credits_dialog);
+
+ setTypefaceToTextView(R.id.credits_title);
+ setTypefaceToTextView(R.id.credits_author);
+ setTypefaceToTextView(R.id.credits_art_title);
+ setTypefaceToTextView(R.id.credits_art);
+ setTypefaceToTextView(R.id.credits_testers_title);
+ setTypefaceToTextView(R.id.credits_testers);
+ setTypefaceToTextView(R.id.credits_sounds_title);
+ setTypefaceToTextView(R.id.credits_sounds);
+ setTypefaceToTextView(R.id.credits_music_title);
+ setTypefaceToTextView(R.id.credits_music);
+
+ ball = findViewById(R.id.credits_ball);
+ rotation = AnimationUtils.loadAnimation(gameActivity, R.anim.shape_button_rotation);
+ scrollView = findViewById(R.id.credits_scrollview);
+ scrollView.setOnTouchListener(this);
+ scrollViewLayout = findViewById(R.id.credits_scrollview_layout);
+ scrollViewAnimatorLock = new ReentrantLock();
+ }
+
+ private void setTypefaceToTextView(@IdRes int id) {
+ TextView textView = findViewById(id);
+ textView.setTypeface(gameActivity.getTypeface());
+ }
+
+ @Override
+ public void show() {
+ super.show();
+ ball.startAnimation(rotation);
+ scrollView.post(new Runnable() {
+ @Override
+ public void run() {
+ scrollView.scrollTo(0, 0);
+
+ scrollViewAnimatorLock.lock();
+ try {
+ scrollViewAnimator = ObjectAnimator
+ .ofInt(scrollView, "scrollY", scrollViewLayout.getBottom() - scrollView.getHeight());
+ scrollViewAnimator.setDuration(16000);
+ scrollViewAnimator.setInterpolator(new LinearInterpolator());
+ scrollViewAnimator.start();
+ } finally {
+ scrollViewAnimatorLock.unlock();
+ }
+ }
+ });
+ }
+
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ scrollViewAnimatorLock.lock();
+ try {
+ if (scrollViewAnimator != null)
+ scrollViewAnimator.cancel();
+ } finally {
+ scrollViewAnimatorLock.unlock();
+ }
+ return false;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/DevToolsDialog.java b/app/src/main/java/de/frajul/endlessroll/views/DevToolsDialog.java
index 86b65b4..d0dc01b 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/DevToolsDialog.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/DevToolsDialog.java
@@ -1,106 +1,106 @@
-/*
- * Created by Julian Mutter on 9/7/18 12:36 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:58 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.animation.ObjectAnimator;
-import android.app.Dialog;
-import android.os.Bundle;
-import android.support.annotation.IdRes;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.Window;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.view.animation.LinearInterpolator;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-import java.util.concurrent.locks.ReentrantLock;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.screens.Screen;
-import de.frajul.endlessroll.sqlDatabase.MyDatabase;
-
-/**
- * Created by Julian on 31.10.2017.
- */
-
-public class DevToolsDialog extends Dialog implements View.OnClickListener, ConfirmDialog.ConfirmDialogListener{
-
- private GameActivity gameActivity;
-
- private Button unlockLevels;
- private Button gain90EP;
- private Button finishFirstWorld;
- private Button toGlTestScreen;
-
- private ConfirmDialog confirmDialog;
-
- public DevToolsDialog(GameActivity gameActivity) {
- super(gameActivity);
- this.gameActivity = gameActivity;
- confirmDialog = new ConfirmDialog(gameActivity, this);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.dev_tools_dialog);
-
- unlockLevels = findViewById(R.id.startscreen_unlock_levels);
- unlockLevels.setOnClickListener(this);
- gain90EP = findViewById(R.id.startscreen_gain_90_ep);
- gain90EP.setOnClickListener(this);
- finishFirstWorld = findViewById(R.id.startscreen_finish_world_1);
- finishFirstWorld.setOnClickListener(this);
- toGlTestScreen = findViewById(R.id.startscreen_to_gl_test_screen);
- toGlTestScreen.setOnClickListener(this);
- }
-
- @Override
- public void onClick(View view) {
- if (view.equals(gain90EP)) {
- gameActivity.getUser().gainEp(90, true);
- } else if (view.equals(unlockLevels)) {
- gameActivity.getLevelManager().unlockAllLevels();
- gameActivity.getLevelManager().unlockAllPacks();
- MyDatabase database = gameActivity.getDataStorageHandler().getDatabase();
- database.open();
- database.writeAllLevelAndPackStatus(gameActivity.getLevelManager());
- database.close();
- } else if (view.equals(finishFirstWorld)) {
- confirmDialog
- .show(1, R.string.confirm_dialog_finish_world_1);
- } else if (view.equals(toGlTestScreen)) {
- super.cancel();
- gameActivity.flipToScreen(Screen.ScreenType.GL_TEST);
- }
- }
-
- @Override
- public void onConfirmed(int callId) {
- gameActivity.resetData();
- gameActivity.getUser().gainEp(320, false);
- gameActivity.getLevelManager().finishFirstPack();
- gameActivity.showNewFinishedPlayerShapeTasks();
- gameActivity.getTutorialManager().getToolShopTutorial().setFinished(true);
-
- gameActivity.getDataStorageHandler().writeUserData(gameActivity.getUser());
- gameActivity.getDataStorageHandler().writeToolShopTutorialFinished(true);
- MyDatabase database = gameActivity.getDataStorageHandler().getDatabase();
- database.open();
- database.writeAllLevelAndPackStatus(gameActivity.getLevelManager());
- database.close();
-
- super.cancel();
- }
-}
+/*
+ * Created by Julian Mutter on 9/7/18 12:36 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:58 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.animation.ObjectAnimator;
+import android.app.Dialog;
+import android.os.Bundle;
+import android.support.annotation.IdRes;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.Window;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.view.animation.LinearInterpolator;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import java.util.concurrent.locks.ReentrantLock;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.screens.Screen;
+import de.frajul.endlessroll.sqlDatabase.MyDatabase;
+
+/**
+ * Created by Julian on 31.10.2017.
+ */
+
+public class DevToolsDialog extends Dialog implements View.OnClickListener, ConfirmDialog.ConfirmDialogListener{
+
+ private GameActivity gameActivity;
+
+ private Button unlockLevels;
+ private Button gain90EP;
+ private Button finishFirstWorld;
+ private Button toGlTestScreen;
+
+ private ConfirmDialog confirmDialog;
+
+ public DevToolsDialog(GameActivity gameActivity) {
+ super(gameActivity);
+ this.gameActivity = gameActivity;
+ confirmDialog = new ConfirmDialog(gameActivity, this);
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
+ setContentView(R.layout.dev_tools_dialog);
+
+ unlockLevels = findViewById(R.id.startscreen_unlock_levels);
+ unlockLevels.setOnClickListener(this);
+ gain90EP = findViewById(R.id.startscreen_gain_90_ep);
+ gain90EP.setOnClickListener(this);
+ finishFirstWorld = findViewById(R.id.startscreen_finish_world_1);
+ finishFirstWorld.setOnClickListener(this);
+ toGlTestScreen = findViewById(R.id.startscreen_to_gl_test_screen);
+ toGlTestScreen.setOnClickListener(this);
+ }
+
+ @Override
+ public void onClick(View view) {
+ if (view.equals(gain90EP)) {
+ gameActivity.getUser().gainEp(90, true);
+ } else if (view.equals(unlockLevels)) {
+ gameActivity.getLevelManager().unlockAllLevels();
+ gameActivity.getLevelManager().unlockAllPacks();
+ MyDatabase database = gameActivity.getDataStorageHandler().getDatabase();
+ database.open();
+ database.writeAllLevelAndPackStatus(gameActivity.getLevelManager());
+ database.close();
+ } else if (view.equals(finishFirstWorld)) {
+ confirmDialog
+ .show(1, R.string.confirm_dialog_finish_world_1);
+ } else if (view.equals(toGlTestScreen)) {
+ super.cancel();
+ gameActivity.flipToScreen(Screen.ScreenType.GL_TEST);
+ }
+ }
+
+ @Override
+ public void onConfirmed(int callId) {
+ gameActivity.resetData();
+ gameActivity.getUser().gainEp(320, false);
+ gameActivity.getLevelManager().finishFirstPack();
+ gameActivity.showNewFinishedPlayerShapeTasks();
+ gameActivity.getTutorialManager().getToolShopTutorial().setFinished(true);
+
+ gameActivity.getDataStorageHandler().writeUserData(gameActivity.getUser());
+ gameActivity.getDataStorageHandler().writeToolShopTutorialFinished(true);
+ MyDatabase database = gameActivity.getDataStorageHandler().getDatabase();
+ database.open();
+ database.writeAllLevelAndPackStatus(gameActivity.getLevelManager());
+ database.close();
+
+ super.cancel();
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/GameOverMessage.java b/app/src/main/java/de/frajul/endlessroll/views/GameOverMessage.java
index 6ec20b1..9dccce9 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/GameOverMessage.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/GameOverMessage.java
@@ -1,86 +1,86 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.graphics.Typeface;
-import android.view.View;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.widget.Button;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.game.Game;
-import de.frajul.endlessroll.main.screens.GameScreen;
-
-/**
- * Created by Julian on 09.07.2016.
- */
-public class GameOverMessage implements View.OnClickListener {
-
- private Animation fadeIn;
- private GameActivity gameActivity;
- private Game game;
-
- private View layout;
- private TopBar topBar;
- private Button tryAgain;
- private Button toMenu;
-
- public GameOverMessage(Game game, GameScreen gameScreen, GameActivity gameActivity, View layout) {
- this.game = game;
- this.gameActivity = gameActivity;
- this.layout = layout;
- layout.setVisibility(View.GONE);
- Typeface typeface = gameActivity.getTypeface();
- fadeIn = AnimationUtils.loadAnimation(gameActivity, R.anim.fade_in);
- topBar = new TopBar(gameActivity, gameScreen,
- layout.findViewById(R.id.game_over_message_topbar));
- topBar.setShopsEnabled(true);
- TextView title = layout.findViewById(R.id.game_over_message_title);
- title.setTypeface(typeface);
- tryAgain = layout.findViewById(R.id.game_over_message_try_again);
- tryAgain.setTypeface(typeface);
- tryAgain.setOnClickListener(this);
- toMenu = layout.findViewById(R.id.game_over_message_to_menu);
- toMenu.setTypeface(typeface);
- toMenu.setOnClickListener(this);
- }
-
- public void fadeIn() {
- topBar.update();
- layout.startAnimation(fadeIn);
- layout.setVisibility(View.VISIBLE);
- }
-
- public boolean isVisible() {
- return layout.getVisibility() == View.VISIBLE;
- }
-
- public void prepareToBeShown() {
- topBar.update();
- }
-
- private void hide() {
- layout.clearAnimation();
- layout.setVisibility(View.GONE);
- gameActivity.getSoundManager().stopAllSounds();
- }
-
- @Override
- public void onClick(View v) {
- if (v.equals(tryAgain)) {
- hide();
- game.restartLevel();
- } else if (v.equals(toMenu)) {
- hide();
- game.toLevelsScreen();
- }
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.graphics.Typeface;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.Button;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.game.Game;
+import de.frajul.endlessroll.main.screens.GameScreen;
+
+/**
+ * Created by Julian on 09.07.2016.
+ */
+public class GameOverMessage implements View.OnClickListener {
+
+ private Animation fadeIn;
+ private GameActivity gameActivity;
+ private Game game;
+
+ private View layout;
+ private TopBar topBar;
+ private Button tryAgain;
+ private Button toMenu;
+
+ public GameOverMessage(Game game, GameScreen gameScreen, GameActivity gameActivity, View layout) {
+ this.game = game;
+ this.gameActivity = gameActivity;
+ this.layout = layout;
+ layout.setVisibility(View.GONE);
+ Typeface typeface = gameActivity.getTypeface();
+ fadeIn = AnimationUtils.loadAnimation(gameActivity, R.anim.fade_in);
+ topBar = new TopBar(gameActivity, gameScreen,
+ layout.findViewById(R.id.game_over_message_topbar));
+ topBar.setShopsEnabled(true);
+ TextView title = layout.findViewById(R.id.game_over_message_title);
+ title.setTypeface(typeface);
+ tryAgain = layout.findViewById(R.id.game_over_message_try_again);
+ tryAgain.setTypeface(typeface);
+ tryAgain.setOnClickListener(this);
+ toMenu = layout.findViewById(R.id.game_over_message_to_menu);
+ toMenu.setTypeface(typeface);
+ toMenu.setOnClickListener(this);
+ }
+
+ public void fadeIn() {
+ topBar.update();
+ layout.startAnimation(fadeIn);
+ layout.setVisibility(View.VISIBLE);
+ }
+
+ public boolean isVisible() {
+ return layout.getVisibility() == View.VISIBLE;
+ }
+
+ public void prepareToBeShown() {
+ topBar.update();
+ }
+
+ private void hide() {
+ layout.clearAnimation();
+ layout.setVisibility(View.GONE);
+ gameActivity.getSoundManager().stopAllSounds();
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v.equals(tryAgain)) {
+ hide();
+ game.restartLevel();
+ } else if (v.equals(toMenu)) {
+ hide();
+ game.toLevelsScreen();
+ }
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/GoalMessage.java b/app/src/main/java/de/frajul/endlessroll/views/GoalMessage.java
index e12a95e..6686b9f 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/GoalMessage.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/GoalMessage.java
@@ -1,122 +1,122 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.graphics.Typeface;
-import android.view.View;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.widget.Button;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.LevelPack;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.game.Game;
-import de.frajul.endlessroll.main.screens.GameScreen;
-import de.frajul.endlessroll.main.screens.Screen;
-
-/**
- * Created by Julian on 23.04.2016.
- */
-public class GoalMessage implements GoalMessageLevelButtonOnClickListener, View.OnClickListener {
-
- private Game game;
- private GameActivity gameActivity;
- private LevelPack levelPack;
- private Animation fadeIn;
-
- private View layout;
- private TopBar topBar;
- private GoalMessageLevelButton restart;
- private GoalMessageLevelButton nextLevel;
- private Button toMenu;
-
- public GoalMessage(Game game, GameScreen gameScreen, GameActivity gameActivity, View layout) {
- this.game = game;
- this.gameActivity = gameActivity;
- this.layout = layout;
- layout.setVisibility(View.GONE);
- Typeface typeface = gameActivity.getTypeface();
- fadeIn = AnimationUtils.loadAnimation(gameActivity, R.anim.fade_in);
-
- topBar = new TopBar(gameActivity, gameScreen,
- layout.findViewById(R.id.goal_message_topbar));
- topBar.setShopsEnabled(true);
- TextView title = layout.findViewById(R.id.goal_message_title);
- title.setTypeface(typeface);
- restart = new GoalMessageLevelButton(gameActivity, this,
- layout.findViewById(R.id.goal_message_restart));
- nextLevel = new GoalMessageLevelButton(gameActivity, this,
- layout.findViewById(R.id.goal_message_next_level));
- toMenu = layout.findViewById(R.id.goal_message_to_menu);
- toMenu.setTypeface(typeface);
- toMenu.setOnClickListener(this);
- }
-
- public void fadeInWithDelay(final LevelPack levelPack, final Level level) {
- this.levelPack = levelPack;
-
- topBar.update();
- restart.init(R.string.goal_message_restart_format_d, level);
- boolean isLastLevel = levelPack.isLastLevel(level);
- boolean hasNextWorld = gameActivity.getLevelManager().getNextLevelPack(levelPack) != null;
- nextLevel.setVisible(!isLastLevel || hasNextWorld);
- if (!isLastLevel)
- nextLevel
- .init(R.string.goal_message_next_level_format_d, levelPack.getNextLevel(level));
- else if (hasNextWorld) {
- nextLevel.initShowToNextWorld(true, levelPack);
- }
-
- layout.postDelayed(new Runnable() {
- @Override
- public void run() {
- layout.startAnimation(fadeIn);
- layout.setVisibility(View.VISIBLE);
- }
- }, 500);
- }
-
- public boolean isVisible() {
- return layout.getVisibility() == View.VISIBLE;
- }
-
- public void prepareToBeShown() {
- topBar.update();
- }
-
- private void hide() {
- layout.clearAnimation();
- layout.setVisibility(View.GONE);
- gameActivity.getSoundManager().stopAllSounds();
- }
-
- @Override
- public void onClick(View v) {
- if (v.equals(toMenu)) {
- game.toLevelsScreen();
- hide();
- }
- }
-
- @Override
- public void onClick(GoalMessageLevelButton goalMessageLevelButton) {
- hide();
- if (goalMessageLevelButton.isShowingToNextWorld()) {
- gameActivity.flipToScreen(Screen.ScreenType.WORLDS);
- } else
- gameActivity.startGame(levelPack, goalMessageLevelButton.getLevel());
- }
-
- public void onKeyBack() {
- game.toLevelsScreen();
- hide();
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.graphics.Typeface;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.Button;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.LevelPack;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.game.Game;
+import de.frajul.endlessroll.main.screens.GameScreen;
+import de.frajul.endlessroll.main.screens.Screen;
+
+/**
+ * Created by Julian on 23.04.2016.
+ */
+public class GoalMessage implements GoalMessageLevelButtonOnClickListener, View.OnClickListener {
+
+ private Game game;
+ private GameActivity gameActivity;
+ private LevelPack levelPack;
+ private Animation fadeIn;
+
+ private View layout;
+ private TopBar topBar;
+ private GoalMessageLevelButton restart;
+ private GoalMessageLevelButton nextLevel;
+ private Button toMenu;
+
+ public GoalMessage(Game game, GameScreen gameScreen, GameActivity gameActivity, View layout) {
+ this.game = game;
+ this.gameActivity = gameActivity;
+ this.layout = layout;
+ layout.setVisibility(View.GONE);
+ Typeface typeface = gameActivity.getTypeface();
+ fadeIn = AnimationUtils.loadAnimation(gameActivity, R.anim.fade_in);
+
+ topBar = new TopBar(gameActivity, gameScreen,
+ layout.findViewById(R.id.goal_message_topbar));
+ topBar.setShopsEnabled(true);
+ TextView title = layout.findViewById(R.id.goal_message_title);
+ title.setTypeface(typeface);
+ restart = new GoalMessageLevelButton(gameActivity, this,
+ layout.findViewById(R.id.goal_message_restart));
+ nextLevel = new GoalMessageLevelButton(gameActivity, this,
+ layout.findViewById(R.id.goal_message_next_level));
+ toMenu = layout.findViewById(R.id.goal_message_to_menu);
+ toMenu.setTypeface(typeface);
+ toMenu.setOnClickListener(this);
+ }
+
+ public void fadeInWithDelay(final LevelPack levelPack, final Level level) {
+ this.levelPack = levelPack;
+
+ topBar.update();
+ restart.init(R.string.goal_message_restart_format_d, level);
+ boolean isLastLevel = levelPack.isLastLevel(level);
+ boolean hasNextWorld = gameActivity.getLevelManager().getNextLevelPack(levelPack) != null;
+ nextLevel.setVisible(!isLastLevel || hasNextWorld);
+ if (!isLastLevel)
+ nextLevel
+ .init(R.string.goal_message_next_level_format_d, levelPack.getNextLevel(level));
+ else if (hasNextWorld) {
+ nextLevel.initShowToNextWorld(true, levelPack);
+ }
+
+ layout.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ layout.startAnimation(fadeIn);
+ layout.setVisibility(View.VISIBLE);
+ }
+ }, 500);
+ }
+
+ public boolean isVisible() {
+ return layout.getVisibility() == View.VISIBLE;
+ }
+
+ public void prepareToBeShown() {
+ topBar.update();
+ }
+
+ private void hide() {
+ layout.clearAnimation();
+ layout.setVisibility(View.GONE);
+ gameActivity.getSoundManager().stopAllSounds();
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v.equals(toMenu)) {
+ game.toLevelsScreen();
+ hide();
+ }
+ }
+
+ @Override
+ public void onClick(GoalMessageLevelButton goalMessageLevelButton) {
+ hide();
+ if (goalMessageLevelButton.isShowingToNextWorld()) {
+ gameActivity.flipToScreen(Screen.ScreenType.WORLDS);
+ } else
+ gameActivity.startGame(levelPack, goalMessageLevelButton.getLevel());
+ }
+
+ public void onKeyBack() {
+ game.toLevelsScreen();
+ hide();
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/GoalMessageLevelButton.java b/app/src/main/java/de/frajul/endlessroll/views/GoalMessageLevelButton.java
index 884938e..e17dbcb 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/GoalMessageLevelButton.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/GoalMessageLevelButton.java
@@ -1,116 +1,116 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.support.annotation.StringRes;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.LevelPack;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 23.04.2016.
- */
-public class GoalMessageLevelButton implements View.OnClickListener {
-
- private GameActivity gameActivity;
- private GoalMessageLevelButtonOnClickListener clickListener;
- private Level level;
- private boolean showingToNextWorld = false;
-
- private View layout;
- private TextView text;
- private ImageView star1;
- private ImageView star2;
- private ImageView star3;
- private ImageView energy;
- private View bottomLayout;
-
- public GoalMessageLevelButton(GameActivity gameActivity, GoalMessageLevelButtonOnClickListener clickListener, View layout) {
- this.gameActivity = gameActivity;
- this.clickListener = clickListener;
- this.layout = layout;
- layout.setOnClickListener(this);
- findViews(layout);
- }
-
- private void findViews(View layout) {
- text = layout.findViewById(R.id.goal_message_levelbutton_textview);
- text.setTypeface(gameActivity.getTypeface());
- star1 = layout.findViewById(R.id.goal_message_levelbutton_star1);
- star2 = layout.findViewById(R.id.goal_message_levelbutton_star2);
- star3 = layout.findViewById(R.id.goal_message_levelbutton_star3);
- energy = layout.findViewById(R.id.goal_message_levelbutton_energy);
- bottomLayout = layout.findViewById(R.id.goal_message_levelbutton_bottom_layout);
- }
-
- public void setVisible(boolean visible) {
- layout.setVisibility(visible ? View.VISIBLE : View.GONE);
- }
-
- public void init(@StringRes int textId, Level level) {
- this.level = level;
- initShowToNextWorld(false, null);
- text.setText(gameActivity.getString(textId, level.getId()));
- showCollectedCurrency(level.getCollectedStars(), level.isEnergyCollected());
- }
-
- public void initShowToNextWorld(boolean show, LevelPack currentLevelPack) {
- showingToNextWorld = show;
- bottomLayout.setVisibility(show ? View.GONE : View.VISIBLE);
- if (show) {
- String nextWorld = gameActivity.getLevelManager().getNextLevelPack(currentLevelPack)
- .getName();
- text.setText(
- gameActivity.getString(R.string.goal_message_next_world_format_s, nextWorld));
- }
- }
-
- private void showCollectedCurrency(boolean[] stars, boolean energy) {
- if (stars[0])
- this.star1.setImageResource(R.drawable.currency_star);
- else
- this.star1.setImageResource(R.drawable.currency_star_empty);
-
- if (stars[1])
- this.star2.setImageResource(R.drawable.currency_star);
- else
- this.star2.setImageResource(R.drawable.currency_star_empty);
-
- if (stars[2])
- this.star3.setImageResource(R.drawable.currency_star);
- else
- this.star3.setImageResource(R.drawable.currency_star_empty);
-
- if (energy)
- this.energy.setImageResource(R.drawable.currency_energy);
- else
- this.energy.setImageResource(R.drawable.currency_energy_empty);
- }
-
- public Level getLevel() {
- return level;
- }
-
- public View getView() {
- return layout;
- }
-
- public boolean isShowingToNextWorld() {
- return showingToNextWorld;
- }
-
- @Override
- public void onClick(View v) {
- clickListener.onClick(this);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.support.annotation.StringRes;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.LevelPack;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 23.04.2016.
+ */
+public class GoalMessageLevelButton implements View.OnClickListener {
+
+ private GameActivity gameActivity;
+ private GoalMessageLevelButtonOnClickListener clickListener;
+ private Level level;
+ private boolean showingToNextWorld = false;
+
+ private View layout;
+ private TextView text;
+ private ImageView star1;
+ private ImageView star2;
+ private ImageView star3;
+ private ImageView energy;
+ private View bottomLayout;
+
+ public GoalMessageLevelButton(GameActivity gameActivity, GoalMessageLevelButtonOnClickListener clickListener, View layout) {
+ this.gameActivity = gameActivity;
+ this.clickListener = clickListener;
+ this.layout = layout;
+ layout.setOnClickListener(this);
+ findViews(layout);
+ }
+
+ private void findViews(View layout) {
+ text = layout.findViewById(R.id.goal_message_levelbutton_textview);
+ text.setTypeface(gameActivity.getTypeface());
+ star1 = layout.findViewById(R.id.goal_message_levelbutton_star1);
+ star2 = layout.findViewById(R.id.goal_message_levelbutton_star2);
+ star3 = layout.findViewById(R.id.goal_message_levelbutton_star3);
+ energy = layout.findViewById(R.id.goal_message_levelbutton_energy);
+ bottomLayout = layout.findViewById(R.id.goal_message_levelbutton_bottom_layout);
+ }
+
+ public void setVisible(boolean visible) {
+ layout.setVisibility(visible ? View.VISIBLE : View.GONE);
+ }
+
+ public void init(@StringRes int textId, Level level) {
+ this.level = level;
+ initShowToNextWorld(false, null);
+ text.setText(gameActivity.getString(textId, level.getId()));
+ showCollectedCurrency(level.getCollectedStars(), level.isEnergyCollected());
+ }
+
+ public void initShowToNextWorld(boolean show, LevelPack currentLevelPack) {
+ showingToNextWorld = show;
+ bottomLayout.setVisibility(show ? View.GONE : View.VISIBLE);
+ if (show) {
+ String nextWorld = gameActivity.getLevelManager().getNextLevelPack(currentLevelPack)
+ .getName();
+ text.setText(
+ gameActivity.getString(R.string.goal_message_next_world_format_s, nextWorld));
+ }
+ }
+
+ private void showCollectedCurrency(boolean[] stars, boolean energy) {
+ if (stars[0])
+ this.star1.setImageResource(R.drawable.currency_star);
+ else
+ this.star1.setImageResource(R.drawable.currency_star_empty);
+
+ if (stars[1])
+ this.star2.setImageResource(R.drawable.currency_star);
+ else
+ this.star2.setImageResource(R.drawable.currency_star_empty);
+
+ if (stars[2])
+ this.star3.setImageResource(R.drawable.currency_star);
+ else
+ this.star3.setImageResource(R.drawable.currency_star_empty);
+
+ if (energy)
+ this.energy.setImageResource(R.drawable.currency_energy);
+ else
+ this.energy.setImageResource(R.drawable.currency_energy_empty);
+ }
+
+ public Level getLevel() {
+ return level;
+ }
+
+ public View getView() {
+ return layout;
+ }
+
+ public boolean isShowingToNextWorld() {
+ return showingToNextWorld;
+ }
+
+ @Override
+ public void onClick(View v) {
+ clickListener.onClick(this);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/GoalMessageLevelButtonOnClickListener.java b/app/src/main/java/de/frajul/endlessroll/views/GoalMessageLevelButtonOnClickListener.java
index cee62be..346f1e4 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/GoalMessageLevelButtonOnClickListener.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/GoalMessageLevelButtonOnClickListener.java
@@ -1,18 +1,18 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-/**
- * Created by Julian on 04.11.2017.
- */
-
-public interface GoalMessageLevelButtonOnClickListener {
-
- void onClick(GoalMessageLevelButton goalMessageLevelButton);
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+/**
+ * Created by Julian on 04.11.2017.
+ */
+
+public interface GoalMessageLevelButtonOnClickListener {
+
+ void onClick(GoalMessageLevelButton goalMessageLevelButton);
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/LevelButton.java b/app/src/main/java/de/frajul/endlessroll/views/LevelButton.java
index ab18d90..97455d3 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/LevelButton.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/LevelButton.java
@@ -1,91 +1,91 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.support.annotation.LayoutRes;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 23.04.2016.
- */
-public class LevelButton implements View.OnClickListener {
-
- private GameActivity gameActivity;
- private LevelButtonOnClickListener clickListener;
- private Level level;
-
- private View layout;
- private TextView text;
- private ImageView star1;
- private ImageView star2;
- private ImageView star3;
- private ImageView energy;
- private ImageView lockImage;
-
- public LevelButton(GameActivity gameActivity, LevelButtonOnClickListener clickListener, @LayoutRes int layoutId) {
- this.gameActivity = gameActivity;
- this.clickListener = clickListener;
- LayoutInflater inflater = LayoutInflater.from(gameActivity);
- layout = inflater.inflate(layoutId, null);
- layout.setOnClickListener(this);
- findViews(layout);
- }
-
- private void findViews(View layout) {
- text = layout.findViewById(R.id.levelbutton_textview);
- text.setTypeface(gameActivity.getTypeface());
- star1 = layout.findViewById(R.id.levelbutton_star1);
- star2 = layout.findViewById(R.id.levelbutton_star2);
- star3 = layout.findViewById(R.id.levelbutton_star3);
- energy = layout.findViewById(R.id.levelbutton_energy);
- lockImage = layout.findViewById(R.id.levelbutton_lock);
- }
-
- public void init(Level level) {
- this.level = level;
- setLockVisible(level.isLocked());
- text.setText(gameActivity.getString(R.string.level_button_format_d, level.getId()));
- showCollectedCurrency(level.getCollectedStars(), level.isEnergyCollected());
- }
-
- private void setLockVisible(boolean locked) {
- int visibility = locked ? View.VISIBLE : View.GONE;
- lockImage.setVisibility(visibility);
- }
-
- private void showCollectedCurrency(boolean[] stars, boolean energy) {
- if (stars[0])
- this.star1.setImageResource(R.drawable.currency_star);
- if (stars[1])
- this.star2.setImageResource(R.drawable.currency_star);
- if (stars[2])
- this.star3.setImageResource(R.drawable.currency_star);
- if (energy)
- this.energy.setImageResource(R.drawable.currency_energy);
- }
-
- public Level getLevel() {
- return level;
- }
-
- public View getView() {
- return layout;
- }
-
- @Override
- public void onClick(View v) {
- clickListener.onClick(this);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.support.annotation.LayoutRes;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 23.04.2016.
+ */
+public class LevelButton implements View.OnClickListener {
+
+ private GameActivity gameActivity;
+ private LevelButtonOnClickListener clickListener;
+ private Level level;
+
+ private View layout;
+ private TextView text;
+ private ImageView star1;
+ private ImageView star2;
+ private ImageView star3;
+ private ImageView energy;
+ private ImageView lockImage;
+
+ public LevelButton(GameActivity gameActivity, LevelButtonOnClickListener clickListener, @LayoutRes int layoutId) {
+ this.gameActivity = gameActivity;
+ this.clickListener = clickListener;
+ LayoutInflater inflater = LayoutInflater.from(gameActivity);
+ layout = inflater.inflate(layoutId, null);
+ layout.setOnClickListener(this);
+ findViews(layout);
+ }
+
+ private void findViews(View layout) {
+ text = layout.findViewById(R.id.levelbutton_textview);
+ text.setTypeface(gameActivity.getTypeface());
+ star1 = layout.findViewById(R.id.levelbutton_star1);
+ star2 = layout.findViewById(R.id.levelbutton_star2);
+ star3 = layout.findViewById(R.id.levelbutton_star3);
+ energy = layout.findViewById(R.id.levelbutton_energy);
+ lockImage = layout.findViewById(R.id.levelbutton_lock);
+ }
+
+ public void init(Level level) {
+ this.level = level;
+ setLockVisible(level.isLocked());
+ text.setText(gameActivity.getString(R.string.level_button_format_d, level.getId()));
+ showCollectedCurrency(level.getCollectedStars(), level.isEnergyCollected());
+ }
+
+ private void setLockVisible(boolean locked) {
+ int visibility = locked ? View.VISIBLE : View.GONE;
+ lockImage.setVisibility(visibility);
+ }
+
+ private void showCollectedCurrency(boolean[] stars, boolean energy) {
+ if (stars[0])
+ this.star1.setImageResource(R.drawable.currency_star);
+ if (stars[1])
+ this.star2.setImageResource(R.drawable.currency_star);
+ if (stars[2])
+ this.star3.setImageResource(R.drawable.currency_star);
+ if (energy)
+ this.energy.setImageResource(R.drawable.currency_energy);
+ }
+
+ public Level getLevel() {
+ return level;
+ }
+
+ public View getView() {
+ return layout;
+ }
+
+ @Override
+ public void onClick(View v) {
+ clickListener.onClick(this);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/LevelButtonOnClickListener.java b/app/src/main/java/de/frajul/endlessroll/views/LevelButtonOnClickListener.java
index c739505..56eb246 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/LevelButtonOnClickListener.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/LevelButtonOnClickListener.java
@@ -1,18 +1,18 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-/**
- * Created by Julian on 04.11.2017.
- */
-
-public interface LevelButtonOnClickListener {
-
- void onClick(LevelButton levelButton);
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+/**
+ * Created by Julian on 04.11.2017.
+ */
+
+public interface LevelButtonOnClickListener {
+
+ void onClick(LevelButton levelButton);
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/LevelupMessage.java b/app/src/main/java/de/frajul/endlessroll/views/LevelupMessage.java
index 780b990..de69079 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/LevelupMessage.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/LevelupMessage.java
@@ -1,85 +1,85 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.graphics.Typeface;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.screens.Screen;
-import de.frajul.endlessroll.user.LevelBounty;
-
-/**
- * Created by Julian on 15.07.2016.
- */
-public class LevelupMessage implements View.OnClickListener, BountyMessage.ScreenSwitchCaller {
-
- private GameActivity gameActivity;
- private RelativeLayout layout;
-
- private TextView levelView;
- private LinearLayout unlockMessages;
-
- public LevelupMessage(GameActivity gameActivity) {
- this.gameActivity = gameActivity;
-
- Typeface typeface = gameActivity.getTypeface();
- LayoutInflater inflater = LayoutInflater.from(gameActivity);
- layout = (RelativeLayout) inflater.inflate(R.layout.levelup_message, null);
- layout.setOnClickListener(this);
- layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
- layout.setVisibility(View.GONE);
- levelView = layout.findViewById(R.id.levelup_level);
- levelView.setTypeface(typeface);
- TextView text = layout.findViewById(R.id.levelup_text);
- text.setTypeface(typeface);
- unlockMessages = layout.findViewById(R.id.levelup_unlocklist);
- }
-
- public void show(int level) {
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- params.setMargins(0, 5, 0, 5);
-
- levelView.setText(level + "");
-
- LevelBounty bounty = gameActivity.getUser().getLevelUpBounties().get(level);
- if (bounty != null)
- for (BountyMessage message : bounty.createBountyMessages(gameActivity, this))
- unlockMessages.addView(message.getLayout(), params);
-
- layout.setVisibility(View.VISIBLE);
- }
-
- private void hide() {
- layout.setVisibility(View.GONE);
- unlockMessages.removeAllViews();
- }
-
- public RelativeLayout getLayout() {
- return layout;
- }
-
- @Override
- public void onClick(View v) {
- hide();
- }
-
-
- @Override
- public void switchScreen(Screen.ScreenType screenType) {
- gameActivity.flipToScreen(screenType);
- hide();
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.graphics.Typeface;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.screens.Screen;
+import de.frajul.endlessroll.user.LevelBounty;
+
+/**
+ * Created by Julian on 15.07.2016.
+ */
+public class LevelupMessage implements View.OnClickListener, BountyMessage.ScreenSwitchCaller {
+
+ private GameActivity gameActivity;
+ private RelativeLayout layout;
+
+ private TextView levelView;
+ private LinearLayout unlockMessages;
+
+ public LevelupMessage(GameActivity gameActivity) {
+ this.gameActivity = gameActivity;
+
+ Typeface typeface = gameActivity.getTypeface();
+ LayoutInflater inflater = LayoutInflater.from(gameActivity);
+ layout = (RelativeLayout) inflater.inflate(R.layout.levelup_message, null);
+ layout.setOnClickListener(this);
+ layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+ layout.setVisibility(View.GONE);
+ levelView = layout.findViewById(R.id.levelup_level);
+ levelView.setTypeface(typeface);
+ TextView text = layout.findViewById(R.id.levelup_text);
+ text.setTypeface(typeface);
+ unlockMessages = layout.findViewById(R.id.levelup_unlocklist);
+ }
+
+ public void show(int level) {
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(0, 5, 0, 5);
+
+ levelView.setText(level + "");
+
+ LevelBounty bounty = gameActivity.getUser().getLevelUpBounties().get(level);
+ if (bounty != null)
+ for (BountyMessage message : bounty.createBountyMessages(gameActivity, this))
+ unlockMessages.addView(message.getLayout(), params);
+
+ layout.setVisibility(View.VISIBLE);
+ }
+
+ private void hide() {
+ layout.setVisibility(View.GONE);
+ unlockMessages.removeAllViews();
+ }
+
+ public RelativeLayout getLayout() {
+ return layout;
+ }
+
+ @Override
+ public void onClick(View v) {
+ hide();
+ }
+
+
+ @Override
+ public void switchScreen(Screen.ScreenType screenType) {
+ gameActivity.flipToScreen(screenType);
+ hide();
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/PlayerShapeButton.java b/app/src/main/java/de/frajul/endlessroll/views/PlayerShapeButton.java
index 7b7999e..f863486 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/PlayerShapeButton.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/PlayerShapeButton.java
@@ -1,76 +1,76 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.widget.Button;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.entities.shapes.PlayerShapeButtonOnClickListener;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 22.10.2017.
- */
-
-public class PlayerShapeButton implements View.OnClickListener {
-
- private PlayerShape playerShape;
- private PlayerShapeButtonOnClickListener clickListener;
-
- private View view;
- private Button button;
- private Animation rotation;
-
- private boolean locked;
-
- public PlayerShapeButton(GameActivity gameActivity, PlayerShape playerShape, PlayerShapeButtonOnClickListener clickListener, boolean locked) {
- this.clickListener = clickListener;
- this.playerShape = playerShape;
- this.locked = locked;
- view = LayoutInflater.from(gameActivity).inflate(R.layout.shape_button, null);
- TextView textView = view.findViewById(R.id.shape_button_textview);
- textView.setTypeface(gameActivity.getTypeface());
- textView.setText(locked ? R.string.playershape_name_locked : playerShape.getNameId());
- button = view.findViewById(R.id.shape_button_button);
- button.setBackgroundDrawable(
- gameActivity.getResources().getDrawable(locked ? R.drawable.playershapes_locked : playerShape.getDrawableId()));
- button.setOnClickListener(this);
- rotation = AnimationUtils.loadAnimation(gameActivity, R.anim.shape_button_rotation);
- }
-
- public void startRotating() {
- button.startAnimation(rotation);
- }
-
- public void stopRotating() {
- button.clearAnimation();
- }
-
- @Override
- public void onClick(View v) {
- clickListener.onClick(this);
- }
-
- public View getView() {
- return view;
- }
-
- public boolean isLocked() {
- return locked;
- }
-
- public PlayerShape getPlayerShape() {
- return playerShape;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.Button;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.entities.shapes.PlayerShapeButtonOnClickListener;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 22.10.2017.
+ */
+
+public class PlayerShapeButton implements View.OnClickListener {
+
+ private PlayerShape playerShape;
+ private PlayerShapeButtonOnClickListener clickListener;
+
+ private View view;
+ private Button button;
+ private Animation rotation;
+
+ private boolean locked;
+
+ public PlayerShapeButton(GameActivity gameActivity, PlayerShape playerShape, PlayerShapeButtonOnClickListener clickListener, boolean locked) {
+ this.clickListener = clickListener;
+ this.playerShape = playerShape;
+ this.locked = locked;
+ view = LayoutInflater.from(gameActivity).inflate(R.layout.shape_button, null);
+ TextView textView = view.findViewById(R.id.shape_button_textview);
+ textView.setTypeface(gameActivity.getTypeface());
+ textView.setText(locked ? R.string.playershape_name_locked : playerShape.getNameId());
+ button = view.findViewById(R.id.shape_button_button);
+ button.setBackgroundDrawable(
+ gameActivity.getResources().getDrawable(locked ? R.drawable.playershapes_locked : playerShape.getDrawableId()));
+ button.setOnClickListener(this);
+ rotation = AnimationUtils.loadAnimation(gameActivity, R.anim.shape_button_rotation);
+ }
+
+ public void startRotating() {
+ button.startAnimation(rotation);
+ }
+
+ public void stopRotating() {
+ button.clearAnimation();
+ }
+
+ @Override
+ public void onClick(View v) {
+ clickListener.onClick(this);
+ }
+
+ public View getView() {
+ return view;
+ }
+
+ public boolean isLocked() {
+ return locked;
+ }
+
+ public PlayerShape getPlayerShape() {
+ return playerShape;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/PriceButton.java b/app/src/main/java/de/frajul/endlessroll/views/PriceButton.java
index 1bfe5df..df82152 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/PriceButton.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/PriceButton.java
@@ -1,67 +1,67 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.content.Context;
-import android.graphics.Typeface;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
-import android.view.View;
-import android.view.animation.Animation;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-
-/**
- * Created by Julian on 01.08.2016.
- */
-public class PriceButton {
-
- private Context context;
-
- private View layout;
- private TextView title;
- private TextView price;
- private ImageView currencyView;
-
- public PriceButton(Context context, Typeface typeface, View layout, View.OnClickListener onClickListener) {
- this.context = context;
- this.layout = layout;
- layout.setOnClickListener(onClickListener);
-
- title = layout.findViewById(R.id.price_button_title);
- title.setTypeface(typeface);
- price = layout.findViewById(R.id.price_button_price);
- price.setTypeface(typeface);
- currencyView = layout.findViewById(R.id.price_button_currency);
- }
-
- public void init(@StringRes int title, int price, @DrawableRes int currencyDrawable) {
- this.title.setText(title);
- this.price.setText(price + "");
- this.currencyView.setImageDrawable(context.getResources().getDrawable(currencyDrawable));
- }
-
- public void setLayoutEnabled(boolean enabled) {
- layout.setEnabled(enabled);
- }
-
- public void setLayoutVisible(int visibility) {
- layout.setVisibility(visibility);
- }
-
- public void startAnimation(Animation animation) {
- layout.startAnimation(animation);
- }
-
- public void clearAnimation() {
- layout.clearAnimation();
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.content.Context;
+import android.graphics.Typeface;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
+import android.view.View;
+import android.view.animation.Animation;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+
+/**
+ * Created by Julian on 01.08.2016.
+ */
+public class PriceButton {
+
+ private Context context;
+
+ private View layout;
+ private TextView title;
+ private TextView price;
+ private ImageView currencyView;
+
+ public PriceButton(Context context, Typeface typeface, View layout, View.OnClickListener onClickListener) {
+ this.context = context;
+ this.layout = layout;
+ layout.setOnClickListener(onClickListener);
+
+ title = layout.findViewById(R.id.price_button_title);
+ title.setTypeface(typeface);
+ price = layout.findViewById(R.id.price_button_price);
+ price.setTypeface(typeface);
+ currencyView = layout.findViewById(R.id.price_button_currency);
+ }
+
+ public void init(@StringRes int title, int price, @DrawableRes int currencyDrawable) {
+ this.title.setText(title);
+ this.price.setText(price + "");
+ this.currencyView.setImageDrawable(context.getResources().getDrawable(currencyDrawable));
+ }
+
+ public void setLayoutEnabled(boolean enabled) {
+ layout.setEnabled(enabled);
+ }
+
+ public void setLayoutVisible(int visibility) {
+ layout.setVisibility(visibility);
+ }
+
+ public void startAnimation(Animation animation) {
+ layout.startAnimation(animation);
+ }
+
+ public void clearAnimation() {
+ layout.clearAnimation();
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/ShapeInspector.java b/app/src/main/java/de/frajul/endlessroll/views/ShapeInspector.java
index 21566e1..636a6c1 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/ShapeInspector.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/ShapeInspector.java
@@ -1,53 +1,53 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.graphics.Typeface;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 03.06.2017.
- */
-
-public class ShapeInspector {
-
- private GameActivity gameActivity;
-
- private TextView title;
- private ImageView imageView;
- private TextView description;
- private ShapeInspectorCheckbox checkbox;
-
- public ShapeInspector(GameActivity gameActivity, View layout) {
- this.gameActivity = gameActivity;
- Typeface typeface = gameActivity.getTypeface();
- title = layout.findViewById(R.id.shape_inspector_title);
- title.setTypeface(typeface);
- imageView = layout.findViewById(R.id.shape_inspector_imageview);
- description = layout.findViewById(R.id.shape_inspector_description);
- description.setTypeface(typeface);
- checkbox = new ShapeInspectorCheckbox(gameActivity, typeface,
- layout.findViewById(R.id.shape_inspector_check_box));
- }
-
- public void update(PlayerShape shape, boolean locked) {
- title.setText(locked ? R.string.playershape_name_locked : shape.getNameId());
- imageView.setImageDrawable(gameActivity.getResources()
- .getDrawable(locked ? R.drawable.playershapes_locked : shape.getDrawableId()));
- description.setText(
- locked ? R.string.playershape_description_locked : shape.getDescriptionId());
-
- checkbox.updateForTask(shape.getUnlockTask());
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.graphics.Typeface;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 03.06.2017.
+ */
+
+public class ShapeInspector {
+
+ private GameActivity gameActivity;
+
+ private TextView title;
+ private ImageView imageView;
+ private TextView description;
+ private ShapeInspectorCheckbox checkbox;
+
+ public ShapeInspector(GameActivity gameActivity, View layout) {
+ this.gameActivity = gameActivity;
+ Typeface typeface = gameActivity.getTypeface();
+ title = layout.findViewById(R.id.shape_inspector_title);
+ title.setTypeface(typeface);
+ imageView = layout.findViewById(R.id.shape_inspector_imageview);
+ description = layout.findViewById(R.id.shape_inspector_description);
+ description.setTypeface(typeface);
+ checkbox = new ShapeInspectorCheckbox(gameActivity, typeface,
+ layout.findViewById(R.id.shape_inspector_check_box));
+ }
+
+ public void update(PlayerShape shape, boolean locked) {
+ title.setText(locked ? R.string.playershape_name_locked : shape.getNameId());
+ imageView.setImageDrawable(gameActivity.getResources()
+ .getDrawable(locked ? R.drawable.playershapes_locked : shape.getDrawableId()));
+ description.setText(
+ locked ? R.string.playershape_description_locked : shape.getDescriptionId());
+
+ checkbox.updateForTask(shape.getUnlockTask());
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/ShapeInspectorCheckbox.java b/app/src/main/java/de/frajul/endlessroll/views/ShapeInspectorCheckbox.java
index bc52471..e667037 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/ShapeInspectorCheckbox.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/ShapeInspectorCheckbox.java
@@ -1,57 +1,57 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.graphics.Typeface;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.shapes.EmptyTask;
-import de.frajul.endlessroll.entities.shapes.Task;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 30.10.2017.
- */
-
-public class ShapeInspectorCheckbox {
-
- private GameActivity gameActivity;
- private View layout;
- private ImageView image;
- private TextView textView;
-
- public ShapeInspectorCheckbox(GameActivity gameActivity, Typeface typeface, View layout) {
- this.gameActivity = gameActivity;
- this.layout = layout;
- image = layout.findViewById(R.id.shape_inspector_check_box_image);
- textView = layout.findViewById(R.id.shape_inspector_check_box_text);
- textView.setTypeface(typeface);
- }
-
- public void updateForTask(Task task) {
- boolean taskNotEmpty = !(task instanceof EmptyTask);
- setVisible(taskNotEmpty);
- if (taskNotEmpty) {
- textView.setText(task.toString(gameActivity, gameActivity.getLevelManager()));
- setChecked(task.isConditionFulfilled());
- }
- }
-
- private void setChecked(boolean checked) {
- int drawableId = checked ? R.drawable.guis_checkbox_checked : R.drawable.guis_checkbox_unchecked;
- image.setBackgroundDrawable(gameActivity.getResources().getDrawable(drawableId));
- }
-
- private void setVisible(boolean visible) {
- layout.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.graphics.Typeface;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.shapes.EmptyTask;
+import de.frajul.endlessroll.entities.shapes.Task;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 30.10.2017.
+ */
+
+public class ShapeInspectorCheckbox {
+
+ private GameActivity gameActivity;
+ private View layout;
+ private ImageView image;
+ private TextView textView;
+
+ public ShapeInspectorCheckbox(GameActivity gameActivity, Typeface typeface, View layout) {
+ this.gameActivity = gameActivity;
+ this.layout = layout;
+ image = layout.findViewById(R.id.shape_inspector_check_box_image);
+ textView = layout.findViewById(R.id.shape_inspector_check_box_text);
+ textView.setTypeface(typeface);
+ }
+
+ public void updateForTask(Task task) {
+ boolean taskNotEmpty = !(task instanceof EmptyTask);
+ setVisible(taskNotEmpty);
+ if (taskNotEmpty) {
+ textView.setText(task.toString(gameActivity, gameActivity.getLevelManager()));
+ setChecked(task.isConditionFulfilled());
+ }
+ }
+
+ private void setChecked(boolean checked) {
+ int drawableId = checked ? R.drawable.guis_checkbox_checked : R.drawable.guis_checkbox_unchecked;
+ image.setBackgroundDrawable(gameActivity.getResources().getDrawable(drawableId));
+ }
+
+ private void setVisible(boolean visible) {
+ layout.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/ShortMenu.java b/app/src/main/java/de/frajul/endlessroll/views/ShortMenu.java
index ee30de3..1a336e5 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/ShortMenu.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/ShortMenu.java
@@ -1,127 +1,127 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.content.Context;
-import android.graphics.Typeface;
-import android.view.View;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import java.util.Random;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.game.Game;
-import de.frajul.endlessroll.main.screens.GameScreen;
-
-/**
- * Created by Julian on 23.01.2016.
- */
-public class ShortMenu implements View.OnClickListener {
-
- private Game game;
- private Random random;
- private Animation slideLeft;
- private Animation slideRight;
- private Animation slideTop;
-
- private View layout;
- private TopBar topBar;
- private TextView continueView;
- private TextView restartView;
- private TextView exitView;
-
- private LinearLayout photoModeLayout;
- private CheckBox photoModeShowToolbar;
- private Button photoModeActivate;
-
- public ShortMenu(final Game game, GameScreen gameScreen, GameActivity gameActivity, View layout) {
- this.game = game;
- this.layout = layout;
- Typeface typeface = gameActivity.getTypeface();
- topBar = new TopBar(gameActivity, gameScreen,
- layout.findViewById(R.id.shortmenu_topbar));
- continueView = layout.findViewById(R.id.shortmenu_continue);
- continueView.setTypeface(typeface);
- continueView.setOnClickListener(this);
- restartView = layout.findViewById(R.id.shortmenu_restart);
- restartView.setTypeface(typeface);
- restartView.setOnClickListener(this);
- exitView = layout.findViewById(R.id.shortmenu_exit);
- exitView.setTypeface(typeface);
- exitView.setOnClickListener(this);
-
- photoModeLayout = layout.findViewById(R.id.shortmenu_photo_mode_panel);
- photoModeShowToolbar = photoModeLayout.findViewById(R.id.photo_mode_panel_show_toolbar);
- photoModeActivate = photoModeLayout.findViewById(R.id.photo_mode_panel_activate);
- photoModeActivate.setOnClickListener(this);
- photoModeLayout.setVisibility(GameActivity.IS_DEVELOPER ? View.VISIBLE : View.GONE);
-
- random = new Random();
- Context context = game.getContext();
- slideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_in_left);
- slideRight = AnimationUtils.loadAnimation(context, R.anim.slide_in_right);
- slideTop = AnimationUtils.loadAnimation(context, R.anim.slide_in_top);
- }
-
- public void startAnims() {
- startRandomAnimation(continueView);
- startRandomAnimation(restartView);
- startRandomAnimation(exitView);
- topBar.startAnimation(slideTop);
- }
-
- public void setVisible(boolean visible) {
- layout.setVisibility(visible ? View.VISIBLE : View.GONE);
- if (visible)
- topBar.update();
- }
-
- public boolean isVisible() {
- return layout.getVisibility() == View.VISIBLE;
- }
-
- public void prepareToBeShown() {
- topBar.update();
- }
-
- private void startRandomAnimation(View view) {
- float r = random.nextFloat();
- if (r >= 0.5)
- view.startAnimation(slideRight);
- else
- view.startAnimation(slideLeft);
- }
-
- public void deactivatePhotoMode(){
- layout.setVisibility(View.VISIBLE);
- }
-
- @Override
- public void onClick(View v) {
- if (v.equals(continueView)) {
- setVisible(false);
- game.continueGame();
- } else if (v.equals(restartView)) {
- setVisible(false);
- game.restartLevel();
- } else if (v.equals(exitView)) {
- setVisible(false);
- game.toLevelsScreen();
- } else if(v.equals(photoModeActivate)){
- boolean showToolBar = photoModeShowToolbar.isChecked();
- layout.setVisibility(View.INVISIBLE);
- game.startPhotoMode(showToolBar);
- }
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.content.Context;
+import android.graphics.Typeface;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import java.util.Random;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.game.Game;
+import de.frajul.endlessroll.main.screens.GameScreen;
+
+/**
+ * Created by Julian on 23.01.2016.
+ */
+public class ShortMenu implements View.OnClickListener {
+
+ private Game game;
+ private Random random;
+ private Animation slideLeft;
+ private Animation slideRight;
+ private Animation slideTop;
+
+ private View layout;
+ private TopBar topBar;
+ private TextView continueView;
+ private TextView restartView;
+ private TextView exitView;
+
+ private LinearLayout photoModeLayout;
+ private CheckBox photoModeShowToolbar;
+ private Button photoModeActivate;
+
+ public ShortMenu(final Game game, GameScreen gameScreen, GameActivity gameActivity, View layout) {
+ this.game = game;
+ this.layout = layout;
+ Typeface typeface = gameActivity.getTypeface();
+ topBar = new TopBar(gameActivity, gameScreen,
+ layout.findViewById(R.id.shortmenu_topbar));
+ continueView = layout.findViewById(R.id.shortmenu_continue);
+ continueView.setTypeface(typeface);
+ continueView.setOnClickListener(this);
+ restartView = layout.findViewById(R.id.shortmenu_restart);
+ restartView.setTypeface(typeface);
+ restartView.setOnClickListener(this);
+ exitView = layout.findViewById(R.id.shortmenu_exit);
+ exitView.setTypeface(typeface);
+ exitView.setOnClickListener(this);
+
+ photoModeLayout = layout.findViewById(R.id.shortmenu_photo_mode_panel);
+ photoModeShowToolbar = photoModeLayout.findViewById(R.id.photo_mode_panel_show_toolbar);
+ photoModeActivate = photoModeLayout.findViewById(R.id.photo_mode_panel_activate);
+ photoModeActivate.setOnClickListener(this);
+ photoModeLayout.setVisibility(GameActivity.IS_DEVELOPER ? View.VISIBLE : View.GONE);
+
+ random = new Random();
+ Context context = game.getContext();
+ slideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_in_left);
+ slideRight = AnimationUtils.loadAnimation(context, R.anim.slide_in_right);
+ slideTop = AnimationUtils.loadAnimation(context, R.anim.slide_in_top);
+ }
+
+ public void startAnims() {
+ startRandomAnimation(continueView);
+ startRandomAnimation(restartView);
+ startRandomAnimation(exitView);
+ topBar.startAnimation(slideTop);
+ }
+
+ public void setVisible(boolean visible) {
+ layout.setVisibility(visible ? View.VISIBLE : View.GONE);
+ if (visible)
+ topBar.update();
+ }
+
+ public boolean isVisible() {
+ return layout.getVisibility() == View.VISIBLE;
+ }
+
+ public void prepareToBeShown() {
+ topBar.update();
+ }
+
+ private void startRandomAnimation(View view) {
+ float r = random.nextFloat();
+ if (r >= 0.5)
+ view.startAnimation(slideRight);
+ else
+ view.startAnimation(slideLeft);
+ }
+
+ public void deactivatePhotoMode(){
+ layout.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v.equals(continueView)) {
+ setVisible(false);
+ game.continueGame();
+ } else if (v.equals(restartView)) {
+ setVisible(false);
+ game.restartLevel();
+ } else if (v.equals(exitView)) {
+ setVisible(false);
+ game.toLevelsScreen();
+ } else if(v.equals(photoModeActivate)){
+ boolean showToolBar = photoModeShowToolbar.isChecked();
+ layout.setVisibility(View.INVISIBLE);
+ game.startPhotoMode(showToolBar);
+ }
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/TaskCompletedMessage.java b/app/src/main/java/de/frajul/endlessroll/views/TaskCompletedMessage.java
index da70dee..b9f40aa 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/TaskCompletedMessage.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/TaskCompletedMessage.java
@@ -1,83 +1,83 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-import java.util.List;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.shapes.PlayerShape;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.screens.Screen;
-
-/**
- * Created by Julian on 15.07.2016.
- */
-public class TaskCompletedMessage implements View.OnClickListener, BountyMessage.ScreenSwitchCaller {
-
- private GameActivity gameActivity;
- private View layout;
-
- private LinearLayout messagesLayout;
-
- public TaskCompletedMessage(GameActivity gameActivity) {
- this.gameActivity = gameActivity;
-
- LayoutInflater inflater = LayoutInflater.from(gameActivity);
- layout = inflater.inflate(R.layout.task_completed_message, null);
- layout.setOnClickListener(this);
- layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT));
- layout.setVisibility(View.GONE);
- messagesLayout = layout.findViewById(R.id.task_completed_unlock_list);
- }
-
- public void show(List shapes) {
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- params.setMargins(0, 8, 0, 8);
-
- for (PlayerShape shape : shapes)
- addShapeMessage(shape, params);
- layout.setVisibility(View.VISIBLE);
- }
-
- private void addShapeMessage(PlayerShape shape, LinearLayout.LayoutParams params) {
- BountyMessage message = createBountyMessage(shape);
- messagesLayout.addView(message.getLayout(), params);
- }
-
- private BountyMessage createBountyMessage(PlayerShape shape) {
- BountyMessage bountyMessage = new BountyMessage(gameActivity, BountyMessage.MessageType.SHAPE_UNLOCKED, null, this,
- shape.getDrawableId());
- return bountyMessage;
- }
-
- private void hide() {
- layout.setVisibility(View.GONE);
- messagesLayout.removeAllViews();
- }
-
- public View getLayout() {
- return layout;
- }
-
- @Override
- public void onClick(View v) {
- hide();
- }
-
- @Override
- public void switchScreen(Screen.ScreenType screenType) {
- gameActivity.flipToScreen(screenType);
- hide();
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import java.util.List;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.shapes.PlayerShape;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.screens.Screen;
+
+/**
+ * Created by Julian on 15.07.2016.
+ */
+public class TaskCompletedMessage implements View.OnClickListener, BountyMessage.ScreenSwitchCaller {
+
+ private GameActivity gameActivity;
+ private View layout;
+
+ private LinearLayout messagesLayout;
+
+ public TaskCompletedMessage(GameActivity gameActivity) {
+ this.gameActivity = gameActivity;
+
+ LayoutInflater inflater = LayoutInflater.from(gameActivity);
+ layout = inflater.inflate(R.layout.task_completed_message, null);
+ layout.setOnClickListener(this);
+ layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT));
+ layout.setVisibility(View.GONE);
+ messagesLayout = layout.findViewById(R.id.task_completed_unlock_list);
+ }
+
+ public void show(List shapes) {
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(0, 8, 0, 8);
+
+ for (PlayerShape shape : shapes)
+ addShapeMessage(shape, params);
+ layout.setVisibility(View.VISIBLE);
+ }
+
+ private void addShapeMessage(PlayerShape shape, LinearLayout.LayoutParams params) {
+ BountyMessage message = createBountyMessage(shape);
+ messagesLayout.addView(message.getLayout(), params);
+ }
+
+ private BountyMessage createBountyMessage(PlayerShape shape) {
+ BountyMessage bountyMessage = new BountyMessage(gameActivity, BountyMessage.MessageType.SHAPE_UNLOCKED, null, this,
+ shape.getDrawableId());
+ return bountyMessage;
+ }
+
+ private void hide() {
+ layout.setVisibility(View.GONE);
+ messagesLayout.removeAllViews();
+ }
+
+ public View getLayout() {
+ return layout;
+ }
+
+ @Override
+ public void onClick(View v) {
+ hide();
+ }
+
+ @Override
+ public void switchScreen(Screen.ScreenType screenType) {
+ gameActivity.flipToScreen(screenType);
+ hide();
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/ToolInspector.java b/app/src/main/java/de/frajul/endlessroll/views/ToolInspector.java
index d6351f0..ea7f36d 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/ToolInspector.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/ToolInspector.java
@@ -1,108 +1,108 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.graphics.Typeface;
-import android.view.View;
-import android.view.animation.Animation;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.screens.ToolShopScreen;
-
-/**
- * Created by Julian on 03.06.2017.
- */
-
-public class ToolInspector implements View.OnClickListener {
-
- private GameActivity gameActivity;
- private ToolShopScreen toolShopScreen;
-
- private TextView title;
- private TextView levelView;
- private ImageView imageView;
- private PriceButton priceButton;
- private TextView description;
-
- private ToolType toolType;
- private boolean locked;
-
- public ToolInspector(ToolShopScreen toolShopScreen, GameActivity gameActivity, View layout) {
- this.toolShopScreen = toolShopScreen;
- this.gameActivity = gameActivity;
- Typeface typeface = gameActivity.getTypeface();
- title = layout.findViewById(R.id.tool_inspector_title);
- title.setTypeface(typeface);
- levelView = layout.findViewById(R.id.tool_inspector_level_view);
- levelView.setTypeface(typeface);
- imageView = layout.findViewById(R.id.tool_inspector_imageview);
- priceButton = new PriceButton(gameActivity, typeface,
- layout.findViewById(R.id.tool_inspector_pricebutton), this);
- description = layout.findViewById(R.id.tool_inspector_description);
- description.setTypeface(typeface);
- }
-
- public void update(ToolType toolType, boolean locked) {
- this.toolType = toolType;
- this.locked = locked;
- title.setText(locked ? R.string.tool_name_locked : toolType.getName());
- levelView.setText(gameActivity
- .getString(R.string.tool_level_format_d, toolType.getCurrentUpgradeLevel()));
- levelView.setVisibility(locked ? View.INVISIBLE : View.VISIBLE);
- imageView.setImageDrawable(gameActivity.getResources().getDrawable(
- locked ? R.drawable.tools_button_locked : toolType.getButtonDrawable()));
-
- String descriptionLocked = gameActivity.getString(R.string.tool_description_locked_format_d, gameActivity.getUser().getLevelUpBounties().getLevelToolIsUnlocked(toolType));
- String toolDescription = gameActivity.getString(toolType.getDescription());
- description.setText(locked ? descriptionLocked : toolDescription);
-
- if (!toolType.isBought()) {
- priceButton.init(R.string.price_button_buy, toolType.getBuyPrice(),
- R.drawable.currency_star);
- priceButton.setLayoutVisible(locked ? View.GONE : View.VISIBLE);
- priceButton.setLayoutEnabled(
- toolType.getBuyPrice() <= gameActivity.getUser().getStarCount());
- } else {
- priceButton.init(R.string.price_button_upgrade, toolType.getUpgradePrice(),
- R.drawable.currency_energy);
- priceButton.setLayoutVisible(toolType.isAtMaxUpgradeLevel() ? View.GONE : View.VISIBLE);
- priceButton.setLayoutEnabled(
- toolType.getUpgradePrice() <= gameActivity.getUser().getEnergyCount());
- }
- }
-
- private void onToolUpgraded(int price) {
- toolType.upgrade();
- toolShopScreen.onToolUpgraded(price);
- update(toolType, locked);
- }
-
- @Override
- public void onClick(View v) {
- if (!toolType.isBought()) {
- toolType.setBought(true);
- update(toolType, locked);
- toolShopScreen.onToolBought(toolType.getBuyPrice(), toolType);
- } else {
- onToolUpgraded(toolType.getUpgradePrice());
- }
- }
-
- public void startPriceButtonAnimation(Animation animation) {
- priceButton.startAnimation(animation);
- }
-
- public void clearPriceButtonAnimation() {
- priceButton.clearAnimation();
- }
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.graphics.Typeface;
+import android.view.View;
+import android.view.animation.Animation;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.screens.ToolShopScreen;
+
+/**
+ * Created by Julian on 03.06.2017.
+ */
+
+public class ToolInspector implements View.OnClickListener {
+
+ private GameActivity gameActivity;
+ private ToolShopScreen toolShopScreen;
+
+ private TextView title;
+ private TextView levelView;
+ private ImageView imageView;
+ private PriceButton priceButton;
+ private TextView description;
+
+ private ToolType toolType;
+ private boolean locked;
+
+ public ToolInspector(ToolShopScreen toolShopScreen, GameActivity gameActivity, View layout) {
+ this.toolShopScreen = toolShopScreen;
+ this.gameActivity = gameActivity;
+ Typeface typeface = gameActivity.getTypeface();
+ title = layout.findViewById(R.id.tool_inspector_title);
+ title.setTypeface(typeface);
+ levelView = layout.findViewById(R.id.tool_inspector_level_view);
+ levelView.setTypeface(typeface);
+ imageView = layout.findViewById(R.id.tool_inspector_imageview);
+ priceButton = new PriceButton(gameActivity, typeface,
+ layout.findViewById(R.id.tool_inspector_pricebutton), this);
+ description = layout.findViewById(R.id.tool_inspector_description);
+ description.setTypeface(typeface);
+ }
+
+ public void update(ToolType toolType, boolean locked) {
+ this.toolType = toolType;
+ this.locked = locked;
+ title.setText(locked ? R.string.tool_name_locked : toolType.getName());
+ levelView.setText(gameActivity
+ .getString(R.string.tool_level_format_d, toolType.getCurrentUpgradeLevel()));
+ levelView.setVisibility(locked ? View.INVISIBLE : View.VISIBLE);
+ imageView.setImageDrawable(gameActivity.getResources().getDrawable(
+ locked ? R.drawable.tools_button_locked : toolType.getButtonDrawable()));
+
+ String descriptionLocked = gameActivity.getString(R.string.tool_description_locked_format_d, gameActivity.getUser().getLevelUpBounties().getLevelToolIsUnlocked(toolType));
+ String toolDescription = gameActivity.getString(toolType.getDescription());
+ description.setText(locked ? descriptionLocked : toolDescription);
+
+ if (!toolType.isBought()) {
+ priceButton.init(R.string.price_button_buy, toolType.getBuyPrice(),
+ R.drawable.currency_star);
+ priceButton.setLayoutVisible(locked ? View.GONE : View.VISIBLE);
+ priceButton.setLayoutEnabled(
+ toolType.getBuyPrice() <= gameActivity.getUser().getStarCount());
+ } else {
+ priceButton.init(R.string.price_button_upgrade, toolType.getUpgradePrice(),
+ R.drawable.currency_energy);
+ priceButton.setLayoutVisible(toolType.isAtMaxUpgradeLevel() ? View.GONE : View.VISIBLE);
+ priceButton.setLayoutEnabled(
+ toolType.getUpgradePrice() <= gameActivity.getUser().getEnergyCount());
+ }
+ }
+
+ private void onToolUpgraded(int price) {
+ toolType.upgrade();
+ toolShopScreen.onToolUpgraded(price);
+ update(toolType, locked);
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (!toolType.isBought()) {
+ toolType.setBought(true);
+ update(toolType, locked);
+ toolShopScreen.onToolBought(toolType.getBuyPrice(), toolType);
+ } else {
+ onToolUpgraded(toolType.getUpgradePrice());
+ }
+ }
+
+ public void startPriceButtonAnimation(Animation animation) {
+ priceButton.startAnimation(animation);
+ }
+
+ public void clearPriceButtonAnimation() {
+ priceButton.clearAnimation();
+ }
+
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/ToolOfferSlot.java b/app/src/main/java/de/frajul/endlessroll/views/ToolOfferSlot.java
index b70e0b3..d933c65 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/ToolOfferSlot.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/ToolOfferSlot.java
@@ -1,108 +1,108 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.content.Context;
-import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.GradientDrawable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.entities.tools.ToolType;
-import de.frajul.endlessroll.main.screens.ToolShopScreen;
-
-/**
- * Created by Julian on 16.07.2016.
- */
-public class ToolOfferSlot implements View.OnClickListener {
-
- private ToolShopScreen toolShopScreen;
- private ToolType toolType;
- private boolean locked;
- private boolean selected;
-
- private int colorDisabled;
- private int colorDisabledSelected;
- private int colorEnabled;
- private int colorEnabledSelected;
-
- private LinearLayout layout;
- private TextView title;
- private ImageView image;
-
- public ToolOfferSlot(ToolShopScreen toolShopScreen, Context context, Typeface typeface, ToolType toolType) {
- this.toolShopScreen = toolShopScreen;
- this.toolType = toolType;
- LayoutInflater inflater = LayoutInflater.from(context);
- layout = (LinearLayout) inflater.inflate(R.layout.tool_offer_slot, null);
- layout.setOnClickListener(this);
- FrameLayout slotLayout = layout.findViewById(R.id.toolofferslot_slot);
- title = layout.findViewById(R.id.toolofferslot_title);
- title.setTypeface(typeface);
- image = slotLayout.findViewById(R.id.toolslot_image);
- image.setBackgroundDrawable(createImageBackground());
-
- colorDisabled = context.getResources().getColor(R.color.toolslotDisabled);
- colorDisabledSelected = context.getResources().getColor(R.color.toolslotDisabledSelected);
- colorEnabled = context.getResources().getColor(R.color.toolslotEnabled);
- colorEnabledSelected = context.getResources().getColor(R.color.toolslotEnabledSelected);
- }
-
- private Drawable createImageBackground() {
- GradientDrawable gd = new GradientDrawable();
- gd.setCornerRadius(10);
- return gd;
- }
-
- public void setLocked(boolean locked) {
- this.locked = locked;
- if (locked) {
- title.setText(R.string.tool_name_locked);
- image.setImageResource(R.drawable.tools_button_locked);
- } else {
- title.setText(toolType.getName());
- image.setImageResource(toolType.getButtonDrawable());
- }
- }
-
- public void updateBackgroundColor() {
- GradientDrawable gd = (GradientDrawable) image.getBackground();
- if (toolType.isBought())
- gd.setColor(selected ? colorEnabledSelected : colorEnabled);
- else
- gd.setColor(selected ? colorDisabledSelected : colorDisabled);
- }
-
- public void setSelected(boolean selected) {
- this.selected = selected;
- updateBackgroundColor();
- }
-
- public boolean isLocked() {
- return locked;
- }
-
- public ToolType getToolType() {
- return toolType;
- }
-
- public LinearLayout getLayout() {
- return layout;
- }
-
- @Override
- public void onClick(View v) {
- toolShopScreen.onToolOfferSlotSelected(this);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.content.Context;
+import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.GradientDrawable;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.entities.tools.ToolType;
+import de.frajul.endlessroll.main.screens.ToolShopScreen;
+
+/**
+ * Created by Julian on 16.07.2016.
+ */
+public class ToolOfferSlot implements View.OnClickListener {
+
+ private ToolShopScreen toolShopScreen;
+ private ToolType toolType;
+ private boolean locked;
+ private boolean selected;
+
+ private int colorDisabled;
+ private int colorDisabledSelected;
+ private int colorEnabled;
+ private int colorEnabledSelected;
+
+ private LinearLayout layout;
+ private TextView title;
+ private ImageView image;
+
+ public ToolOfferSlot(ToolShopScreen toolShopScreen, Context context, Typeface typeface, ToolType toolType) {
+ this.toolShopScreen = toolShopScreen;
+ this.toolType = toolType;
+ LayoutInflater inflater = LayoutInflater.from(context);
+ layout = (LinearLayout) inflater.inflate(R.layout.tool_offer_slot, null);
+ layout.setOnClickListener(this);
+ FrameLayout slotLayout = layout.findViewById(R.id.toolofferslot_slot);
+ title = layout.findViewById(R.id.toolofferslot_title);
+ title.setTypeface(typeface);
+ image = slotLayout.findViewById(R.id.toolslot_image);
+ image.setBackgroundDrawable(createImageBackground());
+
+ colorDisabled = context.getResources().getColor(R.color.toolslotDisabled);
+ colorDisabledSelected = context.getResources().getColor(R.color.toolslotDisabledSelected);
+ colorEnabled = context.getResources().getColor(R.color.toolslotEnabled);
+ colorEnabledSelected = context.getResources().getColor(R.color.toolslotEnabledSelected);
+ }
+
+ private Drawable createImageBackground() {
+ GradientDrawable gd = new GradientDrawable();
+ gd.setCornerRadius(10);
+ return gd;
+ }
+
+ public void setLocked(boolean locked) {
+ this.locked = locked;
+ if (locked) {
+ title.setText(R.string.tool_name_locked);
+ image.setImageResource(R.drawable.tools_button_locked);
+ } else {
+ title.setText(toolType.getName());
+ image.setImageResource(toolType.getButtonDrawable());
+ }
+ }
+
+ public void updateBackgroundColor() {
+ GradientDrawable gd = (GradientDrawable) image.getBackground();
+ if (toolType.isBought())
+ gd.setColor(selected ? colorEnabledSelected : colorEnabled);
+ else
+ gd.setColor(selected ? colorDisabledSelected : colorDisabled);
+ }
+
+ public void setSelected(boolean selected) {
+ this.selected = selected;
+ updateBackgroundColor();
+ }
+
+ public boolean isLocked() {
+ return locked;
+ }
+
+ public ToolType getToolType() {
+ return toolType;
+ }
+
+ public LinearLayout getLayout() {
+ return layout;
+ }
+
+ @Override
+ public void onClick(View v) {
+ toolShopScreen.onToolOfferSlotSelected(this);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/TopBar.java b/app/src/main/java/de/frajul/endlessroll/views/TopBar.java
index 57958b8..b4e279a 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/TopBar.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/TopBar.java
@@ -1,157 +1,157 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.graphics.Typeface;
-import android.view.View;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.widget.Button;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.screens.Screen;
-import de.frajul.endlessroll.user.User;
-
-/**
- * Created by Julian on 08.07.2016.
- */
-public class TopBar implements View.OnClickListener {
-
- private GameActivity gameActivity;
- private View layout;
- private Screen parent;
- private Screen.ScreenType customCallerForScreenSwitch = Screen.ScreenType.NONE;
-
- private Animation starDecreaseAnimation;
- private Animation energyDecreaseAnimation;
- private Animation toolShopPulse;
-
- private TextView levelDisplay;
- private ProgressBar levelProgress;
- private TextView starCount;
- private TextView energyCount;
- private Button backButton;
- private Button settingsButton;
- private Button toolshopButton;
- private Button shapeshopButton;
- private TextView starCountDecrease;
- private TextView energyCountDecrease;
-
- public TopBar(GameActivity gameActivity, Screen parent, View layout) {
- this.gameActivity = gameActivity;
- this.parent = parent;
- this.layout = layout;
-
- starDecreaseAnimation = AnimationUtils.loadAnimation(gameActivity, R.anim.decrease);
- energyDecreaseAnimation = AnimationUtils.loadAnimation(gameActivity, R.anim.decrease);
- toolShopPulse = AnimationUtils.loadAnimation(gameActivity, R.anim.pulse);
-
- Typeface typeface = gameActivity.getTypeface();
- levelDisplay = layout.findViewById(R.id.topbar_leveldisplay);
- levelDisplay.setTypeface(typeface);
- levelProgress = layout.findViewById(R.id.topbar_levelprogress);
- starCount = layout.findViewById(R.id.topbar_starcount);
- starCount.setTypeface(typeface);
- energyCount = layout.findViewById(R.id.topbar_energycount);
- energyCount.setTypeface(typeface);
- backButton = layout.findViewById(R.id.topbar_back_button);
- backButton.setOnClickListener(this);
- settingsButton = layout.findViewById(R.id.topbar_settings);
- settingsButton.setOnClickListener(this);
- toolshopButton = layout.findViewById(R.id.topbar_toolshop);
- toolshopButton.setOnClickListener(this);
- shapeshopButton = layout.findViewById(R.id.topbar_shapeshop);
- shapeshopButton.setOnClickListener(this);
- if (parent.getType() == Screen.ScreenType.SETTINGS)
- settingsButton.setEnabled(false);
- if (parent.getType() == Screen.ScreenType.TOOL_SHOP)
- toolshopButton.setEnabled(false);
- if (parent.getType() == Screen.ScreenType.SHAPE_SHOP)
- shapeshopButton.setEnabled(false);
- if (parent.getType() == Screen.ScreenType.GAME) {
- backButton.setEnabled(false);
- toolshopButton.setEnabled(false);
- shapeshopButton.setEnabled(false);
- }
- starCountDecrease = layout.findViewById(R.id.topbar_starcount_decrease);
- starCountDecrease.setTypeface(typeface);
- energyCountDecrease = layout.findViewById(R.id.topbar_energycount_decrease);
- energyCountDecrease.setTypeface(typeface);
- }
-
- public void setShopsEnabled(boolean enabled) {
- toolshopButton.setEnabled(enabled);
- shapeshopButton.setEnabled(enabled);
- }
-
- public void startAnimation(Animation animation) {
- layout.startAnimation(animation);
- }
-
- public void update() {
- toolshopButton.clearAnimation();
-
- User user = gameActivity.getUser();
- levelDisplay
- .setText(gameActivity.getString(R.string.topbar_level_format_d, user.getLevel()));
- levelProgress.setProgress(user.getEp());
- starCount.setText(user.getStarCount() + "");
- energyCount.setText(user.getEnergyCount() + "");
-
- gameActivity.getTutorialManager().onTopBarUpdate(this);
- }
-
- public void startToolShopButtonPulse() {
- toolshopButton.startAnimation(toolShopPulse);
- }
-
- public void showStarcountDecrease(int decrease) {
- starCountDecrease.setText(decrease + "");
- starCountDecrease.startAnimation(starDecreaseAnimation);
- }
-
- public void showEnergycountDecrease(int decrease) {
- energyCountDecrease.setText(decrease + "");
- energyCountDecrease.startAnimation(energyDecreaseAnimation);
- }
-
- public void setCustomCallerForScreenSwitch(Screen.ScreenType customCallerForScreenSwitch) {
- this.customCallerForScreenSwitch = customCallerForScreenSwitch;
- }
-
- @Override
- public void onClick(View v) {
- if (v.equals(backButton)) {
- parent.onBackKeyDown();
- }
- if (v.equals(toolshopButton)) {
- flipToScreen(Screen.ScreenType.TOOL_SHOP);
- } else if (v.equals(shapeshopButton)) {
- flipToScreen(Screen.ScreenType.SHAPE_SHOP);
- } else if (v.equals(settingsButton)) {
- flipToScreen(Screen.ScreenType.SETTINGS);
- }
- }
-
- private void flipToScreen(Screen.ScreenType screenType) {
- if (customCallerForScreenSwitch != Screen.ScreenType.NONE)
- gameActivity.flipToScreen(screenType, customCallerForScreenSwitch);
- gameActivity.flipToScreen(screenType);
- }
-
- public Screen.ScreenType getParentType() {
- return parent.getType();
- }
-
- public boolean isToolShopButtonEnabled() {
- return toolshopButton.isEnabled();
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.graphics.Typeface;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.Button;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.screens.Screen;
+import de.frajul.endlessroll.user.User;
+
+/**
+ * Created by Julian on 08.07.2016.
+ */
+public class TopBar implements View.OnClickListener {
+
+ private GameActivity gameActivity;
+ private View layout;
+ private Screen parent;
+ private Screen.ScreenType customCallerForScreenSwitch = Screen.ScreenType.NONE;
+
+ private Animation starDecreaseAnimation;
+ private Animation energyDecreaseAnimation;
+ private Animation toolShopPulse;
+
+ private TextView levelDisplay;
+ private ProgressBar levelProgress;
+ private TextView starCount;
+ private TextView energyCount;
+ private Button backButton;
+ private Button settingsButton;
+ private Button toolshopButton;
+ private Button shapeshopButton;
+ private TextView starCountDecrease;
+ private TextView energyCountDecrease;
+
+ public TopBar(GameActivity gameActivity, Screen parent, View layout) {
+ this.gameActivity = gameActivity;
+ this.parent = parent;
+ this.layout = layout;
+
+ starDecreaseAnimation = AnimationUtils.loadAnimation(gameActivity, R.anim.decrease);
+ energyDecreaseAnimation = AnimationUtils.loadAnimation(gameActivity, R.anim.decrease);
+ toolShopPulse = AnimationUtils.loadAnimation(gameActivity, R.anim.pulse);
+
+ Typeface typeface = gameActivity.getTypeface();
+ levelDisplay = layout.findViewById(R.id.topbar_leveldisplay);
+ levelDisplay.setTypeface(typeface);
+ levelProgress = layout.findViewById(R.id.topbar_levelprogress);
+ starCount = layout.findViewById(R.id.topbar_starcount);
+ starCount.setTypeface(typeface);
+ energyCount = layout.findViewById(R.id.topbar_energycount);
+ energyCount.setTypeface(typeface);
+ backButton = layout.findViewById(R.id.topbar_back_button);
+ backButton.setOnClickListener(this);
+ settingsButton = layout.findViewById(R.id.topbar_settings);
+ settingsButton.setOnClickListener(this);
+ toolshopButton = layout.findViewById(R.id.topbar_toolshop);
+ toolshopButton.setOnClickListener(this);
+ shapeshopButton = layout.findViewById(R.id.topbar_shapeshop);
+ shapeshopButton.setOnClickListener(this);
+ if (parent.getType() == Screen.ScreenType.SETTINGS)
+ settingsButton.setEnabled(false);
+ if (parent.getType() == Screen.ScreenType.TOOL_SHOP)
+ toolshopButton.setEnabled(false);
+ if (parent.getType() == Screen.ScreenType.SHAPE_SHOP)
+ shapeshopButton.setEnabled(false);
+ if (parent.getType() == Screen.ScreenType.GAME) {
+ backButton.setEnabled(false);
+ toolshopButton.setEnabled(false);
+ shapeshopButton.setEnabled(false);
+ }
+ starCountDecrease = layout.findViewById(R.id.topbar_starcount_decrease);
+ starCountDecrease.setTypeface(typeface);
+ energyCountDecrease = layout.findViewById(R.id.topbar_energycount_decrease);
+ energyCountDecrease.setTypeface(typeface);
+ }
+
+ public void setShopsEnabled(boolean enabled) {
+ toolshopButton.setEnabled(enabled);
+ shapeshopButton.setEnabled(enabled);
+ }
+
+ public void startAnimation(Animation animation) {
+ layout.startAnimation(animation);
+ }
+
+ public void update() {
+ toolshopButton.clearAnimation();
+
+ User user = gameActivity.getUser();
+ levelDisplay
+ .setText(gameActivity.getString(R.string.topbar_level_format_d, user.getLevel()));
+ levelProgress.setProgress(user.getEp());
+ starCount.setText(user.getStarCount() + "");
+ energyCount.setText(user.getEnergyCount() + "");
+
+ gameActivity.getTutorialManager().onTopBarUpdate(this);
+ }
+
+ public void startToolShopButtonPulse() {
+ toolshopButton.startAnimation(toolShopPulse);
+ }
+
+ public void showStarcountDecrease(int decrease) {
+ starCountDecrease.setText(decrease + "");
+ starCountDecrease.startAnimation(starDecreaseAnimation);
+ }
+
+ public void showEnergycountDecrease(int decrease) {
+ energyCountDecrease.setText(decrease + "");
+ energyCountDecrease.startAnimation(energyDecreaseAnimation);
+ }
+
+ public void setCustomCallerForScreenSwitch(Screen.ScreenType customCallerForScreenSwitch) {
+ this.customCallerForScreenSwitch = customCallerForScreenSwitch;
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v.equals(backButton)) {
+ parent.onBackKeyDown();
+ }
+ if (v.equals(toolshopButton)) {
+ flipToScreen(Screen.ScreenType.TOOL_SHOP);
+ } else if (v.equals(shapeshopButton)) {
+ flipToScreen(Screen.ScreenType.SHAPE_SHOP);
+ } else if (v.equals(settingsButton)) {
+ flipToScreen(Screen.ScreenType.SETTINGS);
+ }
+ }
+
+ private void flipToScreen(Screen.ScreenType screenType) {
+ if (customCallerForScreenSwitch != Screen.ScreenType.NONE)
+ gameActivity.flipToScreen(screenType, customCallerForScreenSwitch);
+ gameActivity.flipToScreen(screenType);
+ }
+
+ public Screen.ScreenType getParentType() {
+ return parent.getType();
+ }
+
+ public boolean isToolShopButtonEnabled() {
+ return toolshopButton.isEnabled();
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/ViewManager.java b/app/src/main/java/de/frajul/endlessroll/views/ViewManager.java
index 60d35ef..26d2d6e 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/ViewManager.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/ViewManager.java
@@ -1,179 +1,179 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.Level;
-import de.frajul.endlessroll.levels.LevelPack;
-import de.frajul.endlessroll.main.GameActivity;
-import de.frajul.endlessroll.main.GameHandler;
-import de.frajul.endlessroll.main.game.Game;
-import de.frajul.endlessroll.main.game.Timer;
-import de.frajul.endlessroll.main.screens.GameScreen;
-
-/**
- * Created by Julian on 11.12.2015.
- */
-public class ViewManager implements View.OnClickListener {
-
- private GameHandler gameViewHandler;
- private Game game;
- private GameActivity gameActivity;
-
- private TextView fpsView;
- private TextView playerProgressView;
- private GameOverMessage gameOverMessage;
- private GoalMessage goalMessage;
- public ShortMenu shortMenu;
-
- private ImageView pauseButton;
-
- private boolean showFps = false;
-
- private List bombErrorMessages = new ArrayList<>();
-
- private String fpsFormat, playerProgressFormat;
-
- public ViewManager(final Game game, final GameScreen gameScreen, final GameHandler gameViewHandler, final GameActivity gameActivity) {
- this.game = game;
- this.gameViewHandler = gameViewHandler;
- this.gameActivity = gameActivity;
-
- final RelativeLayout layout = gameViewHandler.getRootLayout();
- gameViewHandler.startInUiThread(new Runnable() {
- @Override
- public void run() {
- shortMenu = new ShortMenu(game, gameScreen, gameActivity,
- layout.findViewById(R.id.game_shortmenu));
- gameOverMessage = new GameOverMessage(game, gameScreen, gameActivity,
- layout.findViewById(R.id.game_game_over_message));
- goalMessage = new GoalMessage(game, gameScreen, gameActivity,
- layout.findViewById(R.id.game_goal_message));
- }
- });
- pauseButton = layout.findViewById(R.id.game_pausebutton);
- pauseButton.setOnClickListener(this);
- playerProgressView = layout.findViewById(R.id.game_playerprogress);
- playerProgressView.setTypeface(gameActivity.getTypeface());
- fpsView = layout.findViewById(R.id.game_fps);
- fpsView.setTypeface(gameActivity.getTypeface());
-
- fpsFormat = game.getContext().getString(R.string.game_fps_format_d);
- playerProgressFormat = game.getContext().getString(R.string.game_playerprogress_format_d);
- }
-
- public void prepareToBeShown() {
- if (shortMenu.isVisible())
- shortMenu.prepareToBeShown();
- if (gameOverMessage.isVisible())
- gameOverMessage.prepareToBeShown();
- if (goalMessage.isVisible())
- goalMessage.prepareToBeShown();
- }
-
- public void showBombErrorMessage(float xPos, float yPos) {
- for (BombErrorMessage bombErrorMessage : bombErrorMessages) {
- if (!bombErrorMessage.isAnimationRunning()) {
- bombErrorMessage.show(xPos, yPos);
- return;
- }
- }
- BombErrorMessage bombErrorMessage = new BombErrorMessage(gameActivity);
- bombErrorMessage.show(xPos, yPos);
- gameViewHandler.getRootLayout().addView(bombErrorMessage.getView());
- bombErrorMessages.add(bombErrorMessage);
- }
-
- @Override
- public void onClick(View v) {
- game.tryToPause();
- }
-
- public void resetViews() {
- gameViewHandler.startInUiThread(new Runnable() {
- @Override
- public void run() {
- playerProgressView.setText(R.string.game_playerprogress_placeholder);
- }
- });
- }
-
- public void onGoalMessageKeyBack() {
- goalMessage.onKeyBack();
- }
-
- public void showGameOverMessage() {
- gameViewHandler.startInUiThread(new Runnable() {
- @Override
- public void run() {
- gameOverMessage.fadeIn();
- }
- });
- }
-
- public void showGoalMessage(final LevelPack levelPack, final Level level) {
- gameViewHandler.startInUiThread(new Runnable() {
- @Override
- public void run() {
- goalMessage.fadeInWithDelay(levelPack, level);
- }
- });
- }
-
- public void showShortMenu() {
- shortMenu.startAnims();
- shortMenu.setVisible(true);
- }
-
- public void endShortMenuPhotoMode(){
- shortMenu.deactivatePhotoMode();
- }
-
- public void hideShortMenu() {
- shortMenu.setVisible(false);
- }
-
- public void update(final boolean gameRunning, final Timer timer, final int playerProgress) {
- gameViewHandler.startInUiThread(new Runnable() {
- @Override
- public void run() {
- if (showFps)
- fpsView.setText(String.format(fpsFormat, timer.getFps()));
- if (gameRunning) {
- playerProgressView.setText(String.format(playerProgressFormat, playerProgress));
- }
- }
- });
- }
-
- public boolean isShortMenuVisible() {
- return shortMenu.isVisible();
- }
-
- public void setShowFps(final boolean showFps) {
- fpsView.setVisibility(showFps ? View.VISIBLE : View.GONE);
- this.showFps = showFps;
- }
-
- public TextView getPlayerProgressView() {
- return playerProgressView;
- }
-
- public ImageView getPauseButton() {
- return pauseButton;
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.view.View;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.Level;
+import de.frajul.endlessroll.levels.LevelPack;
+import de.frajul.endlessroll.main.GameActivity;
+import de.frajul.endlessroll.main.GameHandler;
+import de.frajul.endlessroll.main.game.Game;
+import de.frajul.endlessroll.main.game.Timer;
+import de.frajul.endlessroll.main.screens.GameScreen;
+
+/**
+ * Created by Julian on 11.12.2015.
+ */
+public class ViewManager implements View.OnClickListener {
+
+ private GameHandler gameViewHandler;
+ private Game game;
+ private GameActivity gameActivity;
+
+ private TextView fpsView;
+ private TextView playerProgressView;
+ private GameOverMessage gameOverMessage;
+ private GoalMessage goalMessage;
+ public ShortMenu shortMenu;
+
+ private ImageView pauseButton;
+
+ private boolean showFps = false;
+
+ private List bombErrorMessages = new ArrayList<>();
+
+ private String fpsFormat, playerProgressFormat;
+
+ public ViewManager(final Game game, final GameScreen gameScreen, final GameHandler gameViewHandler, final GameActivity gameActivity) {
+ this.game = game;
+ this.gameViewHandler = gameViewHandler;
+ this.gameActivity = gameActivity;
+
+ final RelativeLayout layout = gameViewHandler.getRootLayout();
+ gameViewHandler.startInUiThread(new Runnable() {
+ @Override
+ public void run() {
+ shortMenu = new ShortMenu(game, gameScreen, gameActivity,
+ layout.findViewById(R.id.game_shortmenu));
+ gameOverMessage = new GameOverMessage(game, gameScreen, gameActivity,
+ layout.findViewById(R.id.game_game_over_message));
+ goalMessage = new GoalMessage(game, gameScreen, gameActivity,
+ layout.findViewById(R.id.game_goal_message));
+ }
+ });
+ pauseButton = layout.findViewById(R.id.game_pausebutton);
+ pauseButton.setOnClickListener(this);
+ playerProgressView = layout.findViewById(R.id.game_playerprogress);
+ playerProgressView.setTypeface(gameActivity.getTypeface());
+ fpsView = layout.findViewById(R.id.game_fps);
+ fpsView.setTypeface(gameActivity.getTypeface());
+
+ fpsFormat = game.getContext().getString(R.string.game_fps_format_d);
+ playerProgressFormat = game.getContext().getString(R.string.game_playerprogress_format_d);
+ }
+
+ public void prepareToBeShown() {
+ if (shortMenu.isVisible())
+ shortMenu.prepareToBeShown();
+ if (gameOverMessage.isVisible())
+ gameOverMessage.prepareToBeShown();
+ if (goalMessage.isVisible())
+ goalMessage.prepareToBeShown();
+ }
+
+ public void showBombErrorMessage(float xPos, float yPos) {
+ for (BombErrorMessage bombErrorMessage : bombErrorMessages) {
+ if (!bombErrorMessage.isAnimationRunning()) {
+ bombErrorMessage.show(xPos, yPos);
+ return;
+ }
+ }
+ BombErrorMessage bombErrorMessage = new BombErrorMessage(gameActivity);
+ bombErrorMessage.show(xPos, yPos);
+ gameViewHandler.getRootLayout().addView(bombErrorMessage.getView());
+ bombErrorMessages.add(bombErrorMessage);
+ }
+
+ @Override
+ public void onClick(View v) {
+ game.tryToPause();
+ }
+
+ public void resetViews() {
+ gameViewHandler.startInUiThread(new Runnable() {
+ @Override
+ public void run() {
+ playerProgressView.setText(R.string.game_playerprogress_placeholder);
+ }
+ });
+ }
+
+ public void onGoalMessageKeyBack() {
+ goalMessage.onKeyBack();
+ }
+
+ public void showGameOverMessage() {
+ gameViewHandler.startInUiThread(new Runnable() {
+ @Override
+ public void run() {
+ gameOverMessage.fadeIn();
+ }
+ });
+ }
+
+ public void showGoalMessage(final LevelPack levelPack, final Level level) {
+ gameViewHandler.startInUiThread(new Runnable() {
+ @Override
+ public void run() {
+ goalMessage.fadeInWithDelay(levelPack, level);
+ }
+ });
+ }
+
+ public void showShortMenu() {
+ shortMenu.startAnims();
+ shortMenu.setVisible(true);
+ }
+
+ public void endShortMenuPhotoMode(){
+ shortMenu.deactivatePhotoMode();
+ }
+
+ public void hideShortMenu() {
+ shortMenu.setVisible(false);
+ }
+
+ public void update(final boolean gameRunning, final Timer timer, final int playerProgress) {
+ gameViewHandler.startInUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if (showFps)
+ fpsView.setText(String.format(fpsFormat, timer.getFps()));
+ if (gameRunning) {
+ playerProgressView.setText(String.format(playerProgressFormat, playerProgress));
+ }
+ }
+ });
+ }
+
+ public boolean isShortMenuVisible() {
+ return shortMenu.isVisible();
+ }
+
+ public void setShowFps(final boolean showFps) {
+ fpsView.setVisibility(showFps ? View.VISIBLE : View.GONE);
+ this.showFps = showFps;
+ }
+
+ public TextView getPlayerProgressView() {
+ return playerProgressView;
+ }
+
+ public ImageView getPauseButton() {
+ return pauseButton;
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/WorldButton.java b/app/src/main/java/de/frajul/endlessroll/views/WorldButton.java
index b71ae4f..0527151 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/WorldButton.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/WorldButton.java
@@ -1,93 +1,93 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-import android.graphics.Typeface;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import de.frajul.endlessroll.R;
-import de.frajul.endlessroll.levels.LevelPack;
-import de.frajul.endlessroll.main.GameActivity;
-
-/**
- * Created by Julian on 01.08.2016.
- */
-public class WorldButton implements View.OnClickListener {
-
- private GameActivity gameActivity;
- private LevelPack levelPack;
- private WorldButtonOnClickListener clickListener;
-
- private View layout;
- private TextView title;
- private ImageView previewImage;
- private View lock;
- private TextView levelCount;
- private TextView starCount;
- private TextView energyCount;
-
- public WorldButton(GameActivity gameActivity, LevelPack levelPack, WorldButtonOnClickListener clickListener) {
- this.gameActivity = gameActivity;
- this.levelPack = levelPack;
- this.clickListener = clickListener;
-
- LayoutInflater inflater = LayoutInflater.from(gameActivity);
- layout = inflater.inflate(R.layout.world_button, null);
- layout.setOnClickListener(this);
-
- Typeface typeface = gameActivity.getTypeface();
- title = layout.findViewById(R.id.worldbutton_title);
- title.setTypeface(typeface);
- previewImage = layout.findViewById(R.id.worldbutton_preview);
- lock = layout.findViewById(R.id.worldbutton_lock);
- levelCount = layout.findViewById(R.id.worldbutton_levelcount);
- levelCount.setTypeface(typeface);
- starCount = layout.findViewById(R.id.worldbutton_starcount);
- starCount.setTypeface(typeface);
- energyCount = layout.findViewById(R.id.worldbutton_energycount);
- energyCount.setTypeface(typeface);
-
- update();
- }
-
- public void update() {
- title.setText(levelPack.getName());
- previewImage.setImageDrawable(
- gameActivity.getResources().getDrawable(levelPack.getWorld().getPreviewId()));
- levelCount.setText(gameActivity
- .getString(R.string.world_button_count_format_dd, levelPack.getFinishedLevelCount(),
- levelPack.getLevels().size()));
- starCount.setText(gameActivity
- .getString(R.string.world_button_count_format_dd, levelPack.getCollectedStarCount(),
- levelPack.getAvailableStars()));
- energyCount.setText(gameActivity.getString(R.string.world_button_count_format_dd,
- levelPack.getCollectedEnergyCount(), levelPack.getAvailableEnergy()));
- setLockVisible(levelPack.isLocked());
- }
-
- public void setLockVisible(boolean locked) {
- int visibility = locked ? View.VISIBLE : View.GONE;
- lock.setVisibility(visibility);
- }
-
- public LevelPack getLevelPack() {
- return levelPack;
- }
-
- public View getView() {
- return layout;
- }
-
- @Override
- public void onClick(View v) {
- clickListener.onClick(this);
- }
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+import android.graphics.Typeface;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import de.frajul.endlessroll.R;
+import de.frajul.endlessroll.levels.LevelPack;
+import de.frajul.endlessroll.main.GameActivity;
+
+/**
+ * Created by Julian on 01.08.2016.
+ */
+public class WorldButton implements View.OnClickListener {
+
+ private GameActivity gameActivity;
+ private LevelPack levelPack;
+ private WorldButtonOnClickListener clickListener;
+
+ private View layout;
+ private TextView title;
+ private ImageView previewImage;
+ private View lock;
+ private TextView levelCount;
+ private TextView starCount;
+ private TextView energyCount;
+
+ public WorldButton(GameActivity gameActivity, LevelPack levelPack, WorldButtonOnClickListener clickListener) {
+ this.gameActivity = gameActivity;
+ this.levelPack = levelPack;
+ this.clickListener = clickListener;
+
+ LayoutInflater inflater = LayoutInflater.from(gameActivity);
+ layout = inflater.inflate(R.layout.world_button, null);
+ layout.setOnClickListener(this);
+
+ Typeface typeface = gameActivity.getTypeface();
+ title = layout.findViewById(R.id.worldbutton_title);
+ title.setTypeface(typeface);
+ previewImage = layout.findViewById(R.id.worldbutton_preview);
+ lock = layout.findViewById(R.id.worldbutton_lock);
+ levelCount = layout.findViewById(R.id.worldbutton_levelcount);
+ levelCount.setTypeface(typeface);
+ starCount = layout.findViewById(R.id.worldbutton_starcount);
+ starCount.setTypeface(typeface);
+ energyCount = layout.findViewById(R.id.worldbutton_energycount);
+ energyCount.setTypeface(typeface);
+
+ update();
+ }
+
+ public void update() {
+ title.setText(levelPack.getName());
+ previewImage.setImageDrawable(
+ gameActivity.getResources().getDrawable(levelPack.getWorld().getPreviewId()));
+ levelCount.setText(gameActivity
+ .getString(R.string.world_button_count_format_dd, levelPack.getFinishedLevelCount(),
+ levelPack.getLevels().size()));
+ starCount.setText(gameActivity
+ .getString(R.string.world_button_count_format_dd, levelPack.getCollectedStarCount(),
+ levelPack.getAvailableStars()));
+ energyCount.setText(gameActivity.getString(R.string.world_button_count_format_dd,
+ levelPack.getCollectedEnergyCount(), levelPack.getAvailableEnergy()));
+ setLockVisible(levelPack.isLocked());
+ }
+
+ public void setLockVisible(boolean locked) {
+ int visibility = locked ? View.VISIBLE : View.GONE;
+ lock.setVisibility(visibility);
+ }
+
+ public LevelPack getLevelPack() {
+ return levelPack;
+ }
+
+ public View getView() {
+ return layout;
+ }
+
+ @Override
+ public void onClick(View v) {
+ clickListener.onClick(this);
+ }
+}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/WorldButtonOnClickListener.java b/app/src/main/java/de/frajul/endlessroll/views/WorldButtonOnClickListener.java
index b7e93ed..d6e95be 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/WorldButtonOnClickListener.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/WorldButtonOnClickListener.java
@@ -1,18 +1,18 @@
-/*
- * Created by Julian Mutter on 7/10/18 3:58 PM
- * Copyright (c) 2018. All rights reserved.
- * Last modified 7/10/18 3:54 PM
- *
- */
-
-package de.frajul.endlessroll.views;
-
-/**
- * Created by Julian on 04.11.2017.
- */
-
-public interface WorldButtonOnClickListener {
-
- void onClick(WorldButton worldButton);
-
-}
+/*
+ * Created by Julian Mutter on 7/10/18 3:58 PM
+ * Copyright (c) 2018. All rights reserved.
+ * Last modified 7/10/18 3:54 PM
+ *
+ */
+
+package de.frajul.endlessroll.views;
+
+/**
+ * Created by Julian on 04.11.2017.
+ */
+
+public interface WorldButtonOnClickListener {
+
+ void onClick(WorldButton worldButton);
+
+}
diff --git a/app/src/main/res/anim/decrease.xml b/app/src/main/res/anim/decrease.xml
index d5db364..ca98efd 100644
--- a/app/src/main/res/anim/decrease.xml
+++ b/app/src/main/res/anim/decrease.xml
@@ -1,25 +1,25 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/fade_in.xml b/app/src/main/res/anim/fade_in.xml
index ea685ab..6c735dd 100644
--- a/app/src/main/res/anim/fade_in.xml
+++ b/app/src/main/res/anim/fade_in.xml
@@ -1,15 +1,15 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/fade_out_accelerating.xml b/app/src/main/res/anim/fade_out_accelerating.xml
index c2a0647..2705784 100644
--- a/app/src/main/res/anim/fade_out_accelerating.xml
+++ b/app/src/main/res/anim/fade_out_accelerating.xml
@@ -1,16 +1,16 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/pulse.xml b/app/src/main/res/anim/pulse.xml
index a6f1891..f0edc96 100644
--- a/app/src/main/res/anim/pulse.xml
+++ b/app/src/main/res/anim/pulse.xml
@@ -1,20 +1,20 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/rotate.xml b/app/src/main/res/anim/rotate.xml
index 0775919..e0acc6d 100644
--- a/app/src/main/res/anim/rotate.xml
+++ b/app/src/main/res/anim/rotate.xml
@@ -1,20 +1,20 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/shape_button_rotation.xml b/app/src/main/res/anim/shape_button_rotation.xml
index 6c7b985..2668a74 100644
--- a/app/src/main/res/anim/shape_button_rotation.xml
+++ b/app/src/main/res/anim/shape_button_rotation.xml
@@ -1,19 +1,19 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/slide_in_left.xml b/app/src/main/res/anim/slide_in_left.xml
index be403c0..ee2b655 100644
--- a/app/src/main/res/anim/slide_in_left.xml
+++ b/app/src/main/res/anim/slide_in_left.xml
@@ -1,19 +1,19 @@
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/slide_in_right.xml b/app/src/main/res/anim/slide_in_right.xml
index a1dc3d1..996dcbb 100644
--- a/app/src/main/res/anim/slide_in_right.xml
+++ b/app/src/main/res/anim/slide_in_right.xml
@@ -1,19 +1,19 @@
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/slide_in_top.xml b/app/src/main/res/anim/slide_in_top.xml
index 3b1829b..23c3636 100644
--- a/app/src/main/res/anim/slide_in_top.xml
+++ b/app/src/main/res/anim/slide_in_top.xml
@@ -1,19 +1,19 @@
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_background_bountymessage.xml b/app/src/main/res/drawable/xml_background_bountymessage.xml
index a78a430..81329c9 100644
--- a/app/src/main/res/drawable/xml_background_bountymessage.xml
+++ b/app/src/main/res/drawable/xml_background_bountymessage.xml
@@ -1,27 +1,27 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/xml_background_dialog_button.xml b/app/src/main/res/drawable/xml_background_dialog_button.xml
index 4dfd95c..8c5002e 100644
--- a/app/src/main/res/drawable/xml_background_dialog_button.xml
+++ b/app/src/main/res/drawable/xml_background_dialog_button.xml
@@ -1,24 +1,24 @@
-
-
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/xml_background_exit_confirm_dialog.xml b/app/src/main/res/drawable/xml_background_exit_confirm_dialog.xml
index a6e3073..575eee9 100644
--- a/app/src/main/res/drawable/xml_background_exit_confirm_dialog.xml
+++ b/app/src/main/res/drawable/xml_background_exit_confirm_dialog.xml
@@ -1,17 +1,17 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/xml_background_game_over_message_button.xml b/app/src/main/res/drawable/xml_background_game_over_message_button.xml
index 6e9f472..b62c758 100644
--- a/app/src/main/res/drawable/xml_background_game_over_message_button.xml
+++ b/app/src/main/res/drawable/xml_background_game_over_message_button.xml
@@ -1,24 +1,24 @@
-
-
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/xml_background_levelbutton.xml b/app/src/main/res/drawable/xml_background_levelbutton.xml
index 4738f80..4e8363f 100644
--- a/app/src/main/res/drawable/xml_background_levelbutton.xml
+++ b/app/src/main/res/drawable/xml_background_levelbutton.xml
@@ -1,27 +1,27 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/xml_background_toolslot.xml b/app/src/main/res/drawable/xml_background_toolslot.xml
index c9b43b8..f865452 100644
--- a/app/src/main/res/drawable/xml_background_toolslot.xml
+++ b/app/src/main/res/drawable/xml_background_toolslot.xml
@@ -1,13 +1,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/xml_background_topbar.xml b/app/src/main/res/drawable/xml_background_topbar.xml
index a2abffc..9dfeadb 100644
--- a/app/src/main/res/drawable/xml_background_topbar.xml
+++ b/app/src/main/res/drawable/xml_background_topbar.xml
@@ -1,21 +1,21 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/xml_background_tutorialimageview.xml b/app/src/main/res/drawable/xml_background_tutorialimageview.xml
index 0089153..fd6c2e9 100644
--- a/app/src/main/res/drawable/xml_background_tutorialimageview.xml
+++ b/app/src/main/res/drawable/xml_background_tutorialimageview.xml
@@ -1,15 +1,15 @@
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_background_tutorialtextview.xml b/app/src/main/res/drawable/xml_background_tutorialtextview.xml
index e101cfa..81c8d8a 100644
--- a/app/src/main/res/drawable/xml_background_tutorialtextview.xml
+++ b/app/src/main/res/drawable/xml_background_tutorialtextview.xml
@@ -1,22 +1,22 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_background_worldbutton.xml b/app/src/main/res/drawable/xml_background_worldbutton.xml
index e9272e2..55a0345 100644
--- a/app/src/main/res/drawable/xml_background_worldbutton.xml
+++ b/app/src/main/res/drawable/xml_background_worldbutton.xml
@@ -1,27 +1,27 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/xml_layers_levelprogressbar.xml b/app/src/main/res/drawable/xml_layers_levelprogressbar.xml
index 8895de8..a84b4f3 100644
--- a/app/src/main/res/drawable/xml_layers_levelprogressbar.xml
+++ b/app/src/main/res/drawable/xml_layers_levelprogressbar.xml
@@ -1,26 +1,26 @@
-
-
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_selector_backbutton.xml b/app/src/main/res/drawable/xml_selector_backbutton.xml
index a875095..c60899b 100644
--- a/app/src/main/res/drawable/xml_selector_backbutton.xml
+++ b/app/src/main/res/drawable/xml_selector_backbutton.xml
@@ -1,16 +1,16 @@
-
-
-
-
- -
-
-
- -
-
-
+
+
+
+
+ -
+
+
+ -
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_selector_gamebutton.xml b/app/src/main/res/drawable/xml_selector_gamebutton.xml
index ebdb4a9..c721a0f 100644
--- a/app/src/main/res/drawable/xml_selector_gamebutton.xml
+++ b/app/src/main/res/drawable/xml_selector_gamebutton.xml
@@ -1,34 +1,34 @@
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_selector_music.xml b/app/src/main/res/drawable/xml_selector_music.xml
index 1e08045..c8f19df 100644
--- a/app/src/main/res/drawable/xml_selector_music.xml
+++ b/app/src/main/res/drawable/xml_selector_music.xml
@@ -1,17 +1,17 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_selector_pricebutton.xml b/app/src/main/res/drawable/xml_selector_pricebutton.xml
index 473b810..c943fed 100644
--- a/app/src/main/res/drawable/xml_selector_pricebutton.xml
+++ b/app/src/main/res/drawable/xml_selector_pricebutton.xml
@@ -1,34 +1,34 @@
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_selector_settings_button.xml b/app/src/main/res/drawable/xml_selector_settings_button.xml
index 37e59ab..c1901b9 100644
--- a/app/src/main/res/drawable/xml_selector_settings_button.xml
+++ b/app/src/main/res/drawable/xml_selector_settings_button.xml
@@ -1,43 +1,43 @@
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_selector_settingsbutton.xml b/app/src/main/res/drawable/xml_selector_settingsbutton.xml
index 0a4caaa..dfd5a3e 100644
--- a/app/src/main/res/drawable/xml_selector_settingsbutton.xml
+++ b/app/src/main/res/drawable/xml_selector_settingsbutton.xml
@@ -1,16 +1,16 @@
-
-
-
-
- -
-
-
- -
-
-
+
+
+
+
+ -
+
+
+ -
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/xml_selector_shapeshopbutton.xml b/app/src/main/res/drawable/xml_selector_shapeshopbutton.xml
index bf96680..aded559 100644
--- a/app/src/main/res/drawable/xml_selector_shapeshopbutton.xml
+++ b/app/src/main/res/drawable/xml_selector_shapeshopbutton.xml
@@ -1,16 +1,16 @@
-
-
-
-
- -
-
-
- -
-
-
+
+
+
+
+ -
+