From cfdf27c8c769683e7f57c7478aa9ee73b6466b42 Mon Sep 17 00:00:00 2001 From: funman300 Date: Wed, 27 May 2026 19:13:42 -0700 Subject: [PATCH] fix(time-attack): clamp timer to zero and pause during overlays (#54, #55) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- solitaire_engine/src/time_attack_plugin.rs | 141 +++++++++++++++------ 1 file changed, 102 insertions(+), 39 deletions(-) diff --git a/solitaire_engine/src/time_attack_plugin.rs b/solitaire_engine/src/time_attack_plugin.rs index d11c6bf..2af7b9c 100644 --- a/solitaire_engine/src/time_attack_plugin.rs +++ b/solitaire_engine/src/time_attack_plugin.rs @@ -27,8 +27,8 @@ use std::time::{SystemTime, UNIX_EPOCH}; use bevy::prelude::*; use solitaire_core::game_state::GameMode; use solitaire_data::{ - delete_time_attack_session_at, load_time_attack_session_from, save_time_attack_session_to, - time_attack_session_path, TimeAttackSession, + TimeAttackSession, delete_time_attack_session_at, load_time_attack_session_from, + save_time_attack_session_to, time_attack_session_path, }; use crate::challenge_plugin::CHALLENGE_UNLOCK_LEVEL; @@ -155,9 +155,10 @@ fn handle_start_time_attack_request( // resuming whatever the disk happened to hold. Failures here are // logged but never fatal. if let Some(p) = path.as_ref().and_then(|r| r.0.as_deref()) - && let Err(e) = delete_time_attack_session_at(p) { - warn!("time_attack_session: failed to delete stale session: {e}"); - } + && let Err(e) = delete_time_attack_session_at(p) + { + warn!("time_attack_session: failed to delete stale session: {e}"); + } new_game.write(NewGameRequestEvent { seed: None, mode: Some(GameMode::TimeAttack), @@ -167,34 +168,34 @@ fn handle_start_time_attack_request( fn advance_time_attack( time: Res