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
- "Điều hướng về trang chủ""%1$s, %2$s""%1$s, %2$s, %3$s""Điều hướng lên trên""Thêm tùy chọn""Xong""Xem tất cả""Chọn một ứng dụng""TẮT""BẬT""Tìm kiếm…""Xóa truy vấn""Tìm kiếm truy vấn""Tìm kiếm""Gửi truy vấn""Tìm kiếm bằng giọng nói""Chia sẻ với""Chia sẻ với %s""Thu gọn""999+"3truetrue4192dip5falsefalse60%90%50%70%45%72%192dip5256dip"转到主屏幕""%1$s:%2$s""%1$s - %2$s:%3$s""转到上一层级""更多选项""完成""查看全部""选择应用""关闭""开启""搜索…""清除查询""搜索查询""搜索""提交查询""语音搜索""分享方式""通过%s分享""收起""999+""瀏覽主頁""%1$s:%2$s""%1$s (%2$s):%3$s""向上瀏覽""更多選項""完成""顯示全部""選擇應用程式""關閉""開啟""搜尋…""清除查詢""搜尋查詢""搜尋""提交查詢""語音搜尋""分享對象""與「%s」分享""收合""999 +""瀏覽首頁""%1$s:%2$s""%1$s - %2$s:%3$s""向上瀏覽""更多選項""完成""查看全部""選擇應用程式""關閉""開啟""搜尋…""清除查詢""搜尋查詢""搜尋""提交查詢""語音搜尋""選擇分享對象""與「%s」分享""收合""999+""Zulazulela ekhaya""%1$s, %2$s""%1$s, %2$s, %3$s""Zulazulela phezulu""Izinketho eziningi""Kwenziwe""Buka konke""Khetha uhlelo lokusebenza""VALIWE""VULIWE""Iyasesha...""Sula inkinga""Umbuzo wosesho""Sesha""Hambisa umbuzo""Ukusesha ngezwi""Yabelana no-""Yabelana no-%s""Goqa""999+"
+ "Điều hướng về trang chủ""%1$s, %2$s""%1$s, %2$s, %3$s""Điều hướng lên trên""Thêm tùy chọn""Xong""Xem tất cả""Chọn một ứng dụng""TẮT""BẬT""Tìm kiếm…""Xóa truy vấn""Tìm kiếm truy vấn""Tìm kiếm""Gửi truy vấn""Tìm kiếm bằng giọng nói""Chia sẻ với""Chia sẻ với %s""Thu gọn""999+"3truetrue4192dip5falsefalse60%90%50%70%45%72%192dip5256dip"转到主屏幕""%1$s:%2$s""%1$s - %2$s:%3$s""转到上一层级""更多选项""完成""查看全部""选择应用""关闭""开启""搜索…""清除查询""搜索查询""搜索""提交查询""语音搜索""分享方式""通过%s分享""收起""999+""瀏覽主頁""%1$s:%2$s""%1$s (%2$s):%3$s""向上瀏覽""更多選項""完成""顯示全部""選擇應用程式""關閉""開啟""搜尋…""清除查詢""搜尋查詢""搜尋""提交查詢""語音搜尋""分享對象""與「%s」分享""收合""999 +""瀏覽首頁""%1$s:%2$s""%1$s - %2$s:%3$s""向上瀏覽""更多選項""完成""查看全部""選擇應用程式""關閉""開啟""搜尋…""清除查詢""搜尋查詢""搜尋""提交查詢""語音搜尋""選擇分享對象""與「%s」分享""收合""999+""Zulazulela ekhaya""%1$s, %2$s""%1$s, %2$s, %3$s""Zulazulela phezulu""Izinketho eziningi""Kwenziwe""Buka konke""Khetha uhlelo lokusebenza""VALIWE""VULIWE""Iyasesha...""Sula inkinga""Umbuzo wosesho""Sesha""Hambisa umbuzo""Ukusesha ngezwi""Yabelana no-""Yabelana no-%s""Goqa""999+"World zer0GrasslandsIcy Mountains
@@ -1371,4 +1371,4 @@
@drawable/xml_background_tutorialtextview#00000015sp
- 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 LevelNeustart: Level %dNächstes Level: %d
- Gehe zur nächsten Welt: %s
+ Gehe zur nächsten Welt:\n%sLÄDT...WeiterNeustart