numples 1.2.0

Yet another colourful sudoku playing game.
Documentation
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;
                    }
                }
            }
        }
    }
}