diff --git a/app/build.gradle b/app/build.gradle index 991d437..021c5ee 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId 'de.frajul.endlessroll' minSdkVersion 12 targetSdkVersion 23 - versionCode 4 - versionName '0.4.0' + versionCode 5 + versionName '0.5.0' } buildTypes { release { diff --git a/app/build/intermediates/incremental/mergeDebugResources/merger.xml b/app/build/intermediates/incremental/mergeDebugResources/merger.xml index e8ea3e2..56391fa 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:\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 + 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/manifests/full/debug/AndroidManifest.xml b/app/build/intermediates/manifests/full/debug/AndroidManifest.xml index 4edcdd7..2002bcb 100644 --- a/app/build/intermediates/manifests/full/debug/AndroidManifest.xml +++ b/app/build/intermediates/manifests/full/debug/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="5" + android:versionName="0.5.0" > - - - - - - - - - - - - - \ No newline at end of file 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 9b3d576..fa428b9 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 @@ -88,7 +88,8 @@ public class Game extends Rendering { this.level = level; this.levelPack = levelPack; if (scene != null) { - gameActivity.getSoundManager().gameMusic.reset(); + gameActivity.getSoundManager().getCurrentGameMusic().reset(); + gameActivity.getSoundManager().randomizeCurrentGameMusic(); gameState = GameState.COUNTDOWN; gameActivity.getTutorialManager().resetGameTutorials(); collectedStars.clear(); @@ -108,7 +109,7 @@ public class Game extends Rendering { public void countdownFinished() { gameActivity.getSoundManager().resumeAllSounds(); - gameActivity.getSoundManager().gameMusic.start(); + gameActivity.getSoundManager().getCurrentGameMusic().start(); gameState = GameState.RUNNING; } @@ -207,7 +208,7 @@ public class Game extends Rendering { if (gameState == GameState.GAME_OVER || gameState == GameState.LEVEL_FINISHED || gameState == GameState.PAUSED) return; gameActivity.getSoundManager().pauseAllSounds(); - gameActivity.getSoundManager().gameMusic.pause(); + gameActivity.getSoundManager().getCurrentGameMusic().pause(); viewManager.showShortMenu(); if (gameState == GameState.COUNTDOWN) viewManager.stopCountdown(); @@ -232,7 +233,7 @@ public class Game extends Rendering { } public void onGameOver(boolean playerExplode) { - gameActivity.getSoundManager().gameMusic.stop(); + gameActivity.getSoundManager().getCurrentGameMusic().stop(); gameActivity.getSoundManager().stopAllSounds(); gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().dieSound); if (playerExplode) { @@ -245,7 +246,7 @@ public class Game extends Rendering { } private void onGoalReached() { - gameActivity.getSoundManager().gameMusic.stop(); + gameActivity.getSoundManager().getCurrentGameMusic().stop(); gameActivity.getSoundManager().stopAllSounds(); gameActivity.getSoundManager().playSound(gameActivity.getSoundManager().goalSound); 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 a2b610d..bc45e35 100644 --- a/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java +++ b/app/src/main/java/de/frajul/endlessroll/sounds/SoundManager.java @@ -3,9 +3,11 @@ package de.frajul.endlessroll.sounds; import android.content.Context; import android.media.AudioManager; import android.media.SoundPool; +import android.support.annotation.RawRes; import java.util.ArrayList; import java.util.List; +import java.util.Random; import de.frajul.endlessroll.R; import de.frajul.endlessroll.main.GameActivity; @@ -17,12 +19,14 @@ import de.frajul.endlessroll.main.GameLog; public class SoundManager { private Context context; + private Random random; private SoundPool soundPool; private boolean soundsMuted; private boolean musicMuted; public final Music menuMusic; - public final Music gameMusic; + private List gameMusicList = new ArrayList<>(); + private int currentGameMusicIndex = 0; public final Sound goalSound; public final Sound dieSound; @@ -39,14 +43,16 @@ public class SoundManager { private List allStartedStreams = new ArrayList<>(); - public SoundManager(GameActivity activity) { - this.context = activity; + public SoundManager(GameActivity gameActivity) { + this.context = gameActivity; + random = new Random(); soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); - menuMusic = new Music(activity, activity, R.raw.music_menu); + menuMusic = new Music(gameActivity, gameActivity, R.raw.music_menu); menuMusic.getPlayer().setLooping(true); - gameMusic = new Music(activity, context, R.raw.music_game); - gameMusic.getPlayer().setLooping(true); + gameMusicList.add(createGameMusic(gameActivity, R.raw.music_game_1)); + gameMusicList.add(createGameMusic(gameActivity, R.raw.music_game_2)); + gameMusicList.add(createGameMusic(gameActivity, R.raw.music_game_3)); goalSound = new Sound(loadSound(R.raw.sound_goal)); dieSound = new Sound(loadSound(R.raw.sound_die)); @@ -62,6 +68,22 @@ public class SoundManager { magnetSound = new Sound(loadSound(R.raw.sound_magnet), 0.8f, true); } + private Music createGameMusic(GameActivity gameActivity, @RawRes int musicId) { + Music gameMusic = new Music(gameActivity, context, musicId); + gameMusic.getPlayer().setLooping(true); + return gameMusic; + } + + public void randomizeCurrentGameMusic() { + getCurrentGameMusic().stop(); + int randomIndex = random.nextInt(gameMusicList.size()); + currentGameMusicIndex = randomIndex; + } + + public Music getCurrentGameMusic() { + return gameMusicList.get(currentGameMusicIndex); + } + public void setSoundsMuted(boolean soundsMuted) { this.soundsMuted = soundsMuted; for (SoundStream stream : allStartedStreams) { @@ -74,7 +96,8 @@ public class SoundManager { public void setMusicMuted(boolean musicMuted) { this.musicMuted = musicMuted; menuMusic.setMuted(musicMuted); - gameMusic.setMuted(musicMuted); + for (Music gameMusic : gameMusicList) + gameMusic.setMuted(musicMuted); } public boolean isSoundsMuted() { @@ -87,13 +110,15 @@ public class SoundManager { public void activityPause() { soundPool.autoPause(); - gameMusic.activityPause(); + for (Music gameMusic : gameMusicList) + gameMusic.activityPause(); menuMusic.activityPause(); } public void activityResume() { soundPool.autoResume(); - gameMusic.activityResume(); + for (Music gameMusic : gameMusicList) + gameMusic.activityResume(); menuMusic.activityResume(); } @@ -109,7 +134,8 @@ public class SoundManager { public void destroy() { menuMusic.getPlayer().release(); - gameMusic.getPlayer().release(); + for (Music gameMusic : gameMusicList) + gameMusic.getPlayer().release(); soundPool.release(); } diff --git a/app/src/main/res/layout/start_screen.xml b/app/src/main/res/layout/start_screen.xml index 20b72f0..7f7e90c 100644 --- a/app/src/main/res/layout/start_screen.xml +++ b/app/src/main/res/layout/start_screen.xml @@ -26,7 +26,7 @@ android:layout_marginStart="10dp" android:layout_marginTop="2dp" android:text="@string/start_screen_unlock_all_levels" - android:visibility="visible"/> + android:visibility="gone"/>