diff --git a/android/assets/sound/effect_waterdrop.mp3 b/android/assets/sound/effect_waterdrop.mp3
new file mode 100644
index 0000000..2b7c8a8
Binary files /dev/null and b/android/assets/sound/effect_waterdrop.mp3 differ
diff --git a/android/assets/ui/x0.75/cells/drop.png b/android/assets/ui/x0.75/cells/drop.png
new file mode 100644
index 0000000..707905f
Binary files /dev/null and b/android/assets/ui/x0.75/cells/drop.png differ
diff --git a/android/assets/ui/x1.0/cells/drop.png b/android/assets/ui/x1.0/cells/drop.png
new file mode 100644
index 0000000..951898b
Binary files /dev/null and b/android/assets/ui/x1.0/cells/drop.png differ
diff --git a/android/assets/ui/x1.25/cells/drop.png b/android/assets/ui/x1.25/cells/drop.png
new file mode 100644
index 0000000..e97b8a8
Binary files /dev/null and b/android/assets/ui/x1.25/cells/drop.png differ
diff --git a/android/assets/ui/x1.5/cells/drop.png b/android/assets/ui/x1.5/cells/drop.png
new file mode 100644
index 0000000..dc4951d
Binary files /dev/null and b/android/assets/ui/x1.5/cells/drop.png differ
diff --git a/android/assets/ui/x2.0/cells/drop.png b/android/assets/ui/x2.0/cells/drop.png
new file mode 100644
index 0000000..dbac0ea
Binary files /dev/null and b/android/assets/ui/x2.0/cells/drop.png differ
diff --git a/android/assets/ui/x4.0/cells/drop.png b/android/assets/ui/x4.0/cells/drop.png
new file mode 100644
index 0000000..334eae6
Binary files /dev/null and b/android/assets/ui/x4.0/cells/drop.png differ
diff --git a/core/src/io/github/lonamiwebs/klooni/Klooni.java b/core/src/io/github/lonamiwebs/klooni/Klooni.java
index 766d004..e022678 100644
--- a/core/src/io/github/lonamiwebs/klooni/Klooni.java
+++ b/core/src/io/github/lonamiwebs/klooni/Klooni.java
@@ -30,6 +30,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import io.github.lonamiwebs.klooni.effects.EvaporateEffect;
import io.github.lonamiwebs.klooni.effects.IEffect;
import io.github.lonamiwebs.klooni.effects.VanishEffect;
+import io.github.lonamiwebs.klooni.effects.WaterdropEffect;
import io.github.lonamiwebs.klooni.game.Cell;
import io.github.lonamiwebs.klooni.screens.MainMenuScreen;
import io.github.lonamiwebs.klooni.screens.TransitionScreen;
@@ -119,6 +120,8 @@ public class Klooni extends Game {
// Effects used when clearing a row
public static IEffect createEffect(final Cell deadCell, final Vector2 culprit) {
+ // TODO Every effect should probably return a string corresponding to their sound
+ // so there's only one switch around
final IEffect effect;
switch (usedEffect) {
default:
@@ -126,6 +129,9 @@ public class Klooni extends Game {
effect = new VanishEffect();
break;
case 1:
+ effect = new WaterdropEffect();
+ break;
+ case 2:
effect = new EvaporateEffect();
break;
}
@@ -235,6 +241,9 @@ public class Klooni extends Game {
effectSound = Gdx.audio.newSound(Gdx.files.internal("sound/effect_vanish.mp3"));
break;
case 1:
+ effectSound = Gdx.audio.newSound(Gdx.files.internal("sound/effect_waterdrop.mp3"));
+ break;
+ case 2:
effectSound = Gdx.audio.newSound(Gdx.files.internal("sound/effect_evaporate.mp3"));
break;
}
@@ -245,7 +254,8 @@ public class Klooni extends Game {
// and when creating instances of a lot of effects it's better if we can
// save some processor cycles.
if (name.equals("vanish")) return 0;
- if (name.equals("evaporate")) return 1;
+ if (name.equals("waterdrop")) return 1;
+ if (name.equals("evaporate")) return 2;
return -1;
}
diff --git a/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java b/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java
new file mode 100644
index 0000000..33e04dc
--- /dev/null
+++ b/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java
@@ -0,0 +1,69 @@
+package io.github.lonamiwebs.klooni.effects;
+
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.MathUtils;
+import com.badlogic.gdx.math.Vector2;
+
+import io.github.lonamiwebs.klooni.SkinLoader;
+import io.github.lonamiwebs.klooni.game.Cell;
+
+public class WaterdropEffect implements IEffect {
+ private Vector2 pos;
+
+ private Color cellColor;
+ private Color dropColor;
+ private float cellSize;
+
+ private final float fallAcceleration;
+ private float fallSpeed;
+
+ private static final float FALL_ACCELERATION = 500.0f;
+ private static final float FALL_VARIATION = 50.0f;
+ private static final float COLOR_SPEED = 7.5f;
+
+ private static Texture dropTexture;
+
+ static {
+ dropTexture = SkinLoader.loadPng("cells/drop.png");
+ }
+
+ public WaterdropEffect() {
+ fallAcceleration = FALL_ACCELERATION + MathUtils.random(-FALL_VARIATION, FALL_VARIATION);
+ }
+
+ @Override
+ public void setInfo(Cell deadCell, Vector2 culprit) {
+ pos = deadCell.pos.cpy();
+ cellSize = deadCell.size;
+ cellColor = deadCell.getColorCopy();
+ dropColor = new Color(cellColor.r, cellColor.g, cellColor.b, 0.0f);
+ }
+
+ @Override
+ public void draw(SpriteBatch batch) {
+ final float dt = Gdx.graphics.getDeltaTime();
+ fallSpeed += fallAcceleration * dt;
+ pos.y -= fallSpeed * dt;
+
+ cellColor.set(
+ cellColor.r, cellColor.g, cellColor.b,
+ Math.max(cellColor.a - COLOR_SPEED * dt, 0.0f)
+ );
+ dropColor.set(
+ cellColor.r, cellColor.g, cellColor.b,
+ Math.min(dropColor.a + COLOR_SPEED * dt, 1.0f)
+ );
+
+ Cell.draw(cellColor, batch, pos.x, pos.y, cellSize);
+ Cell.draw(dropTexture, dropColor, batch, pos.x, pos.y, cellSize);
+ }
+
+ @Override
+ public boolean isDone() {
+ return pos.y + dropTexture.getHeight() < 0;
+ }
+}
diff --git a/original-resources/buttons.svg b/original-resources/buttons.svg
index 6be7e77..b1d3c29 100644
--- a/original-resources/buttons.svg
+++ b/original-resources/buttons.svg
@@ -19,6 +19,22 @@
sodipodi:docname="buttons.svg">
+
+
+
+
+
@@ -117,6 +133,17 @@
r="6.9998441"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.43721182,3.7482347e-7,-3.6476786e-7,0.42548248,33.63808,466.20236)" />
+
+
+
+
+
+
+
diff --git a/original-resources/gen-ui-png.py b/original-resources/gen-ui-png.py
index cb3fa7d..106feb9 100755
--- a/original-resources/gen-ui-png.py
+++ b/original-resources/gen-ui-png.py
@@ -41,7 +41,8 @@ ids = [
cells = [
'basic',
'bubble',
- 'ghost'
+ 'ghost',
+ 'drop'
]
inkscape_default_dpi = 90