diff options
5 files changed, 93 insertions, 9 deletions
diff --git a/src/com/fourisland/fourpuzzle/Audio.java b/src/com/fourisland/fourpuzzle/Audio.java index 5fe0dfc..3e40e6a 100755 --- a/src/com/fourisland/fourpuzzle/Audio.java +++ b/src/com/fourisland/fourpuzzle/Audio.java | |||
@@ -5,7 +5,6 @@ | |||
5 | 5 | ||
6 | package com.fourisland.fourpuzzle; | 6 | package com.fourisland.fourpuzzle; |
7 | 7 | ||
8 | import com.fourisland.fourpuzzle.util.MidiParser; | ||
9 | import com.fourisland.fourpuzzle.util.ObjectLoader; | 8 | import com.fourisland.fourpuzzle.util.ObjectLoader; |
10 | import java.util.concurrent.Executor; | 9 | import java.util.concurrent.Executor; |
11 | import java.util.concurrent.Executors; | 10 | import java.util.concurrent.Executors; |
@@ -14,6 +13,7 @@ import java.util.logging.Logger; | |||
14 | import javax.sound.midi.InvalidMidiDataException; | 13 | import javax.sound.midi.InvalidMidiDataException; |
15 | import javax.sound.midi.MidiSystem; | 14 | import javax.sound.midi.MidiSystem; |
16 | import javax.sound.midi.MidiUnavailableException; | 15 | import javax.sound.midi.MidiUnavailableException; |
16 | import javax.sound.midi.Sequence; | ||
17 | import javax.sound.midi.Sequencer; | 17 | import javax.sound.midi.Sequencer; |
18 | import javax.sound.sampled.Clip; | 18 | import javax.sound.sampled.Clip; |
19 | 19 | ||
@@ -64,8 +64,16 @@ public class Audio { | |||
64 | 64 | ||
65 | public static void playMusic(String file, boolean loop, float speed) | 65 | public static void playMusic(String file, boolean loop, float speed) |
66 | { | 66 | { |
67 | Sequence s = ObjectLoader.getMusic(file); | ||
68 | |||
69 | if ((seq.getSequence() != null) && (seq.getSequence().equals(s))) | ||
70 | { | ||
71 | return; | ||
72 | } | ||
73 | |||
67 | try { | 74 | try { |
68 | seq.setSequence(ObjectLoader.getMusic(file)); | 75 | seq.setSequence(s); |
76 | seq.setTickPosition(0); | ||
69 | 77 | ||
70 | if (loop) { | 78 | if (loop) { |
71 | seq.setLoopCount(seq.LOOP_CONTINUOUSLY); | 79 | seq.setLoopCount(seq.LOOP_CONTINUOUSLY); |
@@ -86,6 +94,12 @@ public class Audio { | |||
86 | if (seq != null) | 94 | if (seq != null) |
87 | { | 95 | { |
88 | seq.stop(); | 96 | seq.stop(); |
97 | |||
98 | try { | ||
99 | seq.setSequence((Sequence) null); | ||
100 | } catch (InvalidMidiDataException ex) { | ||
101 | Logger.getLogger(Audio.class.getName()).log(Level.SEVERE, null, ex); | ||
102 | } | ||
89 | } | 103 | } |
90 | } | 104 | } |
91 | 105 | ||
diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/Map.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/Map.java index d02c7ed..bb40b39 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/Map.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/Map.java | |||
@@ -182,9 +182,31 @@ public abstract class Map { | |||
182 | { | 182 | { |
183 | return music; | 183 | return music; |
184 | } | 184 | } |
185 | public void setMusic(String music) | 185 | |
186 | /** | ||
187 | * Sets the name of the Music file to play when this Map loads | ||
188 | * | ||
189 | * When this function is run, it also sets the MusicType to Specified | ||
190 | * automatically as the only time this function would be used would be when | ||
191 | * the MusicType was Specified. | ||
192 | * | ||
193 | * @param music | ||
194 | */ | ||
195 | protected void setMusic(String music) | ||
186 | { | 196 | { |
187 | this.music = music; | 197 | this.music = music; |
198 | this.musicType = MapMusicType.Specified; | ||
199 | } | ||
200 | |||
201 | private MapMusicType musicType = MapMusicType.NoChange; | ||
202 | public MapMusicType getMusicType() | ||
203 | { | ||
204 | return musicType; | ||
205 | } | ||
206 | |||
207 | protected void setMusicType(MapMusicType musicType) | ||
208 | { | ||
209 | this.musicType = musicType; | ||
188 | } | 210 | } |
189 | 211 | ||
190 | BufferedImage lowerLayer = null; | 212 | BufferedImage lowerLayer = null; |
diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/MapMusicType.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapMusicType.java new file mode 100644 index 0000000..52fd712 --- /dev/null +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapMusicType.java | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * To change this template, choose Tools | Templates | ||
3 | * and open the template in the editor. | ||
4 | */ | ||
5 | |||
6 | package com.fourisland.fourpuzzle.gamestate.mapview; | ||
7 | |||
8 | /** | ||
9 | * | ||
10 | * @author hatkirby | ||
11 | */ | ||
12 | public enum MapMusicType { | ||
13 | /** | ||
14 | * NoMusic represents the instance where no Music should be played | ||
15 | */ | ||
16 | NoMusic, | ||
17 | /** | ||
18 | * NoChange represents the instance where the currently playing Music (or | ||
19 | * silence) should be kept | ||
20 | */ | ||
21 | NoChange, | ||
22 | /** | ||
23 | * Specified represents the instance where a specified Music file should be | ||
24 | * played | ||
25 | */ | ||
26 | Specified | ||
27 | } | ||
diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java index 9924c9e..52a56c4 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java | |||
@@ -50,18 +50,17 @@ public class MapViewGameState implements GameState { | |||
50 | 50 | ||
51 | public void initalize() | 51 | public void initalize() |
52 | { | 52 | { |
53 | //if (!currentMap.getMusic().equals("")) | 53 | switch (currentMap.getMusicType()) |
54 | { | 54 | { |
55 | // Audio.playMusic(currentMap.getMusic()); | 55 | case NoMusic: Audio.stopMusic(); break; |
56 | case NoChange: break; | ||
57 | case Specified: Audio.playMusic(currentMap.getMusic()); break; | ||
56 | } | 58 | } |
57 | } | 59 | } |
58 | 60 | ||
59 | public void deinitalize() | 61 | public void deinitalize() |
60 | { | 62 | { |
61 | //if (!currentMap.getMusic().equals("")) | 63 | // Do nothing, yet |
62 | { | ||
63 | Audio.stopMusic(); | ||
64 | } | ||
65 | } | 64 | } |
66 | 65 | ||
67 | public void processInput() | 66 | public void processInput() |
diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java index 22e464d..7ca08ff 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java | |||
@@ -298,4 +298,26 @@ public class SpecialEvent { | |||
298 | })); | 298 | })); |
299 | } | 299 | } |
300 | 300 | ||
301 | /** | ||
302 | * Starts playing a Music file | ||
303 | * | ||
304 | * @param filename The name of the Music file to play | ||
305 | * @param loop Whether or not you want this Music to loop | ||
306 | * @param speed The Tempo Factor. If this is 1, the Music will play at | ||
307 | * normal speed. If this is 2, the Music will play at twice the normal | ||
308 | * speed, and so on. | ||
309 | */ | ||
310 | public void PlayMusic(String filename, boolean loop, float speed) | ||
311 | { | ||
312 | Audio.playMusic(filename, loop, speed); | ||
313 | } | ||
314 | |||
315 | /** | ||
316 | * Stops playing the currently playing Music file | ||
317 | */ | ||
318 | public void StopMusic() | ||
319 | { | ||
320 | Audio.stopMusic(); | ||
321 | } | ||
322 | |||
301 | } | 323 | } |