Fix board after resize

This commit is contained in:
2026-04-08 13:24:44 +02:00
parent 04db2f1daf
commit 4917068fb1
2 changed files with 22 additions and 1 deletions
+7 -1
View File
@@ -55,7 +55,13 @@ impl App {
};
match event {
AppEvent::Input(key_event) => self.handle_key_event(key_event)?,
AppEvent::Resize(_, _) => {}
AppEvent::Resize(_, _) => {
let window_area: Rect = self.window_area;
let Some(state) = self.states_mut() else {
panic!("State issue")
};
state.skirmish.board.resize_change(&window_area);
}
}
}
+15
View File
@@ -79,6 +79,21 @@ impl BoardState {
if map_size > size { map_size - size } else { 0 }
}
pub fn resize_change(&mut self, area: &Rect) {
self.cells_area = cells_area_helper(area);
self.cols = (self.cells_area.width / self.cell_width as u16) as usize;
self.rows = (self.cells_area.height / self.cell_height as u16) as usize;
let h_max_offset: usize = Self::max_offset(self.map_height, self.cols);
let v_max_offset: usize = Self::max_offset(self.map_width, self.rows);
self.horizontal_offset =
Offset::new(Some(self.horizontal_offset.get_value()), Some(h_max_offset));
self.vertical_offset =
Offset::new(Some(self.vertical_offset.get_value()), Some(v_max_offset));
}
pub fn zoom_change(&mut self, new_zoom_level: ZoomLevel) {
self.zoom_level = new_zoom_level;