diff options
| author | troido <troido@protonmail.com> | 2020-03-03 14:55:45 +0100 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-03-03 14:55:45 +0100 |
| commit | c51585be254795be90626dbc376663b1be8b5bf5 (patch) | |
| tree | f172d05e4ef3c9df62006c627f3f53bc4176985f /src/systems/spawn.rs | |
| parent | c30c92c23a269e5ff28946d3522e68338696ac94 (diff) | |
dummies respawn too; fixed problems with respawn delay
Diffstat (limited to 'src/systems/spawn.rs')
| -rw-r--r-- | src/systems/spawn.rs | 16 |
1 files changed, 11 insertions, 5 deletions
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) + } } } } |
