From 7363b7d5cc620d947954eca89e4f1f62f201f3cc Mon Sep 17 00:00:00 2001
From: = <=>
Date: Sat, 5 May 2018 12:36:34 +0200
Subject: [PATCH] Fixed bug with android 8.0 and opengl
---
.../assets/debug/levelpacks/Grasslands.xml | 14 +-
.../debug/shader/entityVertexShader.glsl | 13 +-
.../manifests/full/debug/AndroidManifest.xml | 1 +
app/src/main/assets/levelpacks/Grasslands.xml | 14 +-
.../main/assets/levelpacks/Icy Mountains.xml | 187 ++++++++++++++++++
.../assets/shader/entityVertexShader.glsl | 13 +-
.../frajul/endlessroll/entities/Entity.java | 8 +
.../endlessroll/entities/tools/ToolType.java | 2 +-
.../de/frajul/endlessroll/main/game/Game.java | 2 +-
.../main/game/TestScreenScene.java | 13 +-
.../rendering/renderer/GameRenderer.java | 6 +-
.../endlessroll/views/ToolButtonBar.java | 2 +-
.../particlelab/rendering/GameRenderer.java | 1 +
13 files changed, 239 insertions(+), 37 deletions(-)
diff --git a/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml b/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml
index 81b050f..2a271d1 100644
--- a/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml
+++ b/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml
@@ -456,10 +456,10 @@
-
+
-
+
@@ -468,22 +468,22 @@
-
+
-
+
-
+
-
+
@@ -498,7 +498,7 @@
-
+
diff --git a/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl b/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl
index b96c4d4..5f7af0d 100644
--- a/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl
+++ b/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl
@@ -9,12 +9,15 @@ 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 = texCoords;
- if(texCoordScaling.x != 0.0)
- pass_TexCoords.x *= texCoordScaling.x;
- if(texCoordScaling.y != 0.0)
- pass_TexCoords.y *= texCoordScaling.y;
+ pass_TexCoords = scale * texCoords;
}
\ No newline at end of file
diff --git a/app/build/intermediates/manifests/full/debug/AndroidManifest.xml b/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
index 827a3e7..0ae04a6 100644
--- a/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
+++ b/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
@@ -18,6 +18,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
+ android:testOnly="true"
android:theme="@style/AppTheme" >
-
+
-
+
@@ -468,22 +468,22 @@
-
+
-
+
-
+
-
+
@@ -498,7 +498,7 @@
-
+
diff --git a/app/src/main/assets/levelpacks/Icy Mountains.xml b/app/src/main/assets/levelpacks/Icy Mountains.xml
index 692050c..9af12d8 100644
--- a/app/src/main/assets/levelpacks/Icy Mountains.xml
+++ b/app/src/main/assets/levelpacks/Icy Mountains.xml
@@ -1011,5 +1011,192 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 b96c4d4..5f7af0d 100644
--- a/app/src/main/assets/shader/entityVertexShader.glsl
+++ b/app/src/main/assets/shader/entityVertexShader.glsl
@@ -9,12 +9,15 @@ 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 = texCoords;
- if(texCoordScaling.x != 0.0)
- pass_TexCoords.x *= texCoordScaling.x;
- if(texCoordScaling.y != 0.0)
- pass_TexCoords.y *= texCoordScaling.y;
+ pass_TexCoords = scale * texCoords;
}
\ No newline at end of file
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 6e859e9..148993f 100644
--- a/app/src/main/java/de/frajul/endlessroll/entities/Entity.java
+++ b/app/src/main/java/de/frajul/endlessroll/entities/Entity.java
@@ -103,6 +103,14 @@ public class Entity extends Quad {
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;
}
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 93fb13b..06e5505 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
@@ -31,7 +31,7 @@ public enum ToolType {
new ToolUpgrade(ToolUpgradeType.COOLDOWN, 5000, 3000),
new ToolUpgrade(ToolUpgradeType.FORCE, 100, 500)),
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, 5,
+ 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)),
STASIS(R.string.tool_name_stasis, R.string.tool_description_stasis, R.drawable.tools_stasis,
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 e3aadf7..6447975 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
@@ -168,7 +168,7 @@ public class Game extends Rendering {
if (gameState == GameState.RUNNING) {
ToolButtonBar bar = viewManager.toolButtonBar;
ToolButton button = bar.getByToolType(currentTool);
- if (button != null && button.finishedLoading()) {
+ if (button != null && button.finishedLoading() && button.getToolType() != null) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (currentTool == ToolType.BOMB) {
try {
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 53d1bd8..9c7713b 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,5 +1,7 @@
package de.frajul.endlessroll.main.game;
+import de.frajul.endlessroll.data.Vector;
+import de.frajul.endlessroll.entities.Entity;
import de.frajul.endlessroll.entities.particles.ParticleSystem;
import de.frajul.endlessroll.entities.shapes.PlayerShape;
import de.frajul.endlessroll.entities.textures.TexturePack;
@@ -10,10 +12,11 @@ public class TestScreenScene extends Scene {
public TestScreenScene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
super(gameActivity, texturePack, particleSystem);
- terrain.createEndless(World.GRASSLANDS, 0.6f);
- background.changeTexture(World.ICY_MOUNTAINS.getBackgroundTexture());
-
- player.init(PlayerShape.BALL, 0.6f, 0.5f, 0.5f, particleSystem);
- uncategorizedEntities.add(player);
+// terrain.createEndless(World.GRASSLANDS, 0.6f);
+// background.changeTexture(World.ICY_MOUNTAINS.getBackgroundTexture());
+//
+// player.init(PlayerShape.BALL, 0.6f, 0.5f, 0.5f, particleSystem);
+// uncategorizedEntities.add(player);
+ uncategorizedEntities.add(new Entity(World.GRASSLANDS.getBackgroundTexture(), new Vector(), 1, 1));
}
}
\ No newline at end of file
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 a8467d1..656d4cd 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
@@ -180,11 +180,7 @@ public class GameRenderer implements GLSurfaceView.Renderer {
entityShader.loadTransformationMatrix(matrixCreator, entity);
entityShader.loadAlpha(entity.getAlpha());
entityShader.loadTextureAtlasInfos(entity.getTexture(), entity.getTextureAtlasIndex());
- float texScaleX = entity.getMaxTexSize().x == 0 ? 1 : entity.getWidth() / entity
- .getMaxTexSize().x;
- float texScaleY = entity.getMaxTexSize().y == 0 ? 1 : entity.getHeight() / entity
- .getMaxTexSize().y;
- entityShader.loadTexCoordScaling(texScaleX, texScaleY);
+ entityShader.loadTexCoordScaling(entity.calcTexScaleX(), entity.calcTexScaleY());
quad.draw();
}
diff --git a/app/src/main/java/de/frajul/endlessroll/views/ToolButtonBar.java b/app/src/main/java/de/frajul/endlessroll/views/ToolButtonBar.java
index e0a9643..9700f96 100644
--- a/app/src/main/java/de/frajul/endlessroll/views/ToolButtonBar.java
+++ b/app/src/main/java/de/frajul/endlessroll/views/ToolButtonBar.java
@@ -108,7 +108,7 @@ public class ToolButtonBar implements View.OnClickListener{
} else if (v.equals(button4) && !buttons.get(3).isLocked()) {
clickedButton = buttons.get(3);
}
- if (clickedButton != null) {
+ if (clickedButton != null && clickedButton.getToolType() != null) {
game.setCurrentTool(clickedButton.getToolType(), clickedButton.finishedLoading());
setActive(clickedButton.getToolType());
}
diff --git a/particlelab/src/main/java/de/frajul/particlelab/rendering/GameRenderer.java b/particlelab/src/main/java/de/frajul/particlelab/rendering/GameRenderer.java
index 703802e..e14fa3f 100644
--- a/particlelab/src/main/java/de/frajul/particlelab/rendering/GameRenderer.java
+++ b/particlelab/src/main/java/de/frajul/particlelab/rendering/GameRenderer.java
@@ -8,6 +8,7 @@ import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import de.frajul.particlelab.data.Color;
+import de.frajul.particlelab.data.Vector;
import de.frajul.particlelab.entities.Entity;
import de.frajul.particlelab.entities.particles.ParticleEffect;
import de.frajul.particlelab.entities.particles.ParticleSource;