From f37aa53011ff4de88eca5d5d24d1c42095205208 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 11 May 2025 12:39:35 -0400 Subject: [PATCH] Don't panic if LGBs failed to load --- src/world/zone.rs | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/world/zone.rs b/src/world/zone.rs index 25f0267..5baef3c 100644 --- a/src/world/zone.rs +++ b/src/world/zone.rs @@ -79,22 +79,26 @@ impl Zone { instance_id: u32, ) -> Option<(&InstanceObject, &PopRangeInstanceObject)> { // TODO: also check position! - for group in &self.planmap.as_ref().unwrap().chunks[0].layers { - for object in &group.objects { - if let LayerEntryData::PopRange(pop_range) = &object.data { - if object.instance_id == instance_id { - return Some((object, pop_range)); + if let Some(planmap) = self.planmap.as_ref() { + for group in &planmap.chunks[0].layers { + for object in &group.objects { + if let LayerEntryData::PopRange(pop_range) = &object.data { + if object.instance_id == instance_id { + return Some((object, pop_range)); + } } } } } - // For certain PopRanges (e.g. the starting position in the opening zones) - for group in &self.planevent.as_ref().unwrap().chunks[0].layers { - for object in &group.objects { - if let LayerEntryData::PopRange(pop_range) = &object.data { - if object.instance_id == instance_id { - return Some((object, pop_range)); + if let Some(planevent) = self.planevent.as_ref() { + // For certain PopRanges (e.g. the starting position in the opening zones) + for group in &planevent.chunks[0].layers { + for object in &group.objects { + if let LayerEntryData::PopRange(pop_range) = &object.data { + if object.instance_id == instance_id { + return Some((object, pop_range)); + } } } }