From c4e28255b614aa0ea14fe8a920bdd805ecd3f251 Mon Sep 17 00:00:00 2001 From: GarandPLG Date: Wed, 1 Apr 2026 22:10:25 +0200 Subject: [PATCH] Move skirmish Offset and FocusedCell to own module Extract Offset and FocusedCell structs from skirmish.rs into a new skirmish_states module. Re-export the structs from the top-level states module and adjust imports in skirmish.rs. --- src/app/states/mod.rs | 4 +- src/app/states/skirmish.rs | 89 +------------------ .../states/skirmish_states/focused_cell.rs | 34 +++++++ src/app/states/skirmish_states/mod.rs | 5 ++ src/app/states/skirmish_states/offset.rs | 48 ++++++++++ 5 files changed, 94 insertions(+), 86 deletions(-) create mode 100644 src/app/states/skirmish_states/focused_cell.rs create mode 100644 src/app/states/skirmish_states/mod.rs create mode 100644 src/app/states/skirmish_states/offset.rs diff --git a/src/app/states/mod.rs b/src/app/states/mod.rs index 89512e9..166d40a 100644 --- a/src/app/states/mod.rs +++ b/src/app/states/mod.rs @@ -3,9 +3,11 @@ pub mod perk_decks; pub mod settings; pub mod skills_config; pub mod skirmish; +pub mod skirmish_states; pub use main_menu::MainMenuState; pub use perk_decks::{PerkDecks, PerkDecksState}; pub use settings::SettingsState; pub use skills_config::SkillsConfigState; -pub use skirmish::{FocusedCell, GameMode, Offset, SkirmishState, ZoomLevel}; +pub use skirmish::{GameMode, SkirmishState, ZoomLevel}; +pub use skirmish_states::{FocusedCell, Offset}; diff --git a/src/app/states/skirmish.rs b/src/app/states/skirmish.rs index 7cfb46d..012ddee 100644 --- a/src/app/states/skirmish.rs +++ b/src/app/states/skirmish.rs @@ -1,90 +1,9 @@ -use crate::app::widgets::CellWidget; +use crate::app::{ + states::{FocusedCell, Offset}, + widgets::CellWidget, +}; use clap::ValueEnum; -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct Offset { - value: usize, - max: usize, - value_initiated: bool, - max_initiated: bool, -} - -impl Offset { - pub fn new() -> Self { - Self { - value: 0, - max: 0, - value_initiated: false, - max_initiated: false, - } - } - - pub fn get_value(&self) -> usize { - self.value - } - - pub fn set_initial_value(&mut self, value: usize) { - if self.value_initiated { - return; - } - - self.value = value; - self.value_initiated = true; - } - - pub fn set_max(&mut self, max: usize) { - // if self.max_initiated { - // return; - // } - - self.max = max; - self.max_initiated = true; - } - - pub fn next(&mut self) { - self.value = self.value.saturating_add(1).min(self.max); - } - - pub fn prev(&mut self) { - self.value = self.value.saturating_sub(1).max(0) - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct FocusedCell { - pub row: usize, - pub col: usize, - pub max_row: usize, - pub max_col: usize, -} - -impl FocusedCell { - pub fn new(row: usize, col: usize, max_row: usize, max_col: usize) -> Self { - Self { - row, - col, - max_row, - max_col, - } - } - - pub fn move_up(&mut self) { - self.row = self.row.saturating_sub(1).max(0); - } - - pub fn move_down(&mut self) { - self.row = self.row.saturating_add(1).min(self.max_row - 1); - } - - pub fn move_left(&mut self) { - self.col = self.col.saturating_sub(1).max(0); - } - - pub fn move_right(&mut self) { - self.col = self.col.saturating_add(1).min(self.max_col - 1); - } -} - #[derive(Debug, Clone, PartialEq, Eq)] pub struct SkirmishState { pub id: usize, diff --git a/src/app/states/skirmish_states/focused_cell.rs b/src/app/states/skirmish_states/focused_cell.rs new file mode 100644 index 0000000..b99deb7 --- /dev/null +++ b/src/app/states/skirmish_states/focused_cell.rs @@ -0,0 +1,34 @@ +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct FocusedCell { + pub row: usize, + pub col: usize, + pub max_row: usize, + pub max_col: usize, +} + +impl FocusedCell { + pub fn new(row: usize, col: usize, max_row: usize, max_col: usize) -> Self { + Self { + row, + col, + max_row, + max_col, + } + } + + pub fn move_up(&mut self) { + self.row = self.row.saturating_sub(1).max(0); + } + + pub fn move_down(&mut self) { + self.row = self.row.saturating_add(1).min(self.max_row - 1); + } + + pub fn move_left(&mut self) { + self.col = self.col.saturating_sub(1).max(0); + } + + pub fn move_right(&mut self) { + self.col = self.col.saturating_add(1).min(self.max_col - 1); + } +} diff --git a/src/app/states/skirmish_states/mod.rs b/src/app/states/skirmish_states/mod.rs new file mode 100644 index 0000000..8c1e14a --- /dev/null +++ b/src/app/states/skirmish_states/mod.rs @@ -0,0 +1,5 @@ +pub mod focused_cell; +pub mod offset; + +pub use focused_cell::FocusedCell; +pub use offset::Offset; diff --git a/src/app/states/skirmish_states/offset.rs b/src/app/states/skirmish_states/offset.rs new file mode 100644 index 0000000..b9c3c77 --- /dev/null +++ b/src/app/states/skirmish_states/offset.rs @@ -0,0 +1,48 @@ +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct Offset { + value: usize, + max: usize, + value_initiated: bool, + max_initiated: bool, +} + +impl Offset { + pub fn new() -> Self { + Self { + value: 0, + max: 0, + value_initiated: false, + max_initiated: false, + } + } + + pub fn get_value(&self) -> usize { + self.value + } + + pub fn set_initial_value(&mut self, value: usize) { + if self.value_initiated { + return; + } + + self.value = value; + self.value_initiated = true; + } + + pub fn set_max(&mut self, max: usize) { + if self.max_initiated { + return; + } + + self.max = max; + self.max_initiated = true; + } + + pub fn next(&mut self) { + self.value = self.value.saturating_add(1).min(self.max); + } + + pub fn prev(&mut self) { + self.value = self.value.saturating_sub(1).max(0) + } +}