From c51585be254795be90626dbc376663b1be8b5bf5 Mon Sep 17 00:00:00 2001 From: troido Date: Tue, 3 Mar 2020 14:55:45 +0100 Subject: dummies respawn too; fixed problems with respawn delay --- src/systems/spawn.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/systems/spawn.rs') diff --git a/src/systems/spawn.rs b/src/systems/spawn.rs index 6bb4912..838899c 100644 --- a/src/systems/spawn.rs +++ b/src/systems/spawn.rs @@ -39,11 +39,17 @@ impl <'a> System<'a> for Spawn { clan_nums.insert(clan, n+1); } for (spawner, position) in (&mut spawners, &positions).join() { - if time.time > spawner.last_spawn + spawner.delay && *clan_nums.get(&spawner.clan).unwrap_or(&0) < spawner.amount { - spawner.last_spawn = time.time; - let mut preent = new.encyclopedia.construct(&spawner.template).expect("unable to spawn entity from spawner"); - preent.push(ComponentWrapper::Clan(spawner.clan.clone())); - new.to_build.push((position.pos, preent)); + if *clan_nums.get(&spawner.clan).unwrap_or(&0) < spawner.amount { + if let Some(last_spawn) = spawner.last_spawn { + if time.time > last_spawn + spawner.delay { + spawner.last_spawn = None; + let mut preent = new.encyclopedia.construct(&spawner.template).expect("unable to spawn entity from spawner"); + preent.push(ComponentWrapper::Clan(spawner.clan.clone())); + new.to_build.push((position.pos, preent)); + } + } else { + spawner.last_spawn = Some(time.time) + } } } } -- cgit