use bevy::input::keyboard::{Key, KeyboardInput};
use bevy::prelude::*;
use crate::events::NumplesEvent;
use crate::game::Level;
use crate::load::Ctrl;
use crate::persistence::Persistence;
pub fn keybindings_system(
mut keyboard: EventReader<KeyboardInput>,
mut exit: EventWriter<AppExit>,
mut event_writer: EventWriter<NumplesEvent>,
mut persistence: ResMut<Persistence>,
ctrl: Res<Ctrl>,
) {
for (input, _) in keyboard.par_read() {
if input.state.is_pressed() {
if !input.repeat {
match &input.logical_key {
Key::Escape => {
exit.write(AppExit::Success);
return;
}
Key::Character(ch) if **ctrl && (ch == "o" || ch == "O") =>
persistence.load = true,
_ => (),
}
}
'levels: for num in 1..=5 {
if let Some(text) = &input.text {
if text.to_string() == num.to_string() {
let level: Level = (num as u8).into();
event_writer.write(NumplesEvent::StartGame(level));
break 'levels;
}
}
}
}
}
}