add suffocation sound effects
This commit is contained in:
parent
727d28089f
commit
1433773784
BIN
assets/sounds/gasp.ogg
Normal file
BIN
assets/sounds/gasp.ogg
Normal file
Binary file not shown.
BIN
assets/sounds/gasprelief.ogg
Normal file
BIN
assets/sounds/gasprelief.ogg
Normal file
Binary file not shown.
28
src/audio.rs
28
src/audio.rs
|
@ -23,6 +23,7 @@ impl Plugin for AudioPlugin {
|
||||||
Update,
|
Update,
|
||||||
(
|
(
|
||||||
play_zoom_sfx,
|
play_zoom_sfx,
|
||||||
|
play_gasp_sfx,
|
||||||
respawn_sinks.run_if(on_event::<RespawnSinksEvent>()),
|
respawn_sinks.run_if(on_event::<RespawnSinksEvent>()),
|
||||||
pause_all.run_if(on_event::<PauseAllSfxEvent>()),
|
pause_all.run_if(on_event::<PauseAllSfxEvent>()),
|
||||||
),
|
),
|
||||||
|
@ -64,6 +65,8 @@ const PATHS: &[(SfxType, Sfx, &str)] = &[
|
||||||
(SfxType::LoopSfx, Sfx::Ion, "sounds/ion.ogg"),
|
(SfxType::LoopSfx, Sfx::Ion, "sounds/ion.ogg"),
|
||||||
(SfxType::LoopSfx, Sfx::Rocket, "sounds/rocket.ogg"),
|
(SfxType::LoopSfx, Sfx::Rocket, "sounds/rocket.ogg"),
|
||||||
(SfxType::LoopSfx, Sfx::Thruster, "sounds/thruster.ogg"),
|
(SfxType::LoopSfx, Sfx::Thruster, "sounds/thruster.ogg"),
|
||||||
|
(SfxType::LoopSfx, Sfx::Gasp, "sounds/gasp.ogg"),
|
||||||
|
(SfxType::OneOff, Sfx::GaspRelief, "sounds/gasprelief.ogg"),
|
||||||
(SfxType::OneOff, Sfx::Achieve, "sounds/achieve.ogg"),
|
(SfxType::OneOff, Sfx::Achieve, "sounds/achieve.ogg"),
|
||||||
(
|
(
|
||||||
SfxType::OneOff,
|
SfxType::OneOff,
|
||||||
|
@ -99,6 +102,8 @@ pub enum Sfx {
|
||||||
Crash,
|
Crash,
|
||||||
ElectricMotor,
|
ElectricMotor,
|
||||||
EnterVehicle,
|
EnterVehicle,
|
||||||
|
Gasp,
|
||||||
|
GaspRelief,
|
||||||
IncomingChatMessage,
|
IncomingChatMessage,
|
||||||
Ion,
|
Ion,
|
||||||
Ping,
|
Ping,
|
||||||
|
@ -272,6 +277,29 @@ pub fn play_zoom_sfx(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn play_gasp_sfx(
|
||||||
|
player: Query<&actor::Suit, With<actor::Player>>,
|
||||||
|
mut ew_sfx: EventWriter<PlaySfxEvent>,
|
||||||
|
q_audiosinks: Query<(&audio::Sfx, &AudioSink)>,
|
||||||
|
) {
|
||||||
|
if let Ok(suit) = player.get_single() {
|
||||||
|
for (sfxtype, sink) in &q_audiosinks {
|
||||||
|
if *sfxtype != Sfx::Gasp {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if suit.oxygen <= 0.0 {
|
||||||
|
sink.set_volume(0.6);
|
||||||
|
sink.play();
|
||||||
|
} else {
|
||||||
|
if !sink.is_paused() {
|
||||||
|
ew_sfx.send(PlaySfxEvent(Sfx::GaspRelief));
|
||||||
|
sink.pause();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn pause_all(q_audiosinks: Query<&AudioSink, With<Sfx>>) {
|
pub fn pause_all(q_audiosinks: Query<&AudioSink, With<Sfx>>) {
|
||||||
for sink in &q_audiosinks {
|
for sink in &q_audiosinks {
|
||||||
sink.pause();
|
sink.pause();
|
||||||
|
|
Loading…
Reference in a new issue