From 35a16fd090a49aca15c942b769d8c1f16dd2d33f Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 23 Jul 2024 13:36:45 +0200 Subject: check if demands are emtpy to prevent crash --- server/src/entity/customers/mod.rs | 11 +++++++---- server/src/entity/mod.rs | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'server/src') diff --git a/server/src/entity/customers/mod.rs b/server/src/entity/customers/mod.rs index 06f99686..b5b9fa42 100644 --- a/server/src/entity/customers/mod.rs +++ b/server/src/entity/customers/mod.rs @@ -20,7 +20,7 @@ mod pathfinding; use super::EntityT; use crate::{data::Demand, game::Game}; -use anyhow::{anyhow, Result}; +use anyhow::{anyhow, bail, Result}; use fake::{faker, Fake}; use hurrycurry_protocol::{glam::IVec2, DemandIndex, Message, PacketC, PacketS, PlayerID}; use log::{info, warn}; @@ -61,15 +61,18 @@ enum CustomerState { } impl Customers { - pub fn new(chairs: HashMap, demands: Vec) -> Self { - Self { + pub fn new(chairs: HashMap, demands: Vec) -> Result { + if demands.is_empty() { + bail!("one or more demands required for customers entity") + } + Ok(Self { chairs, customer_id_counter: PlayerID(0), customers: Default::default(), demands, spawn_cooldown: 0., cpackets: VecDeque::new(), - } + }) } } diff --git a/server/src/entity/mod.rs b/server/src/entity/mod.rs index ec5ec744..95172ed0 100644 --- a/server/src/entity/mod.rs +++ b/server/src/entity/mod.rs @@ -108,7 +108,7 @@ pub fn construct_entity( .filter(|(_, (tile, _))| *tile == chair) .map(|(e, _)| (*e, true)) .collect(); - Entity::Customers(Customers::new(chairs, demands)) + Entity::Customers(Customers::new(chairs, demands)?) } }) } -- cgit v1.2.3-70-g09d2