From b82aa621d5a9b9fbea31557e10d7c5e8f19c11c0 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 4 Jan 2022 18:07:33 -0500 Subject: [PATCH] Gracefully handle asset not existing. --- server/src/cmd.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server/src/cmd.rs b/server/src/cmd.rs index 858bba1866..049569d062 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -33,7 +33,7 @@ use common::{ depot, effect::Effect, event::{EventBus, ServerEvent}, - generation::EntityInfo, + generation::{EntityConfig, EntityInfo}, npc::{self, get_npc_name}, resources::{BattleMode, PlayerPhysicsSettings, Time, TimeOfDay}, terrain::{Block, BlockKind, SpriteKind, TerrainChunkSize}, @@ -588,10 +588,16 @@ fn handle_make_npc( None => 1, }; + let config = match EntityConfig::load(&entity_config) { + Ok(asset) => asset.read(), + Err(_err) => return Err(format!("Failed to load entity config: {}", entity_config)), + }; + let rng = &mut rand::thread_rng(); for _ in 0..number { let comp::Pos(pos) = position(server, target, "target")?; - let entity_info = EntityInfo::at(pos).with_asset_expect(&entity_config); + let entity_info = + EntityInfo::at(pos).with_entity_config(config.clone(), Some(&entity_config)); match NpcData::from_entity_info(entity_info, rng) { NpcData::Waypoint(_) => { return Err("Waypoint spawning is not implemented".to_owned());