use bevy::prelude::*; use crate::{settings, camera}; pub struct EffectsPlugin; impl Plugin for EffectsPlugin { fn build(&self, app: &mut App) { app.add_systems(Startup, setup); app.add_systems(Startup, spawn_effects.after(setup).after(camera::setup_camera)); app.add_systems(Update, spawn_effects); app.add_systems(Update, update_fadeblack); app.add_event::(); } } #[derive(Clone)] pub enum Effects { FadeIn, } #[derive(Component)] pub struct FadeBlack; #[derive(Component)] pub struct Effect { pub class: Effects, pub duration: f64, pub start_time: f64, } #[derive(Event)] pub struct SpawnEffectEvent { pub class: Effects, pub duration: f64, } pub fn setup( settings: Res, mut ew_effect: EventWriter, ) { if !settings.dev_mode { ew_effect.send(SpawnEffectEvent { class: Effects::FadeIn, duration: 4.0 }); } } pub fn spawn_effects( mut commands: Commands, mut er_effect: EventReader, time: Res