diff --git a/app/src/main/java/org/toop/Main.java b/app/src/main/java/org/toop/Main.java index a99a5d5..03205ed 100644 --- a/app/src/main/java/org/toop/Main.java +++ b/app/src/main/java/org/toop/Main.java @@ -1,27 +1,26 @@ package org.toop; import org.toop.app.gui.LocalServerSelector; +import org.toop.framework.audio.AudioFiles; +import org.toop.framework.audio.SoundManager; +import org.toop.framework.audio.events.AudioEvents; +import org.toop.framework.eventbus.EventFlow; import org.toop.framework.networking.NetworkingClientManager; import org.toop.framework.networking.NetworkingInitializationException; -import org.toop.framework.audio.AudioFilesManager; import javax.sound.sampled.*; -import java.io.File; import java.io.IOException; +import java.nio.file.NotDirectoryException; public class Main { static void main(String[] args) throws IOException, UnsupportedAudioFileException, LineUnavailableException { - AudioFilesManager audioFiles = new AudioFilesManager("app/src/main/resources/audio/"); - String aFile = audioFiles.getAudioFile("hdchirp_88k_log.wav"); - AudioInputStream audioStream = AudioSystem.getAudioInputStream(new File(aFile)); - Clip clip = AudioSystem.getClip(); - clip.open(audioStream); - clip.start(); initSystems(); + new EventFlow().addPostEvent(new AudioEvents.PlayAudio("mainmenu", true)).asyncPostEvent(); javax.swing.SwingUtilities.invokeLater(LocalServerSelector::new); } - private static void initSystems() throws NetworkingInitializationException { + private static void initSystems() throws NetworkingInitializationException, NotDirectoryException { new NetworkingClientManager(); + new SoundManager(new AudioFiles("app/src/main/resources/audio/")); } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/toop/tictactoe/gui/UIGameBoard.java b/app/src/main/java/org/toop/tictactoe/gui/UIGameBoard.java index a8c0027..0c54a6b 100644 --- a/app/src/main/java/org/toop/tictactoe/gui/UIGameBoard.java +++ b/app/src/main/java/org/toop/tictactoe/gui/UIGameBoard.java @@ -8,6 +8,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.toop.app.gui.LocalGameSelector; import org.toop.app.gui.RemoteGameSelector; +import org.toop.framework.audio.events.AudioEvents; +import org.toop.framework.eventbus.EventFlow; import org.toop.game.Game; import org.toop.tictactoe.LocalTicTacToe; @@ -95,6 +97,9 @@ public class UIGameBoard { } this.localTicTacToe.move(index); cells[index].setText(currentPlayer); + new EventFlow().addPostEvent( + new AudioEvents.PlayAudio("hitsound0", false) + ).asyncPostEvent(); } else { logger.info( "Player " @@ -123,10 +128,19 @@ public class UIGameBoard { Color color; if (state == Game.State.WIN && playerMove.equals(currentPlayer)) { color = new Color(160, 220, 160); + new EventFlow().addPostEvent( + new AudioEvents.PlayAudio("winsound", false) + ).asyncPostEvent(); } else if (state == Game.State.WIN) { color = new Color(220, 160, 160); + new EventFlow().addPostEvent( + new AudioEvents.PlayAudio("sadtrombone", false) + ).asyncPostEvent(); } else if (state == Game.State.DRAW) { color = new Color(220, 220, 160); + new EventFlow().addPostEvent( + new AudioEvents.PlayAudio("dramatic", false) + ).asyncPostEvent(); } else { color = new Color(220, 220, 220); } diff --git a/app/src/main/resources/audio/sadtrombone.wav b/app/src/main/resources/audio/sadtrombone.wav new file mode 100644 index 0000000..7eb18e6 Binary files /dev/null and b/app/src/main/resources/audio/sadtrombone.wav differ diff --git a/app/src/main/resources/audio/scawymusic.wav b/app/src/main/resources/audio/scawymusic.wav new file mode 100644 index 0000000..9626b59 Binary files /dev/null and b/app/src/main/resources/audio/scawymusic.wav differ diff --git a/app/src/main/resources/audio/winsound.wav b/app/src/main/resources/audio/winsound.wav new file mode 100644 index 0000000..d72a386 Binary files /dev/null and b/app/src/main/resources/audio/winsound.wav differ diff --git a/framework/src/main/java/org/toop/framework/assets/Asset.java b/framework/src/main/java/org/toop/framework/assets/Asset.java new file mode 100644 index 0000000..735b46a --- /dev/null +++ b/framework/src/main/java/org/toop/framework/assets/Asset.java @@ -0,0 +1,24 @@ +package org.toop.framework.assets; + +import org.toop.framework.SnowflakeGenerator; + +import java.nio.file.Path; + +public class Asset { + private Long id; + private String name; + private Path assetPath; + private String asset; + + public Asset(String name, Path assetPath) { + this.id = new SnowflakeGenerator().nextId(); + this.name = name; + this.assetPath = assetPath; + } + + private void loadAsset() { + java.nio.file.Path + this.asset = this.assetPath; + } + +} diff --git a/framework/src/main/java/org/toop/framework/assets/AssetManager.java b/framework/src/main/java/org/toop/framework/assets/AssetManager.java new file mode 100644 index 0000000..41d0ec6 --- /dev/null +++ b/framework/src/main/java/org/toop/framework/assets/AssetManager.java @@ -0,0 +1,12 @@ +package org.toop.framework.assets; + +import java.util.HashMap; + +public class AssetManager { + + private HashMap assets = new HashMap<>(); + + public AssetManager() { + + } +}