From b5eb02f8bbf173ba58f717042c569efcc85bb90f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Drahom=C3=ADr=20Karch=C5=88=C3=A1k?=
 <drahomir.karchnak@nic.cz>
Date: Thu, 21 Jan 2016 13:39:57 +0100
Subject: [PATCH] #116 Fixed playing of rule message sound

---
 .../game/games/kidnapping/KidnappingGame.java | 24 +++++++++++++++++--
 .../game/games/kidnapping/Properties.java     |  2 ++
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java b/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java
index a7831a3fd..a229d7f29 100644
--- a/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java
+++ b/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java
@@ -48,6 +48,7 @@ import cz.nic.tablexia.loader.application.ApplicationAtlasManager;
 import cz.nic.tablexia.loader.application.ApplicationFontManager;
 import cz.nic.tablexia.loader.application.ApplicationTextManager;
 import cz.nic.tablexia.model.game.Game;
+import cz.nic.tablexia.util.MusicUtil;
 import cz.nic.tablexia.util.ScaleUtil;
 import cz.nic.tablexia.util.ui.AnimatedImage;
 import cz.nic.tablexia.util.ui.ClickListenerWithSound;
@@ -61,6 +62,8 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> {
 	private static final float RULE_MESSAGE_PAPER_WIDTH  =	0.6f;
 	private static final float RULE_MESSAGE_TEXT_PADDING =  0.07f;
 
+	private static final float RULE_SOUND_DELAY 		  = 1.0f;
+	private static final float RULE_SOUND_FADE_OUT_TIME   =	0.5f;
 	private static final float RULE_MESSAGE_FADE_OUT_TIME =	0.5f;
 	private static final float HELP_OVERLAY_FADE_IN_TIME  =	0.5f;
 	private static final float MAP_FADE_IN_TIME			  =	0.5f;
@@ -146,6 +149,7 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> {
 				super.onClick(event, x, y);
 
 				ruleMessage.addAction(new SequenceAction(Actions.fadeOut(RULE_MESSAGE_FADE_OUT_TIME), Actions.visible(false)));
+				stopRuleSound(RULE_SOUND_FADE_OUT_TIME);
 
 				map.addAction(Actions.sequence(Actions.delay(RULE_MESSAGE_FADE_OUT_TIME  + GAME_DELAY),
 						Actions.run(new Runnable() {
@@ -196,11 +200,27 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> {
 		ruleMessageShown = true;
 	}
 
+	private void playRuleSound(float delay) {
+		addAction(new SequenceAction(Actions.delay(delay), Actions.run(new Runnable() {
+			@Override
+			public void run() {
+				getRuleSound().play();
+			}
+		})));
+	}
+
+	private void stopRuleSound(float fadeoutTime) {
+		if(getRuleSound().isPlaying()) {
+			MusicUtil.fadeOut(getRuleSound(), fadeoutTime);
+		}
+	}
+
     @Override
     protected void gameVisible() {
 		// center first tile and start game
 		if(!ruleMessageShown) {
 			showRuleMessage();
+			playRuleSound(RULE_SOUND_DELAY);
 		}
 		else {
 			map.addAction(Actions.sequence(Actions.delay(RULE_MESSAGE_FADE_OUT_TIME  + GAME_DELAY),
@@ -314,8 +334,8 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> {
         return sfxLibrary;
     }
 
-    public String getRuleSound() {
-        return Properties.GAMERULE_HELP_SOUNDS[getGameDifficulty().ordinal()];
+    private Music getRuleSound() {
+		return getMusic(Properties.GAMERULE_HELP_SOUNDS[getGameDifficulty().getDifficultyNumber() - 1]);
     }
 
     @Override
diff --git a/core/src/cz/nic/tablexia/game/games/kidnapping/Properties.java b/core/src/cz/nic/tablexia/game/games/kidnapping/Properties.java
index 6e0d7a17e..7a974c366 100644
--- a/core/src/cz/nic/tablexia/game/games/kidnapping/Properties.java
+++ b/core/src/cz/nic/tablexia/game/games/kidnapping/Properties.java
@@ -21,6 +21,8 @@ public class Properties {
     private static final int[]   GAMERULES_CUPS_HARD   = GAMERULES_CUPS_MEDIUM;
     public static final  int[][] GAMERULE_CUPS         = {GAMERULES_CUPS_EASY, GAMERULES_CUPS_MEDIUM, GAMERULES_CUPS_HARD};
 
+	public static final String LOADING_SOUND = "mfx/help/loading.mp3";
+
     static final String[] GAMERULE_HELP_SOUNDS = new String[]{"mfx/help/rulehelp_easy.mp3", "mfx/help/rulehelp_medium.mp3", "mfx/help/rulehelp_hard.mp3"};
     static final String[] RESULT_SOUNDS        = new String[]{"mfx/result/result_0.mp3", "mfx/result/result_1.mp3", "mfx/result/result_2.mp3", "mfx/result/result_3.mp3"};
     static final String[] RESULT_TEXT          = new String[]{"game_kidnapping_result_0", "game_kidnapping_result_1", "game_kidnapping_result_2", "game_kidnapping_result_3"};
-- 
GitLab