diff --git a/defend/src/com/cdm/defend/DefendGame.java b/defend/src/com/cdm/defend/DefendGame.java index f5b46b8..c6f2a44 100644 --- a/defend/src/com/cdm/defend/DefendGame.java +++ b/defend/src/com/cdm/defend/DefendGame.java @@ -43,7 +43,7 @@ public void create() { demoScreen = new LevelScreen(demoGame, demoCampaign, true); optionsScreen = new SoundScreen(this); - SoundScreen.playSong(1); + SoundScreen.playSong(0); setScreen(menuScreen = new MenuScreen(this, demoScreen)); highscoreScreen = new HighScoreScreen(this); inputScreen = new InputScreen(this, c); diff --git a/defend/src/com/cdm/gui/effects/SoundFX.java b/defend/src/com/cdm/gui/effects/SoundFX.java index 3e73401..89b0315 100644 --- a/defend/src/com/cdm/gui/effects/SoundFX.java +++ b/defend/src/com/cdm/gui/effects/SoundFX.java @@ -11,7 +11,7 @@ public class SoundFX { public enum Type { - KLICK, SHOT, SHOT2, HIT, HIT2, HURT, STUNRAY, LOOSE, WIN + KLICK, SHOT, SHOT2, HIT, HIT2, HURT, STUNRAY, LOOSE, WIN, WIN2, LEVEL1, LEVEL2 }; private static Map sounds = new TreeMap(); @@ -31,11 +31,16 @@ public static void Initialize() { Gdx.audio.newSound(Gdx.files.internal("data/punch.ogg"))); sounds.put(Type.STUNRAY, Gdx.audio.newSound(Gdx.files.internal("data/stunray01.ogg"))); - + sounds.put(Type.LEVEL1, + Gdx.audio.newSound(Gdx.files.internal("data/level_completed.ogg"))); + sounds.put(Type.LEVEL2, + Gdx.audio.newSound(Gdx.files.internal("data/next_level.ogg"))); sounds.put(Type.LOOSE, Gdx.audio.newSound(Gdx.files.internal("data/loose.ogg"))); sounds.put(Type.WIN, Gdx.audio.newSound(Gdx.files.internal("data/bonus.ogg"))); + sounds.put(Type.WIN2, + Gdx.audio.newSound(Gdx.files.internal("data/win02.ogg"))); } @@ -46,7 +51,7 @@ public static void dispose() { sounds.clear(); } - public void play(Type type) { + public static void play(Type type) { Sound s = sounds.get(type); if (s != null) s.play(SoundScreen.FXvol); diff --git a/defend/src/com/cdm/view/Campaign.java b/defend/src/com/cdm/view/Campaign.java index da00319..a9f4787 100644 --- a/defend/src/com/cdm/view/Campaign.java +++ b/defend/src/com/cdm/view/Campaign.java @@ -4,6 +4,8 @@ import java.util.List; import com.cdm.Game; +import com.cdm.gui.effects.SoundFX; +import com.cdm.gui.effects.SoundFX.Type; import com.cdm.view.elements.Grid; import com.cdm.view.elements.Level; import com.cdm.view.elements.PlayerState; @@ -29,6 +31,7 @@ public Level getNextLevel(Game game, LevelScreen screen) { level = new Level(game, new Grid(levels.get(plevel)), screen, playerState); levelNo += 1; + SoundFX.play(Type.LEVEL2); if (levelNo >= 11) levelNo = 0; level.setLevelNo(levelNo); diff --git a/defend/src/com/cdm/view/LevelScreen.java b/defend/src/com/cdm/view/LevelScreen.java index 0784572..bd6fe13 100644 --- a/defend/src/com/cdm/view/LevelScreen.java +++ b/defend/src/com/cdm/view/LevelScreen.java @@ -10,6 +10,8 @@ import com.cdm.gui.IUnitTypeSelected; import com.cdm.gui.UnitTypeButton; import com.cdm.gui.WidgetContainer; +import com.cdm.gui.effects.SoundFX; +import com.cdm.gui.effects.SoundFX.Type; import com.cdm.view.elements.Elements; import com.cdm.view.elements.Level; import com.cdm.view.elements.LevelFinishedListener; @@ -315,10 +317,12 @@ public void buttonPressed(String buttonName) { // FIXME move this function in a "Campaign" or game-control class, maybe // "towergame" public void restart() { - if (campaign.playerState.getPoints() >= 100) { + if (campaign.playerState.getPoints() >= 1000) { + SoundScreen.playSong(0); game.setScreen(Screen.INPUT_SCREEN); } else { game.setScreen(Screen.HIGHSCORE_SCREEN); + SoundScreen.playSong(0); campaign.restart(game); setLevel(campaign.getNextLevel(game, this)); } diff --git a/defend/src/com/cdm/view/SoundScreen.java b/defend/src/com/cdm/view/SoundScreen.java index e94e9c8..2654669 100644 --- a/defend/src/com/cdm/view/SoundScreen.java +++ b/defend/src/com/cdm/view/SoundScreen.java @@ -16,7 +16,7 @@ public class SoundScreen extends Screen implements IButtonPressed { private WidgetContainer gui = new WidgetContainer(); private Renderer renderer = new Renderer(); private Game game; - private static Music music, music0, music1, music2; + private static Music music, music0, music1, music2, music3; private static int song = 2; private static boolean stop = false; private Color white = new Color(1, 1, 1, 1); @@ -29,7 +29,8 @@ public SoundScreen(Game pgame) { music0 = Gdx.audio.newMusic(Gdx.files.internal("data/level01.ogg")); music1 = Gdx.audio.newMusic(Gdx.files.internal("data/level02.ogg")); music2 = Gdx.audio.newMusic(Gdx.files.internal("data/level03.ogg")); - music = music1; + music3 = Gdx.audio.newMusic(Gdx.files.internal("data/intro.ogg")); + music = music3; music.setLooping(true); game = pgame; gui.add(new BigButton(Gdx.graphics.getWidth() / 3 + 50, 300, @@ -96,7 +97,7 @@ else if (buttonName.equals("up")) { stop=true; if (music.isPlaying()) music.stop(); - if (song <= 2) { + if (song <= 3) { song += 1; } else song = 1; @@ -106,6 +107,10 @@ else if (buttonName.equals("up")) { music = music1; if (song == 3) music = music2; + if (song == 4) + music = music3; + + } else if (buttonName.equals("FXup")) { if (music != null) { @@ -146,13 +151,16 @@ public static void playSong(int id) { return; if(music!=null) music.stop(); - song=(id%3)+1; + song=(id%3); if (song == 1) music = music0; if (song == 2) music = music1; if (song == 3) music = music2; + if (song == 4) + music = music3; + music.setVolume(vol); music.setLooping(true); music.play(); diff --git a/defend/src/com/cdm/view/enemy/EnemyPlayer.java b/defend/src/com/cdm/view/enemy/EnemyPlayer.java index 69f24f2..9fa1711 100644 --- a/defend/src/com/cdm/view/enemy/EnemyPlayer.java +++ b/defend/src/com/cdm/view/enemy/EnemyPlayer.java @@ -5,6 +5,8 @@ import java.util.SortedSet; import java.util.TreeSet; +import com.cdm.gui.effects.SoundFX; +import com.cdm.gui.effects.SoundFX.Type; import com.cdm.view.Position; import com.cdm.view.elements.EnemyUnits; import com.cdm.view.elements.Level; @@ -87,8 +89,10 @@ public void addTime(float t) { private void startWait() { waveNo += 1; - if (waveNo >= maxLevel) + if (waveNo >= maxLevel) { + SoundFX.play(Type.LEVEL2); levelFinishedListener.levelFinished(); + } mode = Mode.WAIT; timeToNextWave = WAITING_TIME; }