diff --git a/Semesterprojekt/src/main/java/thb/jeanluc/adventure/App.java b/Semesterprojekt/src/main/java/thb/jeanluc/adventure/App.java index 70daa3d..ae19bfc 100644 --- a/Semesterprojekt/src/main/java/thb/jeanluc/adventure/App.java +++ b/Semesterprojekt/src/main/java/thb/jeanluc/adventure/App.java @@ -143,5 +143,6 @@ public final class App { new LookCommand().execute(ctx, List.of()); game.run(); + io.setMusic(null); // fade music out when returning to the menu } } diff --git a/Semesterprojekt/src/main/java/thb/jeanluc/adventure/game/Game.java b/Semesterprojekt/src/main/java/thb/jeanluc/adventure/game/Game.java index ed191de..0205c91 100644 --- a/Semesterprojekt/src/main/java/thb/jeanluc/adventure/game/Game.java +++ b/Semesterprojekt/src/main/java/thb/jeanluc/adventure/game/Game.java @@ -109,6 +109,7 @@ public class Game { ctx.getPlayer().getCurrentRoom()); ctx.getIo().setMap(map); ctx.getIo().setQuests(QuestEngine.viewOf(ctx)); + ctx.getIo().setMusic(ctx.getPlayer().getCurrentRoom().getMusic()); } /** diff --git a/Semesterprojekt/src/main/java/thb/jeanluc/adventure/io/GameIO.java b/Semesterprojekt/src/main/java/thb/jeanluc/adventure/io/GameIO.java index ccbdf88..b1a22a1 100644 --- a/Semesterprojekt/src/main/java/thb/jeanluc/adventure/io/GameIO.java +++ b/Semesterprojekt/src/main/java/thb/jeanluc/adventure/io/GameIO.java @@ -65,6 +65,16 @@ public interface GameIO { // no-op } + /** Per-turn current-room music track; null/blank = silence. Console no-op; GUI plays. */ + default void setMusic(String track) { + // no audio in text mode + } + + /** Applies the music volume/level. Console no-op; GUI sets it. */ + default void setMusicLevel(MusicLevel level) { + // no audio in text mode + } + /** On-demand quest log (the 'quests' command). Default renders styled text. */ default void showQuests(QuestView view) { print(QuestText.render(view)); diff --git a/Semesterprojekt/src/test/java/thb/jeanluc/adventure/io/MusicSeamDefaultTest.java b/Semesterprojekt/src/test/java/thb/jeanluc/adventure/io/MusicSeamDefaultTest.java new file mode 100644 index 0000000..0b4a402 --- /dev/null +++ b/Semesterprojekt/src/test/java/thb/jeanluc/adventure/io/MusicSeamDefaultTest.java @@ -0,0 +1,17 @@ +package thb.jeanluc.adventure.io; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class MusicSeamDefaultTest { + + @Test + void defaultMusicSeamsAreSilentNoOps() { + TestIO io = new TestIO(); + io.setMusic("anything.ogg"); + io.setMusic(null); + io.setMusicLevel(MusicLevel.HIGH); + assertThat(io.outputs()).isEmpty(); + } +}