use ratatui::layout::Rect;
use crate::app::{BattleButton, settings_field::SettingsField};
#[derive(Debug, Clone, Copy)]
pub struct TabRegions {
pub battle: Rect,
pub settings: Rect,
}
#[derive(Debug, Clone, Copy)]
pub struct BattleRegions {
pub board: Rect,
pub board_rotated: bool,
pub command_input: Rect,
pub buttons: [(BattleButton, Rect); 11],
pub button_count: usize,
}
#[derive(Debug, Clone, Copy)]
pub struct SettingsRegions {
pub fields: [(SettingsField, Rect); SettingsField::ALL.len()],
pub field_count: usize,
pub command_input: Rect,
}
#[derive(Debug, Clone, Copy)]
pub enum ScreenRegions {
Battle(BattleRegions),
Settings(SettingsRegions),
}
#[derive(Debug, Clone, Copy)]
pub struct UiRegions {
pub tabs: TabRegions,
pub screen: ScreenRegions,
}
impl UiRegions {
pub fn battle(&self) -> Option<BattleRegions> {
match self.screen {
ScreenRegions::Battle(b) => Some(b),
ScreenRegions::Settings(_) => None,
}
}
pub fn settings(&self) -> Option<SettingsRegions> {
match self.screen {
ScreenRegions::Settings(s) => Some(s),
ScreenRegions::Battle(_) => None,
}
}
}
pub fn point_in(rect: Rect, column: u16, row: u16) -> bool {
column >= rect.x && column < rect.right() && row >= rect.y && row < rect.bottom()
}