47 lines
1.5 KiB
Rust
47 lines
1.5 KiB
Rust
use crate::{cutscene::StartCutscene, keys::KeyCollected, movables::TriggerMovableEvent};
|
|
use bevy::{prelude::*, utils::hashbrown::HashSet};
|
|
|
|
pub fn plugin(app: &mut App) {
|
|
app.add_observer(on_key);
|
|
}
|
|
|
|
fn on_key(trigger: Trigger<KeyCollected>, mut commands: Commands, asset_server: Res<AssetServer>) {
|
|
match trigger.event().0.as_str() {
|
|
"fence_gate" => {
|
|
commands.trigger(StartCutscene("fence_01".to_string()));
|
|
|
|
//TODO: put into a sound effects system
|
|
commands.spawn((
|
|
AudioPlayer::new(asset_server.load("sfx/effects/gate.ogg")),
|
|
PlaybackSettings::DESPAWN,
|
|
));
|
|
|
|
let entities: HashSet<_> = vec!["fence_01", "fence_02"]
|
|
.into_iter()
|
|
.map(|s| String::from(s))
|
|
.collect();
|
|
|
|
commands.trigger(TriggerMovableEvent(entities));
|
|
}
|
|
"fence_shaft" => {
|
|
commands.trigger(StartCutscene("cutscene_02".to_string()));
|
|
|
|
//TODO: put into a sound effects system
|
|
commands.spawn((
|
|
AudioPlayer::new(asset_server.load("sfx/effects/gate.ogg")),
|
|
PlaybackSettings::DESPAWN,
|
|
));
|
|
|
|
let entities: HashSet<_> = vec!["fence_shaft"]
|
|
.into_iter()
|
|
.map(|s| String::from(s))
|
|
.collect();
|
|
|
|
commands.trigger(TriggerMovableEvent(entities));
|
|
}
|
|
_ => {
|
|
error!("unknown key logic: {}", trigger.event().0);
|
|
}
|
|
}
|
|
}
|