Crossfire JXClient, Trunk
src
gui
src
main
java
com
realtime
crossfire
jxclient
sound
MusicManager.java
Go to the documentation of this file.
1
/*
2
* This file is part of JXClient, the Fullscreen Java Crossfire Client.
3
*
4
* JXClient is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
8
*
9
* JXClient is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with JXClient; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
*
18
* Copyright (C) 2005-2008 Yann Chachkoff
19
* Copyright (C) 2006-2017,2019-2023 Andreas Kirschbaum
20
* Copyright (C) 2010-2012,2014-2018,2020-2023 Nicolas Weeger
21
*/
22
23
package
com.realtime.crossfire.jxclient.sound;
24
25
import
com
.
realtime
.
crossfire
.
jxclient
.
util
.
DebugWriter
;
26
import
java.util.Objects;
27
import
org.jetbrains.annotations.NotNull;
28
import
org.jetbrains.annotations.Nullable;
29
35
public
class
MusicManager
{
36
40
@NotNull
41
private
final
AudioFileLoader
audioFileLoader
;
42
47
@Nullable
48
private
final
DebugWriter
debugSound
;
49
54
@Nullable
55
private
Processor
processor
;
56
61
@Nullable
62
private
Thread
thread
;
63
67
private
boolean
enabled
;
68
72
private
boolean
muted
=
true
;
73
78
@Nullable
79
private
CharSequence
name
;
80
87
public
MusicManager
(@NotNull
final
AudioFileLoader
audioFileLoader
, @Nullable
final
DebugWriter
debugSound
) {
88
this.audioFileLoader =
audioFileLoader
;
89
this.debugSound =
debugSound
;
90
}
91
97
public
void
play
(@Nullable
final
CharSequence
name
) {
98
if
(Objects.equals(
this
.name,
name
)) {
99
return
;
100
}
101
102
if
(
debugSound
!=
null
) {
103
debugSound
.
debugProtocolWrite
(
"play: "
+
name
);
104
}
105
this.name =
name
;
106
restart
();
107
}
108
113
public
void
setEnabled
(
final
boolean
enabled
) {
114
if
(this.enabled ==
enabled
) {
115
return
;
116
}
117
118
if
(
debugSound
!=
null
) {
119
debugSound
.
debugProtocolWrite
(
"setEnabled: "
+
enabled
);
120
}
121
this.enabled =
enabled
;
122
restart
();
123
}
124
129
public
void
setMuted
(
final
boolean
muted
) {
130
if
(this.muted ==
muted
) {
131
return
;
132
}
133
134
if
(
debugSound
!=
null
) {
135
debugSound
.
debugProtocolWrite
(
"setMuted: "
+
muted
);
136
}
137
this.muted =
muted
;
138
restart
();
139
}
140
145
private
void
restart
() {
146
if
(
processor
!=
null
) {
147
processor
.
terminate
(
enabled
);
148
processor
=
null
;
149
}
150
151
if
(
enabled
&& !
muted
&&
name
!=
null
) {
152
processor
=
new
Processor
(
name
,
audioFileLoader
);
153
thread
=
new
Thread(
processor
,
"JXClient:MusicManager"
);
154
thread
.start();
155
}
156
}
157
161
public
void
shutdown
() {
162
if
(
processor
!=
null
) {
163
processor
.
terminate
(
false
);
164
processor
=
null
;
165
}
166
if
(
thread
!=
null
) {
167
try
{
168
thread
.join();
169
}
catch
(
final
InterruptedException ex) {
170
throw
new
AssertionError(ex);
171
}
172
thread
=
null
;
173
}
174
}
175
176
}
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.sound.MusicManager.setEnabled
void setEnabled(final boolean enabled)
Definition:
MusicManager.java:113
com.realtime.crossfire.jxclient.sound.MusicManager.play
void play(@Nullable final CharSequence name)
Definition:
MusicManager.java:97
com.realtime.crossfire.jxclient.sound.MusicManager.enabled
boolean enabled
Definition:
MusicManager.java:67
com.realtime.crossfire.jxclient.sound.MusicManager.MusicManager
MusicManager(@NotNull final AudioFileLoader audioFileLoader, @Nullable final DebugWriter debugSound)
Definition:
MusicManager.java:87
com.realtime.crossfire.jxclient.sound.MusicManager
Definition:
MusicManager.java:35
com.realtime.crossfire.jxclient.sound.MusicManager.thread
Thread thread
Definition:
MusicManager.java:62
com.realtime.crossfire.jxclient.sound.MusicManager.muted
boolean muted
Definition:
MusicManager.java:72
com.realtime.crossfire.jxclient.sound.MusicManager.restart
void restart()
Definition:
MusicManager.java:145
com.realtime.crossfire.jxclient.sound.MusicManager.debugSound
final DebugWriter debugSound
Definition:
MusicManager.java:48
com.realtime.crossfire.jxclient.sound.MusicManager.name
CharSequence name
Definition:
MusicManager.java:79
com.realtime.crossfire.jxclient.sound.MusicManager.audioFileLoader
final AudioFileLoader audioFileLoader
Definition:
MusicManager.java:41
com.realtime.crossfire.jxclient.sound.MusicManager.setMuted
void setMuted(final boolean muted)
Definition:
MusicManager.java:129
com.realtime.crossfire.jxclient.sound.AudioFileLoader
Definition:
AudioFileLoader.java:41
com.realtime.crossfire.jxclient.util
Definition:
Codec.java:23
com.realtime.crossfire.jxclient.sound.MusicManager.processor
Processor processor
Definition:
MusicManager.java:55
com.realtime.crossfire
com.realtime
com
com.realtime.crossfire.jxclient.util.DebugWriter
Definition:
DebugWriter.java:36
com.realtime.crossfire.jxclient.sound.MusicManager.shutdown
void shutdown()
Definition:
MusicManager.java:161
com.realtime.crossfire.jxclient.sound.Processor.terminate
void terminate(final boolean fadeOut)
Definition:
Processor.java:96
com.realtime.crossfire.jxclient.sound.Processor
Definition:
Processor.java:39
com.realtime.crossfire.jxclient.util.DebugWriter.debugProtocolWrite
void debugProtocolWrite(@NotNull final CharSequence str)
Definition:
DebugWriter.java:68
Generated by
1.8.17