From 824e4a98e4cb64db389b41c021ac70c0f408b1d2 Mon Sep 17 00:00:00 2001 From: demenik Date: Tue, 2 Dec 2025 17:04:48 +0100 Subject: [PATCH] feat: Implement crop growth logic on phase change --- src/features/phase/mod.rs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/features/phase/mod.rs b/src/features/phase/mod.rs index 3c4a35d..b4cb214 100644 --- a/src/features/phase/mod.rs +++ b/src/features/phase/mod.rs @@ -152,12 +152,13 @@ pub fn next_phase( } } -fn handle_continue( +pub fn handle_continue( mut messages: MessageReader, mut phase_res: ResMut, mut session_tracker: ResMut, settings: Res, mut tile_query: Query<&mut TileState>, + game_config: Res, ) { for _ in messages.read() { let entering_break = if let Phase::Finished { completed_phase } = &phase_res.0 { @@ -169,12 +170,27 @@ fn handle_continue( next_phase(&mut phase_res, &mut session_tracker, &settings); if entering_break { - println!("Resetting watered state for all crops."); + println!("Growing crops and resetting watered state."); for mut state in tile_query.iter_mut() { - if let TileState::Occupied { seed, .. } = &*state { + if let TileState::Occupied { + seed, + watered, + growth_stage, + } = &*state + { + let mut new_stage = *growth_stage; + if *watered { + if let Some(config) = seed.get_seed_config(&game_config) { + if new_stage < config.growth_stages { + new_stage += 1; + } + } + } + *state = TileState::Occupied { seed: seed.clone(), watered: false, + growth_stage: new_stage, }; } }