summaryrefslogtreecommitdiff
path: root/src/systems
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-03-03 14:55:45 +0100
committertroido <troido@protonmail.com>2020-03-03 14:55:45 +0100
commitc51585be254795be90626dbc376663b1be8b5bf5 (patch)
treef172d05e4ef3c9df62006c627f3f53bc4176985f /src/systems
parentc30c92c23a269e5ff28946d3522e68338696ac94 (diff)
dummies respawn too; fixed problems with respawn delay
Diffstat (limited to 'src/systems')
-rw-r--r--src/systems/spawn.rs16
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)
+ }
}
}
}