diff --git a/app/build/intermediates/incremental/mergeDebugResources/merger.xml b/app/build/intermediates/incremental/mergeDebugResources/merger.xml index 83f4a36..a372133 100644 --- a/app/build/intermediates/incremental/mergeDebugResources/merger.xml +++ b/app/build/intermediates/incremental/mergeDebugResources/merger.xml @@ -1346,7 +1346,7 @@ ?android:attr/actionMenuTextAppearance @drawable/abc_control_background_material - Drück mich!Ich bin ein Text!ZIEL ERREICHTZum MenüErneut versuchenNeustartNächstes LevelNeustart: Level %dNächstes Level: %dGehe zur nächsten Welt: %sLÄDT...WeiterNeustartBeendenSpielenErste Welt abschließen!Zeit (Lv12)Fortschritt zurücksetzenRampe freigeschaltetHammer Welt!%s freigeschaltet!KaufenUpgradeBallUhrHypnosePacmanSmileyReifenSonneLevel: %dLass dich hypnotisieren!Ein krasses Auto ohne ... AutoLass dir die Sonne ins Gesicht scheinenSammle %d Sterne (%d/%d)Sammle %d Energie (%d/%d)Sammle %d SterneSammle %d EnergieBeende die %d. WeltEinfach rollen!Katapultiert dich in die LuftDu wirst von ihm angezogen. Das ist fast schon Magie!Jage Hindernisse in die LuftGibt dir für ein paar Sekunden Superkräfte!Friert die Luft ein, wodurch du länger fliegstRampeFederMagnetBombePilzStaseNichtsZeitRadiusKraftJaNeinDer allerschönste Platzhalter für einen ConfirmDialog!Willst du wirklich das Spiel beenden?Willst du wirklich deinen gesamten Fortschritt zurücksetzen?Willst du wirklich die erste Welt abschließen? Dadurch wird dein alter Fortschritt GELÖSCHT!Das ist ein Platzhalter über mehrere Zeilen - Extra für Tutorials! Das haut dich um!Willkommen bei Endless Roll! Viel Spaß!Klicke irgendwo auf den Bildschirm, um dort die Rampe zu setzenSuper! Jetzt setze sie vor das HindernisVersuch es erneut!Sehr gut! Jetzt schaffst du bestimmt das nächste LevelAufgabe abgeschlossenToolsToolshopNeuer Slot freigeschaltetNeues Aussehen freigeschaltetEin neues Aussehen und noch viel mehr SpaßLeere AufgabeErreiche Level %d, um dieses Tool freizuschaltenDu kannst Tools auch mitten in der Luft setzen. Achte auf das richtige Timing!Glückwunsch! Du bist ein Level aufgestiegen! Jetzt gehe in den ToolshopFür dieses Level müssen zwei Tools ausgerüstet seinUm ein Tool auszuwählen, klicke einfach daraufSetzte die Rampe vor die Lücke \ No newline at end of file + Drück mich!Ich bin ein Text!ZIEL ERREICHTZum MenüErneut versuchenNeustartNächstes LevelNeustart: Level %dNächstes Level: %dGehe zur nächsten Welt:\n%sLÄDT...WeiterNeustartBeendenSpielenErste Welt abschließen!Zeit (Lv12)Fortschritt zurücksetzenRampe freigeschaltetHammer Welt!%s freigeschaltet!KaufenUpgradeBallUhrHypnosePacmanSmileyReifenSonneLevel: %dLass dich hypnotisieren!Ein krasses Auto ohne ... AutoLass dir die Sonne ins Gesicht scheinenSammle %d Sterne (%d/%d)Sammle %d Energie (%d/%d)Sammle %d SterneSammle %d EnergieBeende die %d. WeltEinfach rollen!Katapultiert dich in die LuftDu wirst von ihm angezogen. Das ist fast schon Magie!Jage Hindernisse in die LuftGibt dir für ein paar Sekunden Superkräfte!Friert die Luft ein, wodurch du länger fliegstRampeFederMagnetBombePilzStaseNichtsZeitRadiusKraftJaNeinDer allerschönste Platzhalter für einen ConfirmDialog!Willst du wirklich das Spiel beenden?Willst du wirklich deinen gesamten Fortschritt zurücksetzen?Willst du wirklich die erste Welt abschließen? Dadurch wird dein alter Fortschritt GELÖSCHT!Das ist ein Platzhalter über mehrere Zeilen - Extra für Tutorials! Das haut dich um!Willkommen bei Endless Roll! Viel Spaß!Klicke irgendwo auf den Bildschirm, um dort die Rampe zu setzenSuper! Jetzt setze sie vor das HindernisVersuch es erneut!Sehr gut! Jetzt schaffst du bestimmt das nächste LevelAufgabe abgeschlossenToolsToolshopNeuer Slot freigeschaltetNeues Aussehen freigeschaltetEin neues Aussehen und noch viel mehr SpaßLeere AufgabeErreiche Level %d, um dieses Tool freizuschaltenDu kannst Tools auch mitten in der Luft setzen. Achte auf das richtige Timing!Glückwunsch! Du bist ein Level aufgestiegen! Jetzt gehe in den ToolshopFür dieses Level müssen zwei Tools ausgerüstet seinUm ein Tool auszuwählen, klicke einfach daraufSetzte die Rampe vor die Lücke \ No newline at end of file diff --git a/app/build/intermediates/symbols/debug/R.txt b/app/build/intermediates/symbols/debug/R.txt index f70348f..1067ef3 100644 --- a/app/build/intermediates/symbols/debug/R.txt +++ b/app/build/intermediates/symbols/debug/R.txt @@ -857,8 +857,9 @@ int layout unlock_message 0x7f0a0041 int layout world_button 0x7f0a0042 int layout worlds 0x7f0a0043 int mipmap ic_launcher 0x7f0b0000 -int raw background 0x7f0c0000 -int raw ramp 0x7f0c0001 +int raw music_game 0x7f0c0000 +int raw music_menu 0x7f0c0001 +int raw ramp 0x7f0c0002 int string abc_action_bar_home_description 0x7f0d0000 int string abc_action_bar_home_description_format 0x7f0d0001 int string abc_action_bar_home_subtitle_description_format 0x7f0d0002 diff --git a/app/src/main/java/de/frajul/endlessroll/main/GameActivity.java b/app/src/main/java/de/frajul/endlessroll/main/GameActivity.java index 3ddc9ff..055606b 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/GameActivity.java +++ b/app/src/main/java/de/frajul/endlessroll/main/GameActivity.java @@ -92,8 +92,6 @@ public class GameActivity extends Activity implements ExceptionHandler, User.LvU soundManager = new SoundManager(this); soundManager.setSoundOn(dataStorageHandler.readIsSoundOn()); - soundManager.backgroundMusic.getPlayer().setLooping(true); - soundManager.backgroundMusic.start(); levelManager = new LevelManager(this, dataStorageHandler); tutorialManager = new TutorialManager(this); diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/Game.java b/app/src/main/java/de/frajul/endlessroll/main/game/Game.java index b768e47..84a1135 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/game/Game.java +++ b/app/src/main/java/de/frajul/endlessroll/main/game/Game.java @@ -106,6 +106,8 @@ public class Game extends Rendering { } public void countdownFinished() { + GameLog.i("Start music"); + gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().gameMusic); gameState = GameState.RUNNING; } @@ -203,6 +205,7 @@ public class Game extends Rendering { public void tryToPause() { if (gameState == GameState.GAME_OVER || gameState == GameState.LEVEL_FINISHED || gameState == GameState.PAUSED) return; + gameActivity.getSoundManager().gameMusic.pause(); viewManager.showShortMenu(); if (gameState == GameState.COUNTDOWN) viewManager.stopCountdown(); @@ -227,6 +230,8 @@ public class Game extends Rendering { } public void onGameOver(boolean playerExplode) { + gameActivity.getSoundManager().gameMusic.pause(); + //TODO: Die sound if (playerExplode) { scene.getUncategorizedEntities().remove(player); DestroyEffect.EXPLOSION.createEffect(particleSystem, player.getPosition(), @@ -237,6 +242,9 @@ public class Game extends Rendering { } private void onGoalReached() { + gameActivity.getSoundManager().gameMusic.pause(); + //TODO: Goal + firework sound + gameState = GameState.LEVEL_FINISHED; if (!level.isFinished()) gameActivity.getUser().gainLvFinishedEp(); diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/GLTestScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/GLTestScreen.java index 319fffd..4560fbf 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/screens/GLTestScreen.java +++ b/app/src/main/java/de/frajul/endlessroll/main/screens/GLTestScreen.java @@ -24,6 +24,8 @@ public class GLTestScreen extends GLScreen { @Override public void prepareToBeShown() { + gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic); + glView.setCurrentRendering(rendering); } diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/GameScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/GameScreen.java index 603fd92..389ba18 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/screens/GameScreen.java +++ b/app/src/main/java/de/frajul/endlessroll/main/screens/GameScreen.java @@ -29,15 +29,18 @@ public class GameScreen extends GLScreen { @Override public void prepareToBeShown() { + gameActivity.getSoundManager().setCurrentMusic(null); + gameActivity.getSoundManager().menuMusic.reset(); + glView.setCurrentRendering(game); - game.getViewManager().prepareToBeShown(); - } + game.getViewManager().prepareToBeShown(); + } public void onPause() { game.tryToPause(); } - public void setGamePausedWithoutMenu(){ + public void setGamePausedWithoutMenu() { game.pauseWithoutMenu(); } @@ -52,7 +55,7 @@ public class GameScreen extends GLScreen { @Override public void onBackKeyDown() { game.tryToPause(); - if(isLevelFinished()) + if (isLevelFinished()) game.onGoalMessageKeyBack(); } diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/LevelsScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/LevelsScreen.java index f850e05..f614f61 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/screens/LevelsScreen.java +++ b/app/src/main/java/de/frajul/endlessroll/main/screens/LevelsScreen.java @@ -62,6 +62,8 @@ public class LevelsScreen extends Screen implements LevelButtonOnC @Override public void prepareToBeShown() { + gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic); + topBar.update(); build(); } diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/PlayerShapeShopScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/PlayerShapeShopScreen.java index 521f3cd..62e402a 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/screens/PlayerShapeShopScreen.java +++ b/app/src/main/java/de/frajul/endlessroll/main/screens/PlayerShapeShopScreen.java @@ -63,6 +63,8 @@ public class PlayerShapeShopScreen extends Screen implements Pla @Override public void prepareToBeShown() { + gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic); + createViews(); topBar.update(); } diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/SettingsScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/SettingsScreen.java index 529684c..cf4faaf 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/screens/SettingsScreen.java +++ b/app/src/main/java/de/frajul/endlessroll/main/screens/SettingsScreen.java @@ -38,6 +38,8 @@ public class SettingsScreen extends Screen implements View.OnClick @Override public void prepareToBeShown() { + gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic); + topBar.update(); soundToggle.setChecked(gameActivity.getSoundManager().isSoundOn()); resetButton.setEnabled(super.caller != ScreenType.GAME); diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreen.java index 5cf40a9..7915193 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreen.java +++ b/app/src/main/java/de/frajul/endlessroll/main/screens/StartScreen.java @@ -61,6 +61,8 @@ public class StartScreen extends GLScreen implements View.OnClic @Override public void prepareToBeShown() { + gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic); + glView.setCurrentRendering(rendering); ((StartScene) rendering.getScene()).randomizeWorld(); ((StartScene) rendering.getScene()).loadTexturesForCurrentWorld(); diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/ToolShopScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/ToolShopScreen.java index b9a138f..3c6016a 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/screens/ToolShopScreen.java +++ b/app/src/main/java/de/frajul/endlessroll/main/screens/ToolShopScreen.java @@ -87,6 +87,8 @@ public class ToolShopScreen extends Screen implements View.OnCli @Override public void prepareToBeShown() { + gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic); + topBar.update(); slotSettings.unlockSlotsIfLevelReached(gameActivity.getUser().getLevelUpBounties()); onToolOfferSlotSelected(toolOfferSlots.get(0)); diff --git a/app/src/main/java/de/frajul/endlessroll/main/screens/WorldsScreen.java b/app/src/main/java/de/frajul/endlessroll/main/screens/WorldsScreen.java index 33ba8a0..2283a52 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/screens/WorldsScreen.java +++ b/app/src/main/java/de/frajul/endlessroll/main/screens/WorldsScreen.java @@ -42,6 +42,8 @@ public class WorldsScreen extends Screen implements WorldButtonO @Override public void prepareToBeShown() { + gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic); + topBar.update(); for (WorldButton button : worldButtons) button.update(); diff --git a/app/src/main/java/de/frajul/endlessroll/sounds/Music.java b/app/src/main/java/de/frajul/endlessroll/sounds/Music.java index 810105f..02c0af8 100644 --- a/app/src/main/java/de/frajul/endlessroll/sounds/Music.java +++ b/app/src/main/java/de/frajul/endlessroll/sounds/Music.java @@ -33,9 +33,11 @@ public class Music { public void pause() { try { - player.pause(); - paused = true; - pausedPosition = player.getCurrentPosition(); + if (!paused) { + player.pause(); + paused = true; + pausedPosition = player.getCurrentPosition(); + } } catch (Exception e) { handler.onException(e); } @@ -53,7 +55,8 @@ public class Music { public void stop() { try { - player.pause(); + if (!paused) + player.pause(); player.seekTo(0); paused = true; } catch (Exception e) { @@ -73,6 +76,14 @@ public class Music { } } + public void reset() { + try { + player.seekTo(0); + } catch (Exception e) { + handler.onException(e); + } + } + public MediaPlayer getPlayer() { return player; } diff --git a/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java b/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java index 6af479f..75b2865 100644 --- a/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java +++ b/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java @@ -18,19 +18,34 @@ public class SoundManager { private SoundPool soundPool; private boolean soundOn; - public final Music backgroundMusic; + public final Music menuMusic; + public final Music gameMusic; + private Music currentMusic; public SoundManager(GameActivity activity) { this.context = activity; soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0); - backgroundMusic = new Music(activity, activity, R.raw.background); + menuMusic = new Music(activity, activity, R.raw.music_menu); + menuMusic.getPlayer().setLooping(true); + gameMusic = new Music(activity, context, R.raw.music_game); + gameMusic.getPlayer().setLooping(true); ToolType.loadAllPlacingSounds(this); } + public void setCurrentMusic(Music music) { + if (currentMusic != null && !currentMusic.equals(music)) { + currentMusic.pause(); + } + this.currentMusic = music; + if (music != null) + currentMusic.start(); + } + public void setSoundOn(boolean on) { this.soundOn = on; - backgroundMusic.setMute(!on); + menuMusic.setMute(!on); + gameMusic.setMute(!on); } public boolean isSoundOn() { @@ -39,16 +54,19 @@ public class SoundManager { public void pause() { soundPool.autoPause(); - backgroundMusic.pause(); + if (currentMusic != null) + currentMusic.pause(); } public void resume() { soundPool.autoResume(); - backgroundMusic.resume(); + if (currentMusic != null) + currentMusic.resume(); } public void destroy() { - backgroundMusic.getPlayer().release(); + menuMusic.getPlayer().release(); + gameMusic.getPlayer().release(); soundPool.release(); } @@ -67,8 +85,7 @@ public class SoundManager { private float getVolume() { if (soundOn) { AudioManager manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); - float volume = - manager.getStreamVolume(AudioManager.STREAM_MUSIC); + float volume = manager.getStreamVolume(AudioManager.STREAM_MUSIC); float maxVolume = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); return volume / maxVolume; } diff --git a/app/src/main/res/raw/background.ogg b/app/src/main/res/raw/background.ogg deleted file mode 100644 index 6e29fbe..0000000 Binary files a/app/src/main/res/raw/background.ogg and /dev/null differ diff --git a/app/src/main/res/raw/music_game.mp3 b/app/src/main/res/raw/music_game.mp3 new file mode 100644 index 0000000..0cef9d3 Binary files /dev/null and b/app/src/main/res/raw/music_game.mp3 differ diff --git a/app/src/main/res/raw/music_menu.wav b/app/src/main/res/raw/music_menu.wav new file mode 100644 index 0000000..e19b877 Binary files /dev/null and b/app/src/main/res/raw/music_menu.wav differ diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1ef7ce9..c54e7fd 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -9,7 +9,7 @@ Nächstes Level Neustart: Level %d Nächstes Level: %d - Gehe zur nächsten Welt: %s + Gehe zur nächsten Welt:\n%s LÄDT... Weiter Neustart