Initial Sound Thread
This commit is contained in:
parent
fba115173c
commit
ca974cc260
BIN
assets/80-search-intro.wav
Normal file
BIN
assets/80-search-intro.wav
Normal file
Binary file not shown.
BIN
assets/80-search-loop.wav
Normal file
BIN
assets/80-search-loop.wav
Normal file
Binary file not shown.
77
src/main/java/com/fmudanyali/Audio.java
Normal file
77
src/main/java/com/fmudanyali/Audio.java
Normal file
@ -0,0 +1,77 @@
|
||||
package com.fmudanyali;
|
||||
|
||||
import javax.sound.sampled.Clip;
|
||||
import javax.sound.sampled.UnsupportedAudioFileException;
|
||||
import javax.sound.sampled.AudioInputStream;
|
||||
import javax.sound.sampled.AudioSystem;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
public class Audio {
|
||||
private static Queue<String> audioQueue = new LinkedList<String>();
|
||||
private static Clip clip;
|
||||
|
||||
public static void init() throws Exception{
|
||||
clip = AudioSystem.getClip();
|
||||
Thread thread = new Thread(){
|
||||
public void run(){
|
||||
String current = new String();
|
||||
while(!Main.exit){
|
||||
if(audioQueue.isEmpty()){
|
||||
try {
|
||||
Thread.sleep(500);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}else{
|
||||
if(audioQueue.size() == 1){
|
||||
clip.loop(Clip.LOOP_CONTINUOUSLY);
|
||||
try {
|
||||
Thread.sleep(500);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
clip.loop(0);
|
||||
}
|
||||
if(current != audioQueue.peek()){
|
||||
current = audioQueue.peek();
|
||||
try {
|
||||
addAudio(current);
|
||||
Thread.sleep(500);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if(clip.getMicrosecondLength() == clip.getMicrosecondPosition() && audioQueue.size() > 1){
|
||||
audioQueue.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
thread.start();
|
||||
}
|
||||
|
||||
public static void playAudio(String file) throws Exception{
|
||||
File f = new File(FileLoader.getFilePath(file));
|
||||
AudioInputStream audioIn = AudioSystem.getAudioInputStream(f.toURI().toURL());
|
||||
clip.open(audioIn);
|
||||
clip.start();
|
||||
}
|
||||
|
||||
private static void addAudio(String file) throws Exception{
|
||||
File f = new File(FileLoader.getFilePath(file));
|
||||
AudioInputStream audioIn = AudioSystem.getAudioInputStream(f.toURI().toURL());
|
||||
clip.close();
|
||||
clip.open(audioIn);
|
||||
}
|
||||
|
||||
public static void queueAudio(String file){
|
||||
audioQueue.add(file);
|
||||
}
|
||||
}
|
@ -31,6 +31,7 @@ public class Main {
|
||||
}
|
||||
Render.init();
|
||||
Screen.init();
|
||||
Audio.init();
|
||||
scenes.push(new MainMenu());
|
||||
|
||||
while(!scenes.empty() && !exit){
|
||||
@ -38,5 +39,6 @@ public class Main {
|
||||
Keyboard.getKeyboardState();
|
||||
scenes.peek().loop();
|
||||
}
|
||||
exit = true;
|
||||
}
|
||||
}
|
@ -20,6 +20,7 @@ package com.fmudanyali.scenes;
|
||||
import com.fmudanyali.Main;
|
||||
import com.fmudanyali.Screen;
|
||||
import com.fmudanyali.characters.Player;
|
||||
import com.fmudanyali.Audio;
|
||||
|
||||
import static org.libsdl.api.event.SdlEvents.*;
|
||||
import static com.fmudanyali.Render.*;
|
||||
@ -34,6 +35,8 @@ public class Game extends Scene {
|
||||
|
||||
public Game() throws Exception{
|
||||
Screen.makeBackground("scene1/tile.bmp");
|
||||
Audio.queueAudio("80-search-intro.wav");
|
||||
Audio.queueAudio("80-search-loop.wav");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -65,11 +68,6 @@ public class Game extends Scene {
|
||||
|
||||
player.movement();
|
||||
Screen.scroll();
|
||||
++kek;
|
||||
if(kek == 60){
|
||||
System.out.println(escPressed);
|
||||
kek = 0;
|
||||
}
|
||||
|
||||
SDL_RenderClear(renderer);
|
||||
SDL_RenderCopy(renderer, Screen.wallpaper, null, null);
|
||||
|
Reference in New Issue
Block a user