diff --git a/.gitignore b/.gitignore
index ebf8245..f0f9b00 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,5 +6,4 @@ local.properties
app/src/main/assets/levelsEasy.xml.compressed
app/src/main/assets/levelsMedium.xml.compressed
app/src/main/assets/levelsHard.xml.compressed
-
-
+app/src/main/assets/levelsCommunity.xml.compressed
diff --git a/app/build.gradle b/app/build.gradle
index 7b6d6c3..d1f0ca8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,6 +52,7 @@ android {
compress(projectDir.path + '/src/main/assets/levelsEasy.xml')
compress(projectDir.path + '/src/main/assets/levelsMedium.xml')
compress(projectDir.path + '/src/main/assets/levelsHard.xml')
+ compress(projectDir.path + '/src/main/assets/levelsCommunity.xml')
}
}
preBuild.dependsOn compressLevelFile
diff --git a/app/src/main/assets/levelsCommunity.xml b/app/src/main/assets/levelsCommunity.xml
new file mode 100644
index 0000000..bfd0159
--- /dev/null
+++ b/app/src/main/assets/levelsCommunity.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/assets/levelsMedium.xml b/app/src/main/assets/levelsMedium.xml
index f9a4a9e..c32db3e 100644
--- a/app/src/main/assets/levelsMedium.xml
+++ b/app/src/main/assets/levelsMedium.xml
@@ -868,4 +868,23 @@
00000
rUFF0" />
+
+
diff --git a/app/src/main/java/com/bytehamster/flowitgame/model/LevelPack.java b/app/src/main/java/com/bytehamster/flowitgame/model/LevelPack.java
index 7ecbf24..e70fe19 100644
--- a/app/src/main/java/com/bytehamster/flowitgame/model/LevelPack.java
+++ b/app/src/main/java/com/bytehamster/flowitgame/model/LevelPack.java
@@ -15,12 +15,14 @@ public class LevelPack {
public static LevelPack EASY;
public static LevelPack MEDIUM;
public static LevelPack HARD;
+ public static LevelPack COMMUNITY;
private int id;
public static void parsePacks(Context context) {
EASY = new LevelPack(1, "levelsEasy.xml", context);
MEDIUM = new LevelPack(2, "levelsMedium.xml", context);
- HARD = new LevelPack(2, "levelsHard.xml", context);
+ HARD = new LevelPack(3, "levelsHard.xml", context);
+ COMMUNITY = new LevelPack(4, "levelsCommunity.xml", context);
}
private LevelPack(int id, String fileName, Context context) {
diff --git a/app/src/main/java/com/bytehamster/flowitgame/state/LevelPackSelectState.java b/app/src/main/java/com/bytehamster/flowitgame/state/LevelPackSelectState.java
index 6cc9429..cc5705f 100644
--- a/app/src/main/java/com/bytehamster/flowitgame/state/LevelPackSelectState.java
+++ b/app/src/main/java/com/bytehamster/flowitgame/state/LevelPackSelectState.java
@@ -22,6 +22,7 @@ public class LevelPackSelectState extends State {
private Plane pack1;
private Plane pack2;
private Plane pack3;
+ private Plane pack4;
private Plane selectLevelPackText;
private Container container;
private boolean pressed = false;
@@ -62,6 +63,10 @@ protected void initialize(GLRenderer glRenderer) {
pack3 = new Plane(-menuEntriesWidth, pack2.getY() - 2 * menuEntriesHeight, menuEntriesWidth, menuEntriesHeight, coordinatesPack3);
container.addDrawable(pack3);
+ TextureCoordinates coordinatesPack4 = TextureCoordinates.getFromBlocks(6, 14, 12, 15);
+ pack4 = new Plane(-menuEntriesWidth, pack3.getY() - 2 * menuEntriesHeight, menuEntriesWidth, menuEntriesHeight, coordinatesPack4);
+ container.addDrawable(pack4);
+
glRenderer.addDrawable(container);
glRenderer.addDrawable(selectLevelPackText);
}
@@ -84,6 +89,7 @@ public void entry() {
AnimationFactory.startMenuAnimationEnter(pack1, (int) (3.0f * Animation.DURATION_SHORT));
AnimationFactory.startMenuAnimationEnter(pack2, (int) (3.5f * Animation.DURATION_SHORT));
AnimationFactory.startMenuAnimationEnter(pack3, (int) (4.0f * Animation.DURATION_SHORT));
+ AnimationFactory.startMenuAnimationEnter(pack4, (int) (4.5f * Animation.DURATION_SHORT));
}
@Override
@@ -111,6 +117,12 @@ public void exit() {
} else {
AnimationFactory.startMenuAnimationOut(pack3);
}
+
+ if (LevelSelectState.getInstance().getPack() == LevelPack.COMMUNITY) {
+ AnimationFactory.startMenuAnimationOutPressed(pack4);
+ } else {
+ AnimationFactory.startMenuAnimationOut(pack4);
+ }
}
@Override
@@ -135,6 +147,8 @@ public void onTouchEvent(MotionEvent event) {
openSelectState(LevelPack.MEDIUM);
} else if (pack3.collides(event.getX(), event.getY() + container.getY(), getScreenHeight())) {
openSelectState(LevelPack.HARD);
+ } else if (pack4.collides(event.getX(), event.getY() + container.getY(), getScreenHeight())) {
+ openSelectState(LevelPack.COMMUNITY);
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {
pressed = false;
diff --git a/app/src/main/java/com/bytehamster/flowitgame/state/State.java b/app/src/main/java/com/bytehamster/flowitgame/state/State.java
index 6d8f47a..2992103 100644
--- a/app/src/main/java/com/bytehamster/flowitgame/state/State.java
+++ b/app/src/main/java/com/bytehamster/flowitgame/state/State.java
@@ -87,6 +87,8 @@ public boolean isPlayable(Level level) {
return isSolved(LevelPack.EASY.getLevel(0).getNumber());
} else if (level.getPack() == LevelPack.HARD) {
return isSolved(LevelPack.MEDIUM.getLevel(0).getNumber());
+ } else if (level.getPack() == LevelPack.COMMUNITY) {
+ return isSolved(LevelPack.MEDIUM.getLevel(0).getNumber());
}
return false;
} else if (isSolved(level.getNumber())) {
diff --git a/app/src/main/res/drawable-de-nodpi/texture.png b/app/src/main/res/drawable-de-nodpi/texture.png
index 5306cf1..0a2725b 100644
Binary files a/app/src/main/res/drawable-de-nodpi/texture.png and b/app/src/main/res/drawable-de-nodpi/texture.png differ
diff --git a/app/src/main/res/drawable-nodpi/texture.png b/app/src/main/res/drawable-nodpi/texture.png
index b96babe..bea1c8f 100644
Binary files a/app/src/main/res/drawable-nodpi/texture.png and b/app/src/main/res/drawable-nodpi/texture.png differ
diff --git a/assets/texture.xcf b/assets/texture.xcf
index 1ffe97c..048ebaf 100644
Binary files a/assets/texture.xcf and b/assets/texture.xcf differ