use bevy::{
app::{App, Update},
ecs::{event::EventWriter, system::Res},
input::{ButtonInput, keyboard::KeyCode},
};
use crate::ecs::ThrustEvent;
pub fn key_input_plugin(app: &mut App) {
app.add_systems(Update, directional_keys);
}
pub fn directional_keys(
keys: Res<ButtonInput<KeyCode>>,
mut thrust_event: EventWriter<ThrustEvent>,
) {
if keys.just_pressed(KeyCode::KeyW) || keys.just_pressed(KeyCode::ArrowUp) {
thrust_event.write(ThrustEvent::Up(true));
} else if keys.just_released(KeyCode::KeyW) || keys.just_released(KeyCode::ArrowUp) {
thrust_event.write(ThrustEvent::Up(false));
}
if keys.just_pressed(KeyCode::KeyS) || keys.just_pressed(KeyCode::ArrowDown) {
thrust_event.write(ThrustEvent::Down(true));
} else if keys.just_released(KeyCode::KeyS) || keys.just_released(KeyCode::ArrowDown) {
thrust_event.write(ThrustEvent::Down(false));
}
if keys.just_pressed(KeyCode::KeyA) || keys.just_pressed(KeyCode::ArrowLeft) {
thrust_event.write(ThrustEvent::Left(true));
} else if keys.just_released(KeyCode::KeyA) || keys.just_released(KeyCode::ArrowLeft) {
thrust_event.write(ThrustEvent::Left(false));
}
if keys.just_pressed(KeyCode::KeyD) || keys.just_pressed(KeyCode::ArrowRight) {
thrust_event.write(ThrustEvent::Right(true));
} else if keys.just_released(KeyCode::KeyD) || keys.just_released(KeyCode::ArrowRight) {
thrust_event.write(ThrustEvent::Right(false));
}
}