From 3c72f409937349c5242cfdb94b139f1cff4b0716 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, 14 Jul 2016 11:16:37 +0200 Subject: [PATCH] #341 WIP Added sound mute toggle button to main menu. --- .../application/application_cs.properties | 1 + .../application/application_de.properties | 1 + .../application/application_sk.properties | 1 + .../mainmenu/icon_sounds_pressed.png | Bin 0 -> 3380 bytes .../mainmenu/icon_sounds_unpressed.png | Bin 0 -> 4180 bytes .../src/cz/nic/tablexia/TablexiaSettings.java | 27 ++++++++++++++---- .../cz/nic/tablexia/game/GameDefinition.java | 4 +++ .../application/ApplicationAtlasManager.java | 2 ++ .../application/ApplicationTextManager.java | 1 + core/src/cz/nic/tablexia/menu/IMenuItem.java | 2 +- .../menu/game/GameMenuDefinition.java | 7 +++++ .../tablexia/menu/game/GameMenuItemGroup.java | 2 +- .../cz/nic/tablexia/menu/main/MainMenu.java | 5 ++-- .../menu/main/MainMenuDefinition.java | 17 ++++++++++- .../tablexia/menu/main/MainMenuItemGroup.java | 17 +++++++++-- .../nic/tablexia/menu/user/UserMenuItem.java | 7 ++++- .../screen/AbstractTablexiaScreen.java | 22 ++++++++++---- .../cz/nic/tablexia/util/TablexiaSound.java | 10 +++---- 18 files changed, 99 insertions(+), 27 deletions(-) create mode 100644 core/assets/common/_global/application/mainmenu/icon_sounds_pressed.png create mode 100644 core/assets/common/_global/application/mainmenu/icon_sounds_unpressed.png diff --git a/android/assets/text/application/application_cs.properties b/android/assets/text/application/application_cs.properties index e7079a602..a7298f37f 100644 --- a/android/assets/text/application/application_cs.properties +++ b/android/assets/text/application/application_cs.properties @@ -26,6 +26,7 @@ mainmenu_statistics=Statistiky mainmenu_encyclopedia=Encyklopedie mainmenu_preferences=Nastavenà mainmenu_about=O aplikaci +mainmenu_sounds=[CS]Zvuky mainmenu_logout=Odhlásit mainmenu_screendebug=Debug Screen mainmenu_panorama=Panorama diff --git a/android/assets/text/application/application_de.properties b/android/assets/text/application/application_de.properties index b97fc711f..ba09da1c5 100644 --- a/android/assets/text/application/application_de.properties +++ b/android/assets/text/application/application_de.properties @@ -27,6 +27,7 @@ mainmenu_statistics=Statistiken mainmenu_encyclopedia=Enzyklopädie mainmenu_preferences=Einstellung mainmenu_about=Über die App +mainmenu_sounds=[DE]Zvuky mainmenu_logout=Abmelden mainmenu_screendebug=Debug Screen mainmenu_panorama=Panorama diff --git a/android/assets/text/application/application_sk.properties b/android/assets/text/application/application_sk.properties index 93aa14149..413d4fd4a 100644 --- a/android/assets/text/application/application_sk.properties +++ b/android/assets/text/application/application_sk.properties @@ -26,6 +26,7 @@ mainmenu_statistics=Štatistiky mainmenu_encyclopedia=Encyklopédia mainmenu_preferences=Nastavenie mainmenu_about=O aplikácià +mainmenu_sounds=[SK]Zvuky mainmenu_logout=Odhlásiť mainmenu_screendebug=Debug Screen mainmenu_panorama=Panorama diff --git a/core/assets/common/_global/application/mainmenu/icon_sounds_pressed.png b/core/assets/common/_global/application/mainmenu/icon_sounds_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..978d5fb131bab326fd0c47b30c9c51346f12b0f4 GIT binary patch literal 3380 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 KMNUMnLSTZr=!SU! literal 0 HcmV?d00001 diff --git a/core/assets/common/_global/application/mainmenu/icon_sounds_unpressed.png b/core/assets/common/_global/application/mainmenu/icon_sounds_unpressed.png new file mode 100644 index 0000000000000000000000000000000000000000..831bd3f5b7d1be944201132e72e9c8f3adabfa63 GIT binary patch literal 4180 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 literal 0 HcmV?d00001 diff --git a/core/src/cz/nic/tablexia/TablexiaSettings.java b/core/src/cz/nic/tablexia/TablexiaSettings.java index 44760152a..c624ef874 100644 --- a/core/src/cz/nic/tablexia/TablexiaSettings.java +++ b/core/src/cz/nic/tablexia/TablexiaSettings.java @@ -202,12 +202,6 @@ public class TablexiaSettings { public boolean isWinterMode() { return winterMode; } - public boolean isSoundMuted() { return soundMuted; } - - public void setSoundMuted(boolean soundMuted) { - this.soundMuted = soundMuted; - } - public boolean isShowBoundingBoxes() { return getBuildType().isBoundingBoxes(); } @@ -241,6 +235,27 @@ public class TablexiaSettings { return DEFAULT_FONT_COLOR; } +//////////////////////////// SOUND MUTE + + public boolean isSoundMuted() { return soundMuted; } + + public void toggleSoundMute() { + this.soundMuted = !soundMuted; + ApplicationBus.getInstance().publishAsync(new SoundMuteEvent(soundMuted)); + } + + public static class SoundMuteEvent implements ApplicationBus.ApplicationEvent { + private boolean soundMuted; + + private SoundMuteEvent(boolean soundMuted) { + this.soundMuted = soundMuted; + } + + public boolean isSoundMuted() { + return soundMuted; + } + } + //////////////////////////// USER SETTINGS public static class SelectedUserEvent implements ApplicationBus.ApplicationEvent { diff --git a/core/src/cz/nic/tablexia/game/GameDefinition.java b/core/src/cz/nic/tablexia/game/GameDefinition.java index d2bcf71b6..88a4f4699 100644 --- a/core/src/cz/nic/tablexia/game/GameDefinition.java +++ b/core/src/cz/nic/tablexia/game/GameDefinition.java @@ -142,4 +142,8 @@ public enum GameDefinition implements ApplicationEvent, IMenuItem { return new String[0]; // TODO } + @Override + public boolean isToggle() { + return false; + } } diff --git a/core/src/cz/nic/tablexia/loader/application/ApplicationAtlasManager.java b/core/src/cz/nic/tablexia/loader/application/ApplicationAtlasManager.java index acf0021da..d5cc05b50 100644 --- a/core/src/cz/nic/tablexia/loader/application/ApplicationAtlasManager.java +++ b/core/src/cz/nic/tablexia/loader/application/ApplicationAtlasManager.java @@ -48,6 +48,8 @@ public class ApplicationAtlasManager extends TablexiaAtlasManager implements IAp public static final String MAINMENU_ICON_LOGOUT_UNPRESSED = MAINMENU_PATH + "icon_logout_unpressed"; public static final String MAINMENU_ICON_STATISTICS_PRESSED = MAINMENU_PATH + "icon_statistics_pressed"; public static final String MAINMENU_ICON_STATISTICS_UNPRESSED = MAINMENU_PATH + "icon_statistics_unpressed"; + public static final String MAINMENU_ICON_SOUNDS_PRESSED = MAINMENU_PATH + "icon_sounds_pressed"; + public static final String MAINMENU_ICON_SOUNDS_UNPRESSED = MAINMENU_PATH + "icon_sounds_unpressed"; public static final String MAINMENU_CHILDITEM_BACKGROUND = MAINMENU_PATH + "childitem_background"; public static final String MAINMENU_CHILDITEM_ARROW = MAINMENU_PATH + "childitem_arrow"; public static final String MAINMENU_CHILDITEM_RESTART = MAINMENU_PATH + "childitem_restart"; diff --git a/core/src/cz/nic/tablexia/loader/application/ApplicationTextManager.java b/core/src/cz/nic/tablexia/loader/application/ApplicationTextManager.java index dc9ca8288..6db5ce143 100644 --- a/core/src/cz/nic/tablexia/loader/application/ApplicationTextManager.java +++ b/core/src/cz/nic/tablexia/loader/application/ApplicationTextManager.java @@ -57,6 +57,7 @@ public class ApplicationTextManager extends TablexiaDataManager<I18NBundle> impl public static final String MAINMENU_ENCYCLOPEDIA = "mainmenu_encyclopedia"; public static final String MAINMENU_ABOUT = "mainmenu_about"; public static final String MAINMENU_LOGOUT = "mainmenu_logout"; + public static final String MAINMENU_SOUNDS = "mainmenu_sounds"; public static final String MAINMENU_DEBUG = "mainmenu_screendebug"; public static final String GAME_ROBBERY_TITLE = "game_robbery_title"; diff --git a/core/src/cz/nic/tablexia/menu/IMenuItem.java b/core/src/cz/nic/tablexia/menu/IMenuItem.java index 152a2e768..c8f311c8b 100644 --- a/core/src/cz/nic/tablexia/menu/IMenuItem.java +++ b/core/src/cz/nic/tablexia/menu/IMenuItem.java @@ -11,5 +11,5 @@ public interface IMenuItem { AbstractMenu.MenuAction getMenuAction(); IMenuItem[] getSubmenu(); String[] getIcons(); - + boolean isToggle(); } diff --git a/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java b/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java index 50a6923e2..9348e0fa9 100644 --- a/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java +++ b/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java @@ -55,6 +55,11 @@ public enum GameMenuDefinition implements ApplicationBus.ApplicationEvent, IMenu return null; } + @Override + public boolean isToggle() { + return false; + } + @Override public Class<? extends Group> getItemGroupClass() { return MENU_ITEM_GROUP_CLASS; @@ -82,6 +87,8 @@ public enum GameMenuDefinition implements ApplicationBus.ApplicationEvent, IMenu } } + + public static GameMenuDefinition getGameMenuDefinitionForGameDefinition(GameDefinition gameDefinition) { for (GameMenuDefinition gameMenuDefinition : GameMenuDefinition.values()) { if (gameDefinition == gameMenuDefinition.gameDefinition) { diff --git a/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java b/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java index 09cde8290..4797713ea 100644 --- a/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java +++ b/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java @@ -57,7 +57,7 @@ public class GameMenuItemGroup extends Container<Table> { private Class<? extends AbstractTablexiaGame> abstractTablexiaGameClass; private GameMenuScreen.GameMenuPageDefinition gameMenuPageDefinition; - public GameMenuItemGroup(IMenuItem menuItem, float width) { + public GameMenuItemGroup(final IMenuItem menuItem, float width) { this.abstractTablexiaGameClass = ((GameMenuDefinition)menuItem).getGameDefinition().getScreenClass(); this.gameMenuPageDefinition = GameMenuScreen.GameMenuPageDefinition.getGameMenuPageForGameDefinition(GameDefinition.getGameDefinitionForClass(abstractTablexiaGameClass)); diff --git a/core/src/cz/nic/tablexia/menu/main/MainMenu.java b/core/src/cz/nic/tablexia/menu/main/MainMenu.java index 5df8201d8..f30cec98b 100644 --- a/core/src/cz/nic/tablexia/menu/main/MainMenu.java +++ b/core/src/cz/nic/tablexia/menu/main/MainMenu.java @@ -1,6 +1,5 @@ package cz.nic.tablexia.menu.main; -import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.Container; @@ -80,7 +79,7 @@ public class MainMenu extends AbstractMenu { menuItemContainer.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - performMenuAction(menuItem); + if(inTapSquare(x, y)) performMenuAction(menuItem); } }); menuItemsLayout.addActor(menuItemContainer); @@ -95,7 +94,7 @@ public class MainMenu extends AbstractMenu { submenuItemContainer.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - performMenuAction(submenuItem); + if(inTapSquare(x, y)) performMenuAction(submenuItem); } }); subMenuLayout.addActor(submenuItemContainer); diff --git a/core/src/cz/nic/tablexia/menu/main/MainMenuDefinition.java b/core/src/cz/nic/tablexia/menu/main/MainMenuDefinition.java index 2cc97cd30..47d2cf646 100644 --- a/core/src/cz/nic/tablexia/menu/main/MainMenuDefinition.java +++ b/core/src/cz/nic/tablexia/menu/main/MainMenuDefinition.java @@ -36,8 +36,18 @@ public enum MainMenuDefinition implements IMenuItem { STATISTICS (false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_STATISTICS_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_STATISTICS_PRESSED}, ApplicationTextManager.ApplicationTextsAssets.MAINMENU_STATISTICS, null, AbstractMenu.MenuAction.CLOSE, new Tablexia.ChangeScreenEvent(StatisticsScreen.class, TablexiaApplication.ScreenTransaction.FADE)), ENCYCLOPEDIA (false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_ENCYCLOPEDIA_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_ENCYCLOPEDIA_PRESSED}, ApplicationTextManager.ApplicationTextsAssets.MAINMENU_ENCYCLOPEDIA, null, AbstractMenu.MenuAction.CLOSE, new Tablexia.ChangeScreenEvent(EncyclopediaScreen.class, TablexiaApplication.ScreenTransaction.FADE)), ABOUT_APPLICATION (false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_ABOUT_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_ABOUT_PRESSED}, ApplicationTextManager.ApplicationTextsAssets.MAINMENU_ABOUT, null, AbstractMenu.MenuAction.CLOSE, new Tablexia.ChangeScreenEvent(AboutScreen.class, TablexiaApplication.ScreenTransaction.FADE)), - LOGOUT (false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_LOGOUT_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_LOGOUT_PRESSED}, ApplicationTextManager.ApplicationTextsAssets.MAINMENU_LOGOUT, null, AbstractMenu.MenuAction.CLOSE, null) { + SOUNDS (false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_SOUNDS_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_SOUNDS_PRESSED}, ApplicationTextManager.ApplicationTextsAssets.MAINMENU_SOUNDS, null, null, null) { + @Override + public void performAction() { + TablexiaSettings.getInstance().toggleSoundMute(); + } + @Override + public boolean isToggle() { + return true; + } + }, + LOGOUT (false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_LOGOUT_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_LOGOUT_PRESSED}, ApplicationTextManager.ApplicationTextsAssets.MAINMENU_LOGOUT, null, AbstractMenu.MenuAction.CLOSE, null) { @Override public void performAction() { TablexiaSettings.getInstance().changeUser(null, new TablexiaSettings.LogoutAcceptListener() { @@ -97,6 +107,11 @@ public enum MainMenuDefinition implements IMenuItem { return icons; } + @Override + public boolean isToggle() { + return false; + } + public IMenuItem[] getSubmenu() { return submenu; } diff --git a/core/src/cz/nic/tablexia/menu/main/MainMenuItemGroup.java b/core/src/cz/nic/tablexia/menu/main/MainMenuItemGroup.java index aceaf312a..709e70f10 100644 --- a/core/src/cz/nic/tablexia/menu/main/MainMenuItemGroup.java +++ b/core/src/cz/nic/tablexia/menu/main/MainMenuItemGroup.java @@ -34,24 +34,31 @@ public class MainMenuItemGroup extends Container<Table> { private final TextureRegionDrawable highlitedBackground; - public MainMenuItemGroup(IMenuItem menuItem, float width) { + public MainMenuItemGroup(final IMenuItem menuItem, float width) { Table layoutTable = new Table(); layoutTable.setFillParent(true); fillX(); layoutTable.align(Align.left); setActor(layoutTable); addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + if(menuItem.isToggle() && inTapSquare(x, y)) { + if(isCurrentlyPressed()) setUnpressed(); + else setPressed(); + } + } @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { - setPressed(); + if(!menuItem.isToggle()) setPressed(); return super.touchDown(event, x, y, pointer, button); } @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { - setUnpressed(); super.touchUp(event, x, y, pointer, button); + if(!menuItem.isToggle()) setUnpressed(); } }); setTouchable(Touchable.enabled); @@ -122,4 +129,8 @@ public class MainMenuItemGroup extends Container<Table> { iconPressedImage.setVisible(true); } } + + public boolean isCurrentlyPressed() { + return iconPressedImage.isVisible(); + } } diff --git a/core/src/cz/nic/tablexia/menu/user/UserMenuItem.java b/core/src/cz/nic/tablexia/menu/user/UserMenuItem.java index 31a611402..2ce85ffb3 100644 --- a/core/src/cz/nic/tablexia/menu/user/UserMenuItem.java +++ b/core/src/cz/nic/tablexia/menu/user/UserMenuItem.java @@ -60,4 +60,9 @@ public class UserMenuItem implements IMenuItem { public IMenuItem[] getSubmenu() { return null; } -} + + @Override + public boolean isToggle() { + return false; + } +} \ No newline at end of file diff --git a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java index fd18b3a91..17e9f5dfe 100644 --- a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java +++ b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java @@ -60,6 +60,7 @@ import static com.badlogic.gdx.scenes.scene2d.actions.Actions.moveTo; public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter { public class TablexiaMusic implements Music { + private static final float DEFAULT_VOLUME = 1f; private String musicName; private Music music; @@ -69,14 +70,20 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter { this.music = music; } + private void updateVolume() { + if(TablexiaSettings.getInstance().isSoundMuted()) setVolume(0); + else setVolume(DEFAULT_VOLUME); + } + public String getMusicName() { return musicName; } @Override public void play() { - if(!TablexiaSettings.getInstance().isSoundMuted()) - music.play(); + ApplicationBus.getInstance().subscribe(this); + updateVolume(); + music.play(); } @Override @@ -86,6 +93,7 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter { @Override public void stop() { + ApplicationBus.getInstance().unsubscribe(this); music.stop(); } @@ -132,14 +140,11 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter { @Override public void dispose() { Log.debug(AbstractTablexiaScreen.this.getClass(), "DISPOSING MUSIC: " + getMusicName()); + ApplicationBus.getInstance().unsubscribe(this); notDisposedMusics.remove(getMusicName()); music.dispose(); } - public void disposeOnly() { - music.dispose(); - } - @Override public String toString() { return "MUSIC: " + getMusicName(); @@ -149,6 +154,11 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter { public void setOnCompletionListener(OnCompletionListener listener) { music.setOnCompletionListener(listener); } + + @Handler + public void handleSoundMuteEvent(TablexiaSettings.SoundMuteEvent soundMuteEvent) { + if(isPlaying()) updateVolume(); + } } public static final String TEXT_LOADER_BASE_PATH = "text/"; diff --git a/core/src/cz/nic/tablexia/util/TablexiaSound.java b/core/src/cz/nic/tablexia/util/TablexiaSound.java index 42ef452bb..9762e88f8 100644 --- a/core/src/cz/nic/tablexia/util/TablexiaSound.java +++ b/core/src/cz/nic/tablexia/util/TablexiaSound.java @@ -30,10 +30,10 @@ public class TablexiaSound implements Sound { @Override public long play(float volume, float pitch, float pan) { - if(!TablexiaSettings.getInstance().isSoundMuted()) - return sound.play(volume, pitch, pan); - else + if(TablexiaSettings.getInstance().isSoundMuted()) return -1; + else + return sound.play(volume, pitch, pan); } @Override @@ -49,7 +49,7 @@ public class TablexiaSound implements Sound { @Override public long loop(float volume, float pitch, float pan) { if(!TablexiaSettings.getInstance().isSoundMuted()) - return loop(volume, pitch, pan); + return sound.loop(volume, pitch, pan); else return -1; } @@ -109,4 +109,4 @@ public class TablexiaSound implements Sound { public void setPan(long soundId, float pan, float volume) { sound.setPan(soundId, pan, volume); } -} +} \ No newline at end of file -- GitLab