You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.4 KiB
Rust

use bevy::input::keyboard::KeyboardInput;
use bevy::input::ButtonState;
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Startup, init)
.add_systems(Update, update)
.run();
}
fn init(mut commands: Commands) {
// UI Camera
commands.spawn((
Camera2dBundle { ..default() },
UiCameraConfig { show_ui: true },
));
// Text Box
commands.spawn(TextBundle::from_section(
"Start typing! (Escape to clear)\n",
TextStyle {
color: Color::WHITE,
..default()
},
));
}
fn update(mut query: Query<&mut Text>, mut events: EventReader<KeyboardInput>) {
for KeyboardInput {
key_code,
scan_code,
state,
..
} in events.iter()
{
if *state == ButtonState::Pressed {
let mut text = query.single_mut();
if *key_code == Some(KeyCode::Escape) {
text.sections.drain(1..);
} else {
let style = TextStyle {
color: Color::WHITE,
..default()
};
let added = format!(
"Pressed: KeyCode: {:?} / ScanCode {:?}\n",
key_code, scan_code
);
text.sections.push(TextSection::new(added, style));
}
}
}
}