mod save_file; mod __plugin { use bevy::prelude::*; use iyes_loopless::prelude::ConditionSet; use crate::persistance::save_file::{handle_save_event, sync_state_to_persistence}; use crate::persistance::{LoadFileEvent, SaveFileEvent}; use crate::system::flow::AppState; pub struct PersistencePlugin; impl Plugin for PersistencePlugin { fn build(&self, app: &mut App) { app.add_event::<SaveFileEvent>() .add_event::<LoadFileEvent>() .add_system_set( ConditionSet::new() .run_in_state(AppState::InGame) .with_system(sync_state_to_persistence) .with_system(handle_save_event) .with_system( |input: Res<Input<KeyCode>>, mut events: EventWriter<SaveFileEvent>| { if input.just_released(KeyCode::Space) { events.send(SaveFileEvent { filename: None }); } }, ) .into(), ); } } } pub use __plugin::PersistencePlugin; pub use save_file::{LoadFileEvent, PersistenceState, SaveFileEvent};