feat: Add achievement tracking and persistence (#42)
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
use crate::features::achievement::components::AchievementProgress;
|
||||
use crate::features::phase::components::{SessionTracker, TimerSettings};
|
||||
use crate::features::savegame::ui::load_popup_handler;
|
||||
use crate::prelude::*;
|
||||
@@ -34,6 +35,7 @@ struct SaveData {
|
||||
tiles: Vec<Vec<TileState>>,
|
||||
current_phase: CurrentPhase,
|
||||
session_tracker: SessionTracker,
|
||||
achievement_progress: AchievementProgress,
|
||||
timer_settings: TimerSettings,
|
||||
pom_position: GridPosition,
|
||||
inventory: Vec<ItemStack>,
|
||||
@@ -47,6 +49,7 @@ fn dump_savegame(
|
||||
tile_query: Query<&TileState>,
|
||||
phase: Res<CurrentPhase>,
|
||||
tracker: Res<SessionTracker>,
|
||||
achievement_progress: Res<AchievementProgress>,
|
||||
settings: Res<TimerSettings>,
|
||||
pom_query: Query<&GridPosition, With<Pom>>,
|
||||
inventory: Res<Inventory>,
|
||||
@@ -85,6 +88,7 @@ fn dump_savegame(
|
||||
tiles: tile_states,
|
||||
current_phase: phase.clone(),
|
||||
session_tracker: tracker.clone(),
|
||||
achievement_progress: achievement_progress.clone(),
|
||||
timer_settings: settings.clone(),
|
||||
pom_position: *pom_pos,
|
||||
inventory: item_stacks,
|
||||
@@ -118,6 +122,7 @@ fn load_savegame(
|
||||
mut tile_query: Query<&mut TileState>,
|
||||
mut phase: ResMut<CurrentPhase>,
|
||||
mut tracker: ResMut<SessionTracker>,
|
||||
mut achievement_progress: ResMut<AchievementProgress>,
|
||||
mut settings: ResMut<TimerSettings>,
|
||||
mut pom_query: Query<(&mut GridPosition, &mut Transform), With<Pom>>,
|
||||
mut inventory: ResMut<Inventory>,
|
||||
@@ -134,6 +139,7 @@ fn load_savegame(
|
||||
Ok(save_data) => {
|
||||
*phase = save_data.current_phase;
|
||||
*tracker = save_data.session_tracker;
|
||||
*achievement_progress = save_data.achievement_progress;
|
||||
*settings = save_data.timer_settings;
|
||||
|
||||
if let Ok((mut pom_pos, mut pom_transform)) = pom_query.single_mut() {
|
||||
@@ -185,11 +191,13 @@ fn reset_savegame(
|
||||
mut tile_query: Query<&mut TileState>,
|
||||
mut phase: ResMut<CurrentPhase>,
|
||||
mut tracker: ResMut<SessionTracker>,
|
||||
mut achievement_progress: ResMut<AchievementProgress>,
|
||||
mut settings: ResMut<TimerSettings>,
|
||||
mut pom_query: Query<(&mut GridPosition, &mut Transform), With<Pom>>,
|
||||
mut inventory: ResMut<Inventory>,
|
||||
) {
|
||||
*tracker = SessionTracker::default();
|
||||
*achievement_progress = AchievementProgress::default();
|
||||
*settings = TimerSettings::default();
|
||||
*phase = CurrentPhase(Phase::Focus {
|
||||
duration: settings.focus_duration as f32,
|
||||
|
||||
Reference in New Issue
Block a user