feat: Implement crop growth logic on phase change
This commit is contained in:
@@ -152,12 +152,13 @@ pub fn next_phase(
|
||||
}
|
||||
}
|
||||
|
||||
fn handle_continue(
|
||||
pub fn handle_continue(
|
||||
mut messages: MessageReader<NextPhaseMessage>,
|
||||
mut phase_res: ResMut<CurrentPhase>,
|
||||
mut session_tracker: ResMut<SessionTracker>,
|
||||
settings: Res<TimerSettings>,
|
||||
mut tile_query: Query<&mut TileState>,
|
||||
game_config: Res<GameConfig>,
|
||||
) {
|
||||
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,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user