diff --git a/sounds/battle.wav b/sounds/battle.wav new file mode 100644 index 0000000..d330f94 Binary files /dev/null and b/sounds/battle.wav differ diff --git a/sounds/laserShoot.wav b/sounds/laserShoot.wav new file mode 100644 index 0000000..f20ba41 Binary files /dev/null and b/sounds/laserShoot.wav differ diff --git a/src/sig/JavaProjectTemplate.java b/src/sig/JavaProjectTemplate.java index bfe6aa1..ee94d63 100644 --- a/src/sig/JavaProjectTemplate.java +++ b/src/sig/JavaProjectTemplate.java @@ -11,6 +11,7 @@ import sig.engine.Point; import sig.engine.Sprite; import sig.engine.Transform; import sig.engine.PolygonStructure; +import sig.engine.Sound; import java.awt.event.KeyEvent; import java.util.List; @@ -32,10 +33,14 @@ public class JavaProjectTemplate { Player pl = new Player(); Sprite bookSpr = new Sprite("book.png"); + Sound backgroundMusic = new Sound("battle.wav",true); + Sound laserShootSound = new Sound("laserShoot.wav"); + public void initializeGame(){ //Initialize your game here. game.SetBorderColor(Color.BRIGHT_BLACK); game.Cursor_SetCursor(new Sprite("cursor.png"),0,0); + backgroundMusic.play(); } public void updateGame(double fElapsedTime) { @@ -57,6 +62,9 @@ public class JavaProjectTemplate { if (Key.isHeld(KeyEvent.VK_S)) { pl.y+=200*fElapsedTime; } + if (Key.isPressed(KeyEvent.VK_SPACE)) { + laserShootSound.play(); + } if (Mouse.isPressed(2)) { //If middle click is pressed, reset the player position. pl.x=pl.y=200; diff --git a/src/sig/engine/Panel.java b/src/sig/engine/Panel.java index fcded8a..6860b91 100644 --- a/src/sig/engine/Panel.java +++ b/src/sig/engine/Panel.java @@ -65,6 +65,8 @@ public class Panel extends JPanel implements Runnable,KeyListener { public static Panel p; public static JFrame f; + List currentlyPlayingSounds = new ArrayList(); + int ACTUAL_WINDOW_WIDTH=JavaProjectTemplate.WINDOW_WIDTH,ACTUAL_WINDOW_HEIGHT=JavaProjectTemplate.WINDOW_HEIGHT; Point vViewSize = new Point(1,1); Point vViewPos = new Point(1,1); diff --git a/src/sig/engine/Sound.java b/src/sig/engine/Sound.java new file mode 100644 index 0000000..f87805d --- /dev/null +++ b/src/sig/engine/Sound.java @@ -0,0 +1,57 @@ +package sig.engine; + +import java.io.File; +import java.io.IOException; + +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; + +public class Sound { + public final static File SOUNDS_FOLDER = new File("..","sounds"); + AudioInputStream data; + Clip c; + boolean loop; + public Sound(java.lang.String filename){ + this(filename,false); + } + public Sound(java.lang.String filename,boolean loop) { + this.loop=loop; + try { + data=AudioSystem.getAudioInputStream(new File(SOUNDS_FOLDER.getAbsolutePath(),filename)); + c = AudioSystem.getClip(); + c.open(data); + System.out.println("Loaded sound for "+filename+"."); + } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) { + e.printStackTrace(); + System.err.println("ERROR: Failed to load sound in "+filename+"."); + } + } + public void play(){ + c.setFramePosition(0); + c.loop((loop)?Clip.LOOP_CONTINUOUSLY:0); + } + public boolean isPlaying(){ + return c.isRunning(); + } + public void unload(){ + try { + c.close(); + data.close(); + c=null; + } catch (IOException e) { + e.printStackTrace(); + } + } + public boolean canLoop(){ + return loop; + } + public void setCanLoop(boolean canLoop) { + loop=canLoop; + if (c!=null) { + c.loop((loop)?Clip.LOOP_CONTINUOUSLY:0); + } + } +} diff --git a/src/sig/engine/Sprite.java b/src/sig/engine/Sprite.java index 50849ff..f1374e3 100644 --- a/src/sig/engine/Sprite.java +++ b/src/sig/engine/Sprite.java @@ -25,10 +25,11 @@ public class Sprite{ this.width=img.getWidth(); this.height=img.getHeight(); this.img=img; + System.out.println("Loaded sprite for "+filename+"."); } catch (IOException e) { e.printStackTrace(); + System.err.println("ERROR: Failed to load sprite in "+filename+"."); } - System.out.println("Loaded sprite for "+filename+"."); } public BufferedImage getImg() {