third time's the charm

This commit is contained in:
Tao Tien 2026-01-15 14:00:55 -08:00
parent 723cd0b6e4
commit 2b95c642df
18 changed files with 547 additions and 173 deletions

View file

@ -1,65 +0,0 @@
use bevy::prelude::*;
use bevy_ratatui::{RatatuiContext, event::MouseMessage};
use ratatui::layout::Position;
use crate::tui::render::Hovered;
#[derive(Component)]
pub(crate) struct PickRegion {
pub(crate) area: ratatui::prelude::Rect,
}
// enum PickEvent {
// Click { col: u16, row: u16 },
// Hover { col: u16, row: u16 },
// }
pub(crate) fn input_system(
mut commands: Commands,
mut messages: MessageReader<MouseMessage>,
_context: Res<RatatuiContext>,
entities: Query<(Entity, &PickRegion)>,
hovered: Query<(Entity, &PickRegion), With<Hovered>>,
) -> Result {
for message in messages.read() {
let event = message.0;
// let term_size = context.size().unwrap();
let position = Position::new(event.column, event.row);
match event.kind {
ratatui::crossterm::event::MouseEventKind::Down(mouse_button) => match mouse_button {
ratatui::crossterm::event::MouseButton::Left => {
for (_entity, _region) in &entities {}
}
// ratatui::crossterm::event::MouseButton::Right => todo!(),
// ratatui::crossterm::event::MouseButton::Middle => todo!(),
_ => {}
},
// ratatui::crossterm::event::MouseEventKind::Up(mouse_button) => todo!(),
// ratatui::crossterm::event::MouseEventKind::Drag(mouse_button) => todo!(),
ratatui::crossterm::event::MouseEventKind::Moved => {
for (entity, region) in &hovered {
if !region.area.contains(position) {
commands.get_entity(entity)?.remove::<Hovered>();
}
}
for (entity, region) in &entities {
// debug!(
// "{:?}, {position:?}",
// region.area.positions().collect::<Vec<_>>()
// );
if region.area.contains(position) {
commands.get_entity(entity)?.insert(Hovered);
// trace!("{entity:?} hovered!")
}
}
}
// ratatui::crossterm::event::MouseEventKind::ScrollDown => todo!(),
// ratatui::crossterm::event::MouseEventKind::ScrollUp => todo!(),
// ratatui::crossterm::event::MouseEventKind::ScrollLeft => todo!(),
// ratatui::crossterm::event::MouseEventKind::ScrollRight => todo!(),
_ => {}
}
}
Ok(())
}