From 4917068fb175e97c69cd95ecce6643cadcc62ceb Mon Sep 17 00:00:00 2001 From: GarandPLG Date: Wed, 8 Apr 2026 13:24:44 +0200 Subject: [PATCH] Fix board after resize --- src/app/app.rs | 8 +++++++- src/app/states/skirmish_states/board.rs | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/app/app.rs b/src/app/app.rs index a3dd325..c49c034 100644 --- a/src/app/app.rs +++ b/src/app/app.rs @@ -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); + } } } diff --git a/src/app/states/skirmish_states/board.rs b/src/app/states/skirmish_states/board.rs index c4b03f7..fa1c155 100644 --- a/src/app/states/skirmish_states/board.rs +++ b/src/app/states/skirmish_states/board.rs @@ -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;