use bracket_terminal::prelude::*;
bracket_terminal::add_wasm_support!();
struct State {}
impl GameState for State {
fn tick(&mut self, ctx: &mut BTerm) {
ctx.cls();
let mut input = INPUT.lock();
let mouse_pixels = input.mouse_pixel_pos();
ctx.print(
1,
1,
&format!(
"Mouse pixel position: {}, {}",
mouse_pixels.0, mouse_pixels.1
),
);
let mouse_tile = input.mouse_tile(0);
ctx.print(
1,
2,
&format!("Mouse tile position: {}, {}", mouse_tile.x, mouse_tile.y),
);
ctx.print(1, 3, &format!("FPS: {}", ctx.fps));
ctx.print(1, 4, &format!("Scale factor: {}", input.get_scale_factor()));
for (i, btn) in input.mouse_button_pressed_set().iter().enumerate() {
ctx.print(1, 5 + i as i32, &format!("Mouse Button {} is pressed", btn));
}
for (i, key) in input.scan_code_pressed_set().iter().enumerate() {
ctx.print(50, 5 + i as i32, &format!("Key code: {}", key));
}
for (i, key) in input.key_pressed_set().iter().enumerate() {
ctx.print(50, 25 + i as i32, &format!("Key code: {:?}", key));
}
input.for_each_message(|event| {
bracket_terminal::console::log(&format!("{:#?}", event));
if event == BEvent::CloseRequested {
ctx.quitting = true;
}
});
}
}
fn main() -> BError {
let context = BTermBuilder::simple80x50()
.with_title("Input Harness - Check Your STDOUT")
.with_vsync(false)
.with_advanced_input(true)
.build()?;
let gs: State = State {};
main_loop(context, gs)
}