8995a8ae9c
The win-time bonus is Ferrous house-rule scoring policy, not a bridge to the upstream klondike crate, so it does not belong in klondike_adapter. Relocate it to a dedicated solitaire_core::scoring module and update the sole caller (win_summary_plugin) and the adapter/settings doc references. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
16 lines
700 B
Rust
16 lines
700 B
Rust
//! Ferrous-specific scoring policy layered on top of upstream `klondike`.
|
|
//!
|
|
//! Upstream [`klondike::KlondikeStats::score`] owns the per-move point values
|
|
//! (move-to-foundation, flip-up bonus, recycle penalty, etc.). The functions
|
|
//! here are the Ferrous Solitaire house rules that upstream has no opinion on —
|
|
//! currently just the win-time bonus shown in the win modal.
|
|
|
|
/// Time bonus added to the score on a win: `700_000 / elapsed_seconds`.
|
|
/// Returns 0 when `elapsed_seconds` is 0 to avoid division by zero.
|
|
pub fn compute_time_bonus(elapsed_seconds: u64) -> i32 {
|
|
if elapsed_seconds == 0 {
|
|
return 0;
|
|
}
|
|
(700_000u64 / elapsed_seconds).min(i32::MAX as u64) as i32
|
|
}
|