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 messages: MessageReader<NextPhaseMessage>,
|
||||||
mut phase_res: ResMut<CurrentPhase>,
|
mut phase_res: ResMut<CurrentPhase>,
|
||||||
mut session_tracker: ResMut<SessionTracker>,
|
mut session_tracker: ResMut<SessionTracker>,
|
||||||
settings: Res<TimerSettings>,
|
settings: Res<TimerSettings>,
|
||||||
mut tile_query: Query<&mut TileState>,
|
mut tile_query: Query<&mut TileState>,
|
||||||
|
game_config: Res<GameConfig>,
|
||||||
) {
|
) {
|
||||||
for _ in messages.read() {
|
for _ in messages.read() {
|
||||||
let entering_break = if let Phase::Finished { completed_phase } = &phase_res.0 {
|
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);
|
next_phase(&mut phase_res, &mut session_tracker, &settings);
|
||||||
|
|
||||||
if entering_break {
|
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() {
|
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 {
|
*state = TileState::Occupied {
|
||||||
seed: seed.clone(),
|
seed: seed.clone(),
|
||||||
watered: false,
|
watered: false,
|
||||||
|
growth_stage: new_stage,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user