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

@@ -10,6 +10,7 @@ enum CutsceneState {
None,
Playing {
timer: Timer,
name: String,
},
}
@@ -21,37 +22,39 @@ pub fn plugin(app: &mut App) {
fn on_start_cutscene(
trigger: Trigger<StartCutscene>,
cutscenes: Query<(&Transform, &CutsceneCamera), Without<Camera>>,
mut res: ResMut<DebugVisuals>,
mut cutscene_state: ResMut<CutsceneState>,
mut cam: Query<&mut Transform, With<Camera>>,
) {
let cutscene = trigger.event().0.clone();
let Some((t, _)) = cutscenes
.iter()
.find(|(_, cutscene_camera)| cutscene == cutscene_camera.name)
else {
return;
};
res.cam_follow = false;
*cam.single_mut() = *t;
*cutscene_state = CutsceneState::Playing {
timer: Timer::from_seconds(2.0, TimerMode::Once),
name: cutscene,
};
}
fn update(
mut res: ResMut<DebugVisuals>,
mut cutscene_state: ResMut<CutsceneState>,
cutscenes: Query<(&Transform, &CutsceneCamera), Without<Camera>>,
mut cam: Query<&mut Transform, With<Camera>>,
time: Res<Time>,
) {
if let CutsceneState::Playing { timer, .. } = &mut *cutscene_state {
if let CutsceneState::Playing { timer, name } = &mut *cutscene_state {
res.cam_follow = false;
timer.tick(time.delta());
let Some((t, _)) = cutscenes
.iter()
.find(|(_, cutscene_camera)| name == &cutscene_camera.name)
else {
return;
};
*cam.single_mut() = *t;
if timer.finished() {
res.cam_follow = true;
*cutscene_state = CutsceneState::None;