From 5cadc74e3e97a831d04193abde400840b933b31f Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sun, 9 Jul 2017 14:12:59 +0200 Subject: [PATCH] Don't hardcode the used effect, add a new sound for Evaporate one --- android/assets/sound/effect_evaporate.mp3 | Bin 0 -> 40557 bytes .../{strip_clear.mp3 => effect_vanish.mp3} | Bin .../io/github/lonamiwebs/klooni/Klooni.java | 74 +++++++++++++++++- .../github/lonamiwebs/klooni/game/Board.java | 21 +---- .../lonamiwebs/klooni/screens/GameScreen.java | 9 ++- 5 files changed, 81 insertions(+), 23 deletions(-) create mode 100644 android/assets/sound/effect_evaporate.mp3 rename android/assets/sound/{strip_clear.mp3 => effect_vanish.mp3} (100%) diff --git a/android/assets/sound/effect_evaporate.mp3 b/android/assets/sound/effect_evaporate.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6256f5dd98f444260d0504cab27927ee45e13a23 GIT binary patch literal 40557 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 literal 0 HcmV?d00001 diff --git a/android/assets/sound/strip_clear.mp3 b/android/assets/sound/effect_vanish.mp3 similarity index 100% rename from android/assets/sound/strip_clear.mp3 rename to android/assets/sound/effect_vanish.mp3 diff --git a/core/src/io/github/lonamiwebs/klooni/Klooni.java b/core/src/io/github/lonamiwebs/klooni/Klooni.java index 4579127..766d004 100644 --- a/core/src/io/github/lonamiwebs/klooni/Klooni.java +++ b/core/src/io/github/lonamiwebs/klooni/Klooni.java @@ -22,11 +22,15 @@ import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; import com.badlogic.gdx.Screen; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.BitmapFont; -import com.badlogic.gdx.graphics.g2d.NinePatch; +import com.badlogic.gdx.audio.Sound; +import com.badlogic.gdx.math.MathUtils; +import com.badlogic.gdx.math.Vector2; 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.game.Cell; import io.github.lonamiwebs.klooni.screens.MainMenuScreen; import io.github.lonamiwebs.klooni.screens.TransitionScreen; @@ -47,6 +51,9 @@ public class Klooni extends Game { public static final int GAME_HEIGHT = 680; public static final int GAME_WIDTH = 408; + private static int usedEffect; + private Sound effectSound; + //endregion //region Creation @@ -75,6 +82,9 @@ public class Klooni extends Game { Gdx.input.setCatchBackKey(true); // To show the pause menu setScreen(new MainMenuScreen(this)); + + usedEffect = effectNameToInt(getUsedEffect()); + setUsedEffect(null); // Update the effect sound } //endregion @@ -99,6 +109,32 @@ public class Klooni extends Game { super.dispose(); skin.dispose(); theme.dispose(); + if (effectSound != null) + effectSound.dispose(); + } + + //endregion + + //region Effects + + // Effects used when clearing a row + public static IEffect createEffect(final Cell deadCell, final Vector2 culprit) { + final IEffect effect; + switch (usedEffect) { + default: + case 0: + effect = new VanishEffect(); + break; + case 1: + effect = new EvaporateEffect(); + break; + } + effect.setInfo(deadCell, culprit); + return effect; + } + + public void playEffectSound() { + effectSound.play(MathUtils.random(0.7f, 1f), MathUtils.random(0.8f, 1.2f), 0); } //endregion @@ -181,6 +217,38 @@ public class Klooni extends Game { theme.update(newTheme.getName()); } + // Effects related + public static String getUsedEffect() { + return prefs.getString("effectName"); + } + + public void setUsedEffect(final String name) { + if (name != null) + prefs.putString("effectName", name).flush(); + + if (effectSound != null) + effectSound.dispose(); + + switch (effectNameToInt(getUsedEffect())) { + default: + case 0: + effectSound = Gdx.audio.newSound(Gdx.files.internal("sound/effect_vanish.mp3")); + break; + case 1: + effectSound = Gdx.audio.newSound(Gdx.files.internal("sound/effect_evaporate.mp3")); + break; + } + } + + private static int effectNameToInt(final String name) { + // String comparision is more expensive compared to a single integer one, + // 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; + return -1; + } + // Money related public static void addMoneyFromScore(int score) { setMoney(getRealMoney() + score * SCORE_TO_MONEY); diff --git a/core/src/io/github/lonamiwebs/klooni/game/Board.java b/core/src/io/github/lonamiwebs/klooni/game/Board.java index c50ee51..84e83fc 100644 --- a/core/src/io/github/lonamiwebs/klooni/game/Board.java +++ b/core/src/io/github/lonamiwebs/klooni/game/Board.java @@ -46,7 +46,6 @@ public class Board implements BinSerializable { private final Array effects; // Particle effects once they vanish final Vector2 pos; - private final Sound stripClearSound; // Used to animate cleared cells vanishing private final Vector2 lastPutPiecePos; @@ -58,8 +57,6 @@ public class Board implements BinSerializable { public Board(final GameLayout layout, int cellCount) { this.cellCount = cellCount; - stripClearSound = Gdx.audio.newSound(Gdx.files.internal("sound/strip_clear.mp3")); - lastPutPiecePos = new Vector2(); pos = new Vector2(); effects = new Array(32); // 32 capacity for 3 rows (most common) @@ -206,16 +203,11 @@ public class Board implements BinSerializable { clearCount++; } if (clearCount > 0) { - float pan = 0; - // Do clear those rows and columns - // TODO Don't always use "vanish effect" for (int i = 0; i < cellCount; ++i) { if (clearedRows[i]) { for (int j = 0; j < cellCount; ++j) { - IEffect effect = new EvaporateEffect(); - effect.setInfo(cells[i][j], lastPutPiecePos); - effects.add(effect); + effects.add(Klooni.createEffect(cells[i][j], lastPutPiecePos)); cells[i][j].set(-1); } } @@ -223,21 +215,12 @@ public class Board implements BinSerializable { for (int j = 0; j < cellCount; ++j) { if (clearedCols[j]) { - pan += 2f * (j - cellCount / 2) / (float)cellCount; for (int i = 0; i < cellCount; ++i) { - IEffect effect = new EvaporateEffect(); - effect.setInfo(cells[i][j], lastPutPiecePos); - effects.add(effect); + effects.add(Klooni.createEffect(cells[i][j], lastPutPiecePos)); cells[i][j].set(-1); } } } - - if (Klooni.soundsEnabled()) { - pan = MathUtils.clamp(pan, -1, 1); - stripClearSound.play( - MathUtils.random(0.7f, 1f), MathUtils.random(0.8f, 1.2f), pan); - } } return clearCount; diff --git a/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java b/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java index 6e10b74..7488d38 100644 --- a/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java +++ b/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java @@ -25,6 +25,7 @@ import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.math.MathUtils; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -47,6 +48,7 @@ class GameScreen implements Screen, InputProcessor, BinSerializable { //region Members + private final Klooni game; private final BaseScorer scorer; private final BonusParticleHandler bonusParticleHandler; @@ -93,6 +95,7 @@ class GameScreen implements Screen, InputProcessor, BinSerializable { GameScreen(final Klooni game, final int gameMode, final boolean loadSave) { batch = new SpriteBatch(); + this.game = game; this.gameMode = gameMode; final GameLayout layout = new GameLayout(); @@ -236,8 +239,12 @@ class GameScreen implements Screen, InputProcessor, BinSerializable { if (result.onBoard) { scorer.addPieceScore(result.area); int bonus = scorer.addBoardScore(board.clearComplete(), board.cellCount); - if (bonus > 0) + if (bonus > 0) { bonusParticleHandler.addBonus(result.pieceCenter, bonus); + if (Klooni.soundsEnabled()) { + game.playEffectSound(); + } + } // After the piece was put, check if it's game over if (isGameOver()) {