diff options
Diffstat (limited to 'server/src/entity')
-rw-r--r-- | server/src/entity/customers.rs | 6 | ||||
-rw-r--r-- | server/src/entity/mod.rs | 8 |
2 files changed, 9 insertions, 5 deletions
diff --git a/server/src/entity/customers.rs b/server/src/entity/customers.rs index a9ddb6f1..1e8b6b13 100644 --- a/server/src/entity/customers.rs +++ b/server/src/entity/customers.rs @@ -25,14 +25,16 @@ pub struct Customers { customers: Vec<BotDriver<Customer>>, spawn_cooldown: f32, chair_count: Option<usize>, + scaling_factor: f32, } impl Customers { - pub fn new() -> Result<Self> { + pub fn new(scaling_factor: f32) -> Result<Self> { Ok(Self { customers: Default::default(), spawn_cooldown: 0., chair_count: None, + scaling_factor, }) } } @@ -46,7 +48,7 @@ impl Entity for Customers { .filter(|t| c.game.data.tile_name(t.kind) == "chair") .count() }); - let max_count = 5.min(chairs); + let max_count = (self.scaling_factor * chairs as f32).max(1.) as usize; self.spawn_cooldown -= c.dt; self.spawn_cooldown = self.spawn_cooldown.max(0.); diff --git a/server/src/entity/mod.rs b/server/src/entity/mod.rs index 15e9b0d8..87656f0d 100644 --- a/server/src/entity/mod.rs +++ b/server/src/entity/mod.rs @@ -115,7 +115,9 @@ pub enum EntityDecl { from: Option<Vec2>, to: Vec2, }, - Customers {}, + Customers { + scaling_factor: Option<f32>, + }, Map { name: String, location: Option<Vec2>, @@ -185,9 +187,9 @@ pub fn construct_entity( blocker_tile: reg.register_tile("fence".to_string()), active: true, }), - EntityDecl::Customers {} => { + EntityDecl::Customers { scaling_factor } => { reg.register_item("unknown-order".to_owned()); - Box::new(Customers::new()?) + Box::new(Customers::new(scaling_factor.unwrap_or(0.5))?) } EntityDecl::EnvironmentEffect(config) => Box::new(EnvironmentEffectController::new(config)), EntityDecl::Environment(names) => Box::new(EnvironmentController(names)), |