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