annotate game/SoundElement.java @ 23:0741dc117808

Remove sound code for later refactoring.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 01 Feb 2011 09:55:09 +0200
parents afde253ec705
children 736de7b28701
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 /*
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 * Ristipolku Game Engine
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 * (C) Copyright 2011 Matti 'ccr' Hämäläinen <ccr@tnsp.org>
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 */
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 package game;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 import java.util.*;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 import java.io.*;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 import game.*;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10 import javax.sound.sampled.*;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 class SoundElement implements Runnable
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15 private final String name;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 private AudioInputStream stream;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 private AudioFormat format;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 private SourceDataLine line;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 private Thread playThread;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21 private int loopCount;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 private boolean playing, streaming;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23 private int volume = 100;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25 byte[] buffer;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26 int length;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29 SoundElement(String filename, boolean streaming) throws IOException
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31 this.name = filename;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
32 this.streaming = streaming;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
33
23
0741dc117808 Remove sound code for later refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
34 /*
22
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35 ResourceLoader res = new ResourceLoader(name);
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36 if (res == null || res.getStream() == null)
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38 throw new IOException("Could not load audio resource '"+name+"'.\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
40
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
41
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42 try {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43 stream = AudioSystem.getAudioInputStream(res.getStream());
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44 format = stream.getFormat();
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46 catch (UnsupportedAudioFileException e) {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
47 throw new IOException("Unsupported audio file format for '"+name+"'.\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49 catch (IOException e)
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51 throw new IOException("Could not load audio resource '"+name+"'.\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
52 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55 if (streaming) {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
56 System.out.print("Loading '"+name+"' as a clip\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
57 try {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
58 clip = AudioSystem.getClip();
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
59 clip.open(stream);
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
61 catch (LineUnavailableException e)
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
62 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
63 throw new IOException("Line unavailable for '"+name+"'.\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
64 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
65 finally {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
66 stream.close();
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
67 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
68 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
69 else
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
70 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
71 clip = null;
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
72 System.out.print("Loading '"+name+"' as stream\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74 try {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
75 SourceDataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
76 System.out.print("info: "+stream.getFrameLength() + ", " + format.getFrameSize() + "\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
77 line = (SourceDataLine) AudioSystem.getLine(info);
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78 line.open(format);
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
79 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
80 catch (LineUnavailableException e) {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
81 throw new IOException("Line unavailable for '"+name+"'.\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83 }
23
0741dc117808 Remove sound code for later refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
84 */
22
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
85 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
86
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
87 public void play()
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
88 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
89 System.out.print("Sound("+name+").play()\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
90 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
91
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
92 public void loop(int n)
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
93 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94 System.out.print("Sound("+name+").loop("+n+")\n");
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
95 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
96
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
97 public void stop()
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
98 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
99 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
100
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
101 public boolean isPlaying()
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
102 {
23
0741dc117808 Remove sound code for later refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
103 return false;
22
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
104 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
105
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
106 public void run()
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
107 {
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
108 }
afde253ec705 More work.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
109 }