From dbe728fef7cef017a10004f2a34d2db09d08cb5a Mon Sep 17 00:00:00 2001 From: funman300 Date: Wed, 27 May 2026 19:57:49 -0700 Subject: [PATCH] refactor(engine): deduplicate TABLEAU_FAN_FRAC constant (#59) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- solitaire_engine/src/card_plugin.rs | 7 +------ solitaire_engine/src/layout.rs | 2 +- solitaire_engine/src/radial_menu.rs | 4 ++-- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/solitaire_engine/src/card_plugin.rs b/solitaire_engine/src/card_plugin.rs index 029624c..22f9510 100644 --- a/solitaire_engine/src/card_plugin.rs +++ b/solitaire_engine/src/card_plugin.rs @@ -27,7 +27,7 @@ use crate::card_animation::CardAnimation; use crate::events::{CardFaceRevealedEvent, CardFlippedEvent, StateChangedEvent}; use crate::font_plugin::FontResource; use crate::game_plugin::GameMutation; -use crate::layout::{Layout, LayoutResource, LayoutSystem}; +use crate::layout::{Layout, LayoutResource, LayoutSystem, TABLEAU_FAN_FRAC}; use crate::pause_plugin::PausedResource; use crate::platform::USE_TOUCH_UI_LAYOUT; use crate::resources::{DragState, GameStateResource}; @@ -40,11 +40,6 @@ use crate::ui_theme::{ TYPE_BODY, Z_STOCK_BADGE, }; -/// Fraction of card height used as vertical offset between face-up tableau cards. -/// Must match `layout::TABLEAU_FAN_FRAC` so the initial layout and the first -/// dynamic update from `update_tableau_fan_frac` produce identical spacing. -pub const TABLEAU_FAN_FRAC: f32 = 0.18; - /// Per-card vertical step for face-down tableau cards, as a fraction of /// card height. Smaller than [`TABLEAU_FAN_FRAC`] because face-down cards /// don't need their full body shown — only the back-pattern strip is diff --git a/solitaire_engine/src/layout.rs b/solitaire_engine/src/layout.rs index cfe1d1b..9b711fa 100644 --- a/solitaire_engine/src/layout.rs +++ b/solitaire_engine/src/layout.rs @@ -75,7 +75,7 @@ const VERTICAL_GAP_FRAC: f32 = 0.2; /// column must fit at this fraction). On desktop (height-limited) windows the /// adaptive computation returns this value exactly; on portrait phones it /// expands to fill available vertical space. -const TABLEAU_FAN_FRAC: f32 = 0.18; +pub const TABLEAU_FAN_FRAC: f32 = 0.18; /// Minimum fraction for face-down tableau cards. Scales proportionally with /// the adaptive face-up fraction so hit-testing and rendering stay in sync. diff --git a/solitaire_engine/src/radial_menu.rs b/solitaire_engine/src/radial_menu.rs index 978064c..d8d13d8 100644 --- a/solitaire_engine/src/radial_menu.rs +++ b/solitaire_engine/src/radial_menu.rs @@ -52,9 +52,9 @@ use solitaire_core::game_state::GameState; use solitaire_core::pile::PileType; use solitaire_core::rules::{can_place_on_foundation, can_place_on_tableau}; -use crate::card_plugin::{TABLEAU_FACEDOWN_FAN_FRAC, TABLEAU_FAN_FRAC}; +use crate::card_plugin::TABLEAU_FACEDOWN_FAN_FRAC; use crate::events::MoveRequestEvent; -use crate::layout::{Layout, LayoutResource}; +use crate::layout::{Layout, LayoutResource, TABLEAU_FAN_FRAC}; use crate::pause_plugin::PausedResource; use crate::resources::{DragState, GameStateResource}; use crate::settings_plugin::SettingsResource;