feat(data): add PlayerProgress with XP/level helpers and atomic persistence

level_for_xp implements the two-segment level formula from
ARCHITECTURE.md §13. xp_for_win = base 50 + linearly-scaled speed bonus
(10..=50 for sub-2-minute wins) + 25 if no undo was used. PlayerProgress
exposes add_xp returning the previous level so callers can detect
level-up events.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
funman300
2026-04-24 19:10:28 -07:00
parent 5512a141b6
commit cfdb3b7547
2 changed files with 252 additions and 0 deletions
+6
View File
@@ -45,3 +45,9 @@ pub mod achievements;
pub use achievements::{
achievements_file_path, load_achievements_from, save_achievements_to, AchievementRecord,
};
pub mod progress;
pub use progress::{
level_for_xp, load_progress_from, progress_file_path, save_progress_to, xp_for_win,
PlayerProgress,
};