From cc79cea77b81cfee21bb84eb2b4cda59ac42143b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 20 Sep 2024 11:42:09 +0200 Subject: limiit customers to chair count #143 --- server/src/entity/customers.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'server/src') 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>, spawn_cooldown: f32, + chair_count: Option, } 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::() * 10.; let bot = BotDriver::new( "".to_string(), -- cgit v1.2.3-70-g09d2