second key and fence

This commit is contained in:
2025-03-14 21:57:37 +01:00
parent 87e0529afb
commit 5ba25edbdf
10 changed files with 711 additions and 591 deletions

View File

@@ -1,38 +1,46 @@
use crate::{cutscene::StartCutscene, keys::KeyCollected, movables::TriggerMovableEvent};
use bevy::{prelude::*, utils::hashbrown::HashSet};
#[derive(Resource)]
enum GatesState {
Init,
GateOpen1,
}
pub fn plugin(app: &mut App) {
app.insert_resource(GatesState::Init);
app.add_observer(on_key);
}
fn on_key(
_trigger: Trigger<KeyCollected>,
mut commands: Commands,
mut state: ResMut<GatesState>,
asset_server: Res<AssetServer>,
) {
if matches!(*state, GatesState::Init) {
*state = GatesState::GateOpen1;
commands.trigger(StartCutscene("fence_01".to_string()));
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,
));
//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();
let entities: HashSet<_> = vec!["fence_01", "fence_02"]
.into_iter()
.map(|s| String::from(s))
.collect();
commands.trigger(TriggerMovableEvent(entities));
commands.trigger(TriggerMovableEvent(entities));
}
"fence_shaft" => {
commands.trigger(StartCutscene("fence_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);
}
}
}