From be41936f143d294db8fda1f2ac71ab8179ca25a0 Mon Sep 17 00:00:00 2001 From: GarandPLG Date: Wed, 15 Apr 2026 13:21:39 +0200 Subject: [PATCH] Refactor buildings/units, move CellTag & Players MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce BaseBuilding struct. Rename Building and Unit to enum types (Buildings, Units). Move CellTag and Players enums to the skirmish state module and update imports and re‑exports accordingly. Add placeholder miner module. --- src/app/buildings/base.rs | 6 ++++++ src/app/buildings/building.rs | 2 +- src/app/buildings/mod.rs | 3 ++- src/app/states/mod.rs | 2 +- src/app/states/skirmish.rs | 13 ++++++++++++ src/app/states/skirmish_states/board.rs | 4 ++-- src/app/units/miner.rs | 0 src/app/units/mod.rs | 3 ++- src/app/units/unit.rs | 2 +- src/app/widgets/cell.rs | 27 +++++++++---------------- src/app/widgets/mod.rs | 2 +- 11 files changed, 38 insertions(+), 26 deletions(-) create mode 100644 src/app/buildings/base.rs create mode 100644 src/app/units/miner.rs diff --git a/src/app/buildings/base.rs b/src/app/buildings/base.rs new file mode 100644 index 0000000..a6df8a8 --- /dev/null +++ b/src/app/buildings/base.rs @@ -0,0 +1,6 @@ +use crate::app::states::Players; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct BaseBuilding { + owner: Players, +} diff --git a/src/app/buildings/building.rs b/src/app/buildings/building.rs index bba5c6f..fd32577 100644 --- a/src/app/buildings/building.rs +++ b/src/app/buildings/building.rs @@ -1,2 +1,2 @@ #[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Building {} +pub enum Buildings {} diff --git a/src/app/buildings/mod.rs b/src/app/buildings/mod.rs index 6802d55..9bb19f8 100644 --- a/src/app/buildings/mod.rs +++ b/src/app/buildings/mod.rs @@ -1,3 +1,4 @@ +pub mod base; pub mod building; -pub use building::Building; +pub use building::Buildings; diff --git a/src/app/states/mod.rs b/src/app/states/mod.rs index 166d40a..401410d 100644 --- a/src/app/states/mod.rs +++ b/src/app/states/mod.rs @@ -9,5 +9,5 @@ pub use main_menu::MainMenuState; pub use perk_decks::{PerkDecks, PerkDecksState}; pub use settings::SettingsState; pub use skills_config::SkillsConfigState; -pub use skirmish::{GameMode, SkirmishState, ZoomLevel}; +pub use skirmish::{CellTag, GameMode, Players, SkirmishState, ZoomLevel}; pub use skirmish_states::{FocusedCell, Offset}; diff --git a/src/app/states/skirmish.rs b/src/app/states/skirmish.rs index 4df3814..7d19607 100644 --- a/src/app/states/skirmish.rs +++ b/src/app/states/skirmish.rs @@ -20,3 +20,16 @@ pub enum ZoomLevel { Default, ZoomedOut, } + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum CellTag { + Base(Players), + Tunel, + Stone, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum Players { + Player, + Enemy, +} diff --git a/src/app/states/skirmish_states/board.rs b/src/app/states/skirmish_states/board.rs index cc08ee9..39ff056 100644 --- a/src/app/states/skirmish_states/board.rs +++ b/src/app/states/skirmish_states/board.rs @@ -1,7 +1,7 @@ use crate::app::{ helpers::{CellSizes, cell_size_helper, cells_area_helper}, - states::{FocusedCell, Offset, ZoomLevel, skirmish_states::MoveFocusedCell}, - widgets::{CellTag, CellWidget, Players}, + states::{CellTag, FocusedCell, Offset, Players, ZoomLevel, skirmish_states::MoveFocusedCell}, + widgets::CellWidget, }; use ratatui::layout::Rect; diff --git a/src/app/units/miner.rs b/src/app/units/miner.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/app/units/mod.rs b/src/app/units/mod.rs index dde757e..8ee07f9 100644 --- a/src/app/units/mod.rs +++ b/src/app/units/mod.rs @@ -1,3 +1,4 @@ +pub mod miner; pub mod unit; -pub use unit::Unit; +pub use unit::Units; diff --git a/src/app/units/unit.rs b/src/app/units/unit.rs index d824ba6..2688d48 100644 --- a/src/app/units/unit.rs +++ b/src/app/units/unit.rs @@ -1,2 +1,2 @@ #[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Unit {} +pub enum Units {} diff --git a/src/app/widgets/cell.rs b/src/app/widgets/cell.rs index 3260287..a04549c 100644 --- a/src/app/widgets/cell.rs +++ b/src/app/widgets/cell.rs @@ -1,4 +1,8 @@ -use crate::app::{buildings::Building, states::ZoomLevel, units::Unit}; +use crate::app::{ + buildings::Buildings, + states::{CellTag, Players, ZoomLevel}, + units::Units, +}; use ratatui::{ buffer::Buffer, layout::{Alignment, Rect}, @@ -7,19 +11,6 @@ use ratatui::{ widgets::{Block, Borders, Paragraph, Widget}, }; -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum CellTag { - Base(Players), - Tunel, - Stone, -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum Players { - Player, - Enemy, -} - #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct CellWidget { row: usize, @@ -28,8 +19,8 @@ pub struct CellWidget { zoom_level: ZoomLevel, tag: CellTag, marked: bool, - unit: Option, - building: Option, + unit: Option, + building: Option, } impl CellWidget { @@ -39,8 +30,8 @@ impl CellWidget { zoom_level: ZoomLevel, selected: bool, tag: CellTag, - unit: Option, - building: Option, + unit: Option, + building: Option, ) -> Self { Self { row, diff --git a/src/app/widgets/mod.rs b/src/app/widgets/mod.rs index ebbe432..b325419 100644 --- a/src/app/widgets/mod.rs +++ b/src/app/widgets/mod.rs @@ -3,5 +3,5 @@ pub mod cell; pub mod keybindings; pub use board::BoardWidget; -pub use cell::{CellTag, CellWidget, Players}; +pub use cell::CellWidget; pub use keybindings::KeybindingsWidget;