diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-20 11:42:09 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-20 11:42:09 +0200 |
commit | cc79cea77b81cfee21bb84eb2b4cda59ac42143b (patch) | |
tree | 1403e67ceeb05d67dcad19b50962e6ad0173a2b4 /server/src/entity | |
parent | dab9f81cd29fc1109bfe27aaffe5b6f6e0fe204a (diff) | |
download | hurrycurry-cc79cea77b81cfee21bb84eb2b4cda59ac42143b.tar hurrycurry-cc79cea77b81cfee21bb84eb2b4cda59ac42143b.tar.bz2 hurrycurry-cc79cea77b81cfee21bb84eb2b4cda59ac42143b.tar.zst |
limiit customers to chair count #143
Diffstat (limited to 'server/src/entity')
-rw-r--r-- | server/src/entity/customers.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/server/src/entity/customers.rs b/server/src/entity/customers.rs index 8c515e92..aaf6995f 100644 --- a/server/src/entity/customers.rs +++ b/server/src/entity/customers.rs @@ -23,6 +23,7 @@ use rand::random; pub struct Customers { customers: Vec<BotDriver<Customer>>, spawn_cooldown: f32, + chair_count: Option<usize>, } impl Customers { @@ -30,15 +31,25 @@ impl Customers { Ok(Self { customers: Default::default(), spawn_cooldown: 0., + chair_count: None, }) } } impl Entity for Customers { fn tick(&mut self, c: EntityContext) -> Result<()> { + let chairs = *self.chair_count.get_or_insert_with(|| { + c.game + .tiles + .values() + .filter(|t| c.game.data.tile_name(t.kind) == "table") + .count() + }); + let max_count = 5.min(chairs); + self.spawn_cooldown -= c.dt; self.spawn_cooldown = self.spawn_cooldown.max(0.); - if self.customers.len() < 5 && self.spawn_cooldown <= 0. { + if self.customers.len() < max_count && self.spawn_cooldown <= 0. { self.spawn_cooldown = 10. + random::<f32>() * 10.; let bot = BotDriver::new( "".to_string(), |