Added music (no sounds yet)

Fixed translation mistake
This commit is contained in:
= 2018-01-15 18:47:27 +01:00
parent b66979508c
commit 53b9b6bb14
18 changed files with 75 additions and 23 deletions

File diff suppressed because one or more lines are too long

View File

@ -857,8 +857,9 @@ int layout unlock_message 0x7f0a0041
int layout world_button 0x7f0a0042 int layout world_button 0x7f0a0042
int layout worlds 0x7f0a0043 int layout worlds 0x7f0a0043
int mipmap ic_launcher 0x7f0b0000 int mipmap ic_launcher 0x7f0b0000
int raw background 0x7f0c0000 int raw music_game 0x7f0c0000
int raw ramp 0x7f0c0001 int raw music_menu 0x7f0c0001
int raw ramp 0x7f0c0002
int string abc_action_bar_home_description 0x7f0d0000 int string abc_action_bar_home_description 0x7f0d0000
int string abc_action_bar_home_description_format 0x7f0d0001 int string abc_action_bar_home_description_format 0x7f0d0001
int string abc_action_bar_home_subtitle_description_format 0x7f0d0002 int string abc_action_bar_home_subtitle_description_format 0x7f0d0002

View File

@ -92,8 +92,6 @@ public class GameActivity extends Activity implements ExceptionHandler, User.LvU
soundManager = new SoundManager(this); soundManager = new SoundManager(this);
soundManager.setSoundOn(dataStorageHandler.readIsSoundOn()); soundManager.setSoundOn(dataStorageHandler.readIsSoundOn());
soundManager.backgroundMusic.getPlayer().setLooping(true);
soundManager.backgroundMusic.start();
levelManager = new LevelManager(this, dataStorageHandler); levelManager = new LevelManager(this, dataStorageHandler);
tutorialManager = new TutorialManager(this); tutorialManager = new TutorialManager(this);

View File

@ -106,6 +106,8 @@ public class Game extends Rendering<GameScene> {
} }
public void countdownFinished() { public void countdownFinished() {
GameLog.i("Start music");
gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().gameMusic);
gameState = GameState.RUNNING; gameState = GameState.RUNNING;
} }
@ -203,6 +205,7 @@ public class Game extends Rendering<GameScene> {
public void tryToPause() { public void tryToPause() {
if (gameState == GameState.GAME_OVER || gameState == GameState.LEVEL_FINISHED || gameState == GameState.PAUSED) if (gameState == GameState.GAME_OVER || gameState == GameState.LEVEL_FINISHED || gameState == GameState.PAUSED)
return; return;
gameActivity.getSoundManager().gameMusic.pause();
viewManager.showShortMenu(); viewManager.showShortMenu();
if (gameState == GameState.COUNTDOWN) if (gameState == GameState.COUNTDOWN)
viewManager.stopCountdown(); viewManager.stopCountdown();
@ -227,6 +230,8 @@ public class Game extends Rendering<GameScene> {
} }
public void onGameOver(boolean playerExplode) { public void onGameOver(boolean playerExplode) {
gameActivity.getSoundManager().gameMusic.pause();
//TODO: Die sound
if (playerExplode) { if (playerExplode) {
scene.getUncategorizedEntities().remove(player); scene.getUncategorizedEntities().remove(player);
DestroyEffect.EXPLOSION.createEffect(particleSystem, player.getPosition(), DestroyEffect.EXPLOSION.createEffect(particleSystem, player.getPosition(),
@ -237,6 +242,9 @@ public class Game extends Rendering<GameScene> {
} }
private void onGoalReached() { private void onGoalReached() {
gameActivity.getSoundManager().gameMusic.pause();
//TODO: Goal + firework sound
gameState = GameState.LEVEL_FINISHED; gameState = GameState.LEVEL_FINISHED;
if (!level.isFinished()) if (!level.isFinished())
gameActivity.getUser().gainLvFinishedEp(); gameActivity.getUser().gainLvFinishedEp();

View File

@ -24,6 +24,8 @@ public class GLTestScreen extends GLScreen<RelativeLayout> {
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic);
glView.setCurrentRendering(rendering); glView.setCurrentRendering(rendering);
} }

View File

@ -29,15 +29,18 @@ public class GameScreen extends GLScreen<RelativeLayout> {
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
gameActivity.getSoundManager().setCurrentMusic(null);
gameActivity.getSoundManager().menuMusic.reset();
glView.setCurrentRendering(game); glView.setCurrentRendering(game);
game.getViewManager().prepareToBeShown(); game.getViewManager().prepareToBeShown();
} }
public void onPause() { public void onPause() {
game.tryToPause(); game.tryToPause();
} }
public void setGamePausedWithoutMenu(){ public void setGamePausedWithoutMenu() {
game.pauseWithoutMenu(); game.pauseWithoutMenu();
} }
@ -52,7 +55,7 @@ public class GameScreen extends GLScreen<RelativeLayout> {
@Override @Override
public void onBackKeyDown() { public void onBackKeyDown() {
game.tryToPause(); game.tryToPause();
if(isLevelFinished()) if (isLevelFinished())
game.onGoalMessageKeyBack(); game.onGoalMessageKeyBack();
} }

View File

@ -62,6 +62,8 @@ public class LevelsScreen extends Screen<LinearLayout> implements LevelButtonOnC
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic);
topBar.update(); topBar.update();
build(); build();
} }

View File

@ -63,6 +63,8 @@ public class PlayerShapeShopScreen extends Screen<RelativeLayout> implements Pla
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic);
createViews(); createViews();
topBar.update(); topBar.update();
} }

View File

@ -38,6 +38,8 @@ public class SettingsScreen extends Screen<LinearLayout> implements View.OnClick
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic);
topBar.update(); topBar.update();
soundToggle.setChecked(gameActivity.getSoundManager().isSoundOn()); soundToggle.setChecked(gameActivity.getSoundManager().isSoundOn());
resetButton.setEnabled(super.caller != ScreenType.GAME); resetButton.setEnabled(super.caller != ScreenType.GAME);

View File

@ -61,6 +61,8 @@ public class StartScreen extends GLScreen<RelativeLayout> implements View.OnClic
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic);
glView.setCurrentRendering(rendering); glView.setCurrentRendering(rendering);
((StartScene) rendering.getScene()).randomizeWorld(); ((StartScene) rendering.getScene()).randomizeWorld();
((StartScene) rendering.getScene()).loadTexturesForCurrentWorld(); ((StartScene) rendering.getScene()).loadTexturesForCurrentWorld();

View File

@ -87,6 +87,8 @@ public class ToolShopScreen extends Screen<RelativeLayout> implements View.OnCli
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic);
topBar.update(); topBar.update();
slotSettings.unlockSlotsIfLevelReached(gameActivity.getUser().getLevelUpBounties()); slotSettings.unlockSlotsIfLevelReached(gameActivity.getUser().getLevelUpBounties());
onToolOfferSlotSelected(toolOfferSlots.get(0)); onToolOfferSlotSelected(toolOfferSlots.get(0));

View File

@ -42,6 +42,8 @@ public class WorldsScreen extends Screen<RelativeLayout> implements WorldButtonO
@Override @Override
public void prepareToBeShown() { public void prepareToBeShown() {
gameActivity.getSoundManager().setCurrentMusic(gameActivity.getSoundManager().menuMusic);
topBar.update(); topBar.update();
for (WorldButton button : worldButtons) for (WorldButton button : worldButtons)
button.update(); button.update();

View File

@ -33,9 +33,11 @@ public class Music {
public void pause() { public void pause() {
try { try {
player.pause(); if (!paused) {
paused = true; player.pause();
pausedPosition = player.getCurrentPosition(); paused = true;
pausedPosition = player.getCurrentPosition();
}
} catch (Exception e) { } catch (Exception e) {
handler.onException(e); handler.onException(e);
} }
@ -53,7 +55,8 @@ public class Music {
public void stop() { public void stop() {
try { try {
player.pause(); if (!paused)
player.pause();
player.seekTo(0); player.seekTo(0);
paused = true; paused = true;
} catch (Exception e) { } 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() { public MediaPlayer getPlayer() {
return player; return player;
} }

View File

@ -18,19 +18,34 @@ public class SoundManager {
private SoundPool soundPool; private SoundPool soundPool;
private boolean soundOn; private boolean soundOn;
public final Music backgroundMusic; public final Music menuMusic;
public final Music gameMusic;
private Music currentMusic;
public SoundManager(GameActivity activity) { public SoundManager(GameActivity activity) {
this.context = activity; this.context = activity;
soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0); 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); 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) { public void setSoundOn(boolean on) {
this.soundOn = on; this.soundOn = on;
backgroundMusic.setMute(!on); menuMusic.setMute(!on);
gameMusic.setMute(!on);
} }
public boolean isSoundOn() { public boolean isSoundOn() {
@ -39,16 +54,19 @@ public class SoundManager {
public void pause() { public void pause() {
soundPool.autoPause(); soundPool.autoPause();
backgroundMusic.pause(); if (currentMusic != null)
currentMusic.pause();
} }
public void resume() { public void resume() {
soundPool.autoResume(); soundPool.autoResume();
backgroundMusic.resume(); if (currentMusic != null)
currentMusic.resume();
} }
public void destroy() { public void destroy() {
backgroundMusic.getPlayer().release(); menuMusic.getPlayer().release();
gameMusic.getPlayer().release();
soundPool.release(); soundPool.release();
} }
@ -67,8 +85,7 @@ public class SoundManager {
private float getVolume() { private float getVolume() {
if (soundOn) { if (soundOn) {
AudioManager manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); AudioManager manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
float volume = float volume = manager.getStreamVolume(AudioManager.STREAM_MUSIC);
manager.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); float maxVolume = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
return volume / maxVolume; return volume / maxVolume;
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -9,7 +9,7 @@
<string name="message_next_level">Nächstes Level</string> <string name="message_next_level">Nächstes Level</string>
<string name="goal_message_restart_format_d">Neustart: Level %d</string> <string name="goal_message_restart_format_d">Neustart: Level %d</string>
<string name="goal_message_next_level_format_d">Nächstes Level: %d</string> <string name="goal_message_next_level_format_d">Nächstes Level: %d</string>
<string name="goal_message_next_world_format_s">Gehe zur nächsten Welt: %s</string> <string name="goal_message_next_world_format_s">Gehe zur nächsten Welt:\n%s</string>
<string name="pre_start_screen_loading">LÄDT...</string> <string name="pre_start_screen_loading">LÄDT...</string>
<string name="short_menu_continue">Weiter</string> <string name="short_menu_continue">Weiter</string>
<string name="short_menu_restart">Neustart</string> <string name="short_menu_restart">Neustart</string>