Refactor skirmish focus handling and CellWidget API

Introduce a MoveFocusedCell enum and a BoardState.change_focused_cell
method to
centralize focus movement logic. Update skirmish keybindings to use this
new
method and simplify board rendering by directly using stored CellWidget
state.
Make CellWidget setters chainable and expose the new enum in the module
re‑exports. Remove duplicated max_offset logic and old move_* methods.
This commit is contained in:
GarandPLG committed 2026-04-07 23:20:11 +02:00
1 parent e3fea75983
commit 48483da1a4
6 files changed
+88 -57

No files matched your search

+2 -10
View File
@@ -1,4 +1,4 @@
use crate::app::{states::skirmish_states::BoardState, widgets::CellWidget};
use crate::app::states::skirmish_states::BoardState;
use ratatui::{
buffer::Buffer,
layout::{Constraint, Layout, Rect},
@@ -37,19 +37,11 @@ impl Widget for BoardWidget<'_> {
let map_row: usize = row_idx + self.state.vertical_offset.get_value();
let map_col: usize = col_idx + self.state.horizontal_offset.get_value();
if let Some(template) = self
if let Some(cell) = self
.state
.cells
.get(map_row * self.state.map_width + map_col)
{
let mut cell: CellWidget = template.clone();
if map_row == self.state.focused_cell.get_row()
&& map_col == self.state.focused_cell.get_col()
{
cell.set_selected(true);
}
cell.render(*cell_area, buf);
}
}