From 23a42bab80573fbdd1556803f13e684d79be4d7b Mon Sep 17 00:00:00 2001 From: Llywelwyn Date: Sat, 23 Sep 2023 00:12:05 +0100 Subject: [PATCH] Some panics to unreachable!, better error msging --- src/map_builders/area_starting_points.rs | 2 +- src/map_builders/forest.rs | 2 +- src/map_builders/mod.rs | 4 ++-- src/map_builders/room_based_spawner.rs | 2 +- src/map_builders/room_based_stairs.rs | 2 +- src/map_builders/room_based_starting_position.rs | 2 +- src/map_builders/room_corner_rounding.rs | 2 +- src/map_builders/room_draw.rs | 2 +- src/map_builders/room_exploder.rs | 2 +- src/map_builders/room_themer.rs | 2 +- src/map_builders/rooms_corridors_bresenham.rs | 2 +- src/map_builders/rooms_corridors_bsp.rs | 2 +- src/map_builders/rooms_corridors_dogleg.rs | 2 +- src/map_builders/rooms_corridors_nearest.rs | 2 +- src/map_builders/rooms_corridors_spawner.rs | 2 +- src/raws/rawmaster.rs | 6 +++--- 16 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/map_builders/area_starting_points.rs b/src/map_builders/area_starting_points.rs index c251164..9707ed6 100644 --- a/src/map_builders/area_starting_points.rs +++ b/src/map_builders/area_starting_points.rs @@ -75,7 +75,7 @@ impl AreaStartingPosition { } } if available_floors.is_empty() { - panic!("No valid floors to start on"); + unreachable!("No valid floors to start on."); } available_floors.sort_by(|a, b| a.1.partial_cmp(&b.1).unwrap()); diff --git a/src/map_builders/forest.rs b/src/map_builders/forest.rs index 86979a1..e30f270 100644 --- a/src/map_builders/forest.rs +++ b/src/map_builders/forest.rs @@ -76,7 +76,7 @@ impl RoadExit { } } if available_floors.is_empty() { - panic!("No valid floors to start on."); + unreachable!("No valid floors to start on."); } available_floors.sort_by(|a, b| a.1.partial_cmp(&b.1).unwrap()); let end_x = (available_floors[0].0 as i32) % build_data.map.width; diff --git a/src/map_builders/mod.rs b/src/map_builders/mod.rs index edebe82..81045c6 100644 --- a/src/map_builders/mod.rs +++ b/src/map_builders/mod.rs @@ -137,7 +137,7 @@ impl BuilderChain { None => { self.starter = Some(starter); } - Some(_) => panic!("You can only have one starting builder."), + Some(_) => unreachable!("You can only have one starting builder."), }; } @@ -147,7 +147,7 @@ impl BuilderChain { pub fn build_map(&mut self, rng: &mut RandomNumberGenerator) { match &mut self.starter { - None => panic!("Cannot run a map builder chain without a starting build system"), + None => unreachable!("Cannot run a map builder chain without a starting build system"), Some(starter) => { // Build the starting map starter.build_map(rng, &mut self.build_data); diff --git a/src/map_builders/room_based_spawner.rs b/src/map_builders/room_based_spawner.rs index de9be3a..8b86a7f 100644 --- a/src/map_builders/room_based_spawner.rs +++ b/src/map_builders/room_based_spawner.rs @@ -27,7 +27,7 @@ impl RoomBasedSpawner { ); } } else { - panic!("RoomBasedSpawner only works after rooms have been created"); + unreachable!("RoomBasedSpawner tried to run without any rooms."); } } } diff --git a/src/map_builders/room_based_stairs.rs b/src/map_builders/room_based_stairs.rs index 1e74bd5..c849e00 100644 --- a/src/map_builders/room_based_stairs.rs +++ b/src/map_builders/room_based_stairs.rs @@ -22,7 +22,7 @@ impl RoomBasedStairs { build_data.map.tiles[stairs_idx] = TileType::DownStair; build_data.take_snapshot(); } else { - panic!("RoomBasedStairs only works after rooms have been created"); + unreachable!("RoomBasedStairs tried to run without any rooms."); } } } diff --git a/src/map_builders/room_based_starting_position.rs b/src/map_builders/room_based_starting_position.rs index 95b1f99..16d092b 100644 --- a/src/map_builders/room_based_starting_position.rs +++ b/src/map_builders/room_based_starting_position.rs @@ -20,7 +20,7 @@ impl RoomBasedStartingPosition { let start_pos = rooms[0].center(); build_data.starting_position = Some(Position { x: start_pos.x, y: start_pos.y }); } else { - panic!("RoomBasedStartingPosition only works after rooms have been created"); + unreachable!("RoomBasedStartingPosition tried to run without any rooms."); } } } diff --git a/src/map_builders/room_corner_rounding.rs b/src/map_builders/room_corner_rounding.rs index 60c31c4..516635f 100644 --- a/src/map_builders/room_corner_rounding.rs +++ b/src/map_builders/room_corner_rounding.rs @@ -42,7 +42,7 @@ impl RoomCornerRounder { if let Some(rooms_builder) = &build_data.rooms { rooms = rooms_builder.clone(); } else { - panic!("RoomCornerRounding requires a builder with rooms."); + unreachable!("RoomCornerRounding tried to run without any rooms."); } for room in rooms.iter() { diff --git a/src/map_builders/room_draw.rs b/src/map_builders/room_draw.rs index b562ab5..8169b82 100644 --- a/src/map_builders/room_draw.rs +++ b/src/map_builders/room_draw.rs @@ -50,7 +50,7 @@ impl RoomDrawer { if let Some(rooms_builder) = &build_data.rooms { rooms = rooms_builder.clone(); } else { - panic!("RoomDrawer require a builder with rooms"); + unreachable!("RoomDrawer tried to run without any rooms."); } for room in rooms.iter() { diff --git a/src/map_builders/room_exploder.rs b/src/map_builders/room_exploder.rs index aef4bcb..eea3875 100644 --- a/src/map_builders/room_exploder.rs +++ b/src/map_builders/room_exploder.rs @@ -20,7 +20,7 @@ impl RoomExploder { if let Some(rooms_builder) = &build_data.rooms { rooms = rooms_builder.clone(); } else { - panic!("RoomExploder requires a builder with rooms."); + unreachable!("RoomExploder tried to run without any rooms."); } for room in rooms.iter() { let start = room.center(); diff --git a/src/map_builders/room_themer.rs b/src/map_builders/room_themer.rs index aac6062..2cc4ca1 100644 --- a/src/map_builders/room_themer.rs +++ b/src/map_builders/room_themer.rs @@ -141,7 +141,7 @@ impl ThemeRooms { if let Some(rooms_builder) = &build_data.rooms { rooms = rooms_builder.clone(); } else { - panic!("RoomCornerRounding requires a builder with rooms."); + unreachable!("RoomCornerRounding tried to run without any rooms."); } let count = roll_until_fail(rng, self.percent); diff --git a/src/map_builders/rooms_corridors_bresenham.rs b/src/map_builders/rooms_corridors_bresenham.rs index 3845076..53e7d26 100644 --- a/src/map_builders/rooms_corridors_bresenham.rs +++ b/src/map_builders/rooms_corridors_bresenham.rs @@ -22,7 +22,7 @@ impl BresenhamCorridors { if let Some(rooms_builder) = &build_data.rooms { rooms = rooms_builder.clone(); } else { - panic!("BresenhamCorridors require a builder with room structures"); + unreachable!("BresenhamCorridors tried to run without any rooms."); } let mut connected: HashSet = HashSet::new(); diff --git a/src/map_builders/rooms_corridors_bsp.rs b/src/map_builders/rooms_corridors_bsp.rs index 698b12b..052897c 100644 --- a/src/map_builders/rooms_corridors_bsp.rs +++ b/src/map_builders/rooms_corridors_bsp.rs @@ -21,7 +21,7 @@ impl BspCorridors { if let Some(rooms_builder) = &build_data.rooms { rooms = rooms_builder.clone(); } else { - panic!("BSP Corridors require a builder with room structures"); + unreachable!("BSP Corridors tried to run without any rooms."); } let mut corridors: Vec> = Vec::new(); diff --git a/src/map_builders/rooms_corridors_dogleg.rs b/src/map_builders/rooms_corridors_dogleg.rs index f914347..907a1a4 100644 --- a/src/map_builders/rooms_corridors_dogleg.rs +++ b/src/map_builders/rooms_corridors_dogleg.rs @@ -21,7 +21,7 @@ impl DoglegCorridors { if let Some(rooms_builder) = &build_data.rooms { rooms = rooms_builder.clone(); } else { - panic!("DoglegCorridors require a builder with rooms."); + unreachable!("DoglegCorridors tried to run without any rooms."); } let mut corridors: Vec> = Vec::new(); diff --git a/src/map_builders/rooms_corridors_nearest.rs b/src/map_builders/rooms_corridors_nearest.rs index 7177712..21b0312 100644 --- a/src/map_builders/rooms_corridors_nearest.rs +++ b/src/map_builders/rooms_corridors_nearest.rs @@ -22,7 +22,7 @@ impl NearestCorridors { if let Some(rooms_builder) = &build_data.rooms { rooms = rooms_builder.clone(); } else { - panic!("NearestCorridors requires a builder with rooms"); + unreachable!("NearestCorridors tried to run without any rooms."); } let mut connected: HashSet = HashSet::new(); diff --git a/src/map_builders/rooms_corridors_spawner.rs b/src/map_builders/rooms_corridors_spawner.rs index 88b8b84..a62c87a 100644 --- a/src/map_builders/rooms_corridors_spawner.rs +++ b/src/map_builders/rooms_corridors_spawner.rs @@ -27,7 +27,7 @@ impl CorridorSpawner { ); } } else { - panic!("CorridorSpawner only works after corridors have been created"); + unreachable!("CorridorSpawner tried to run without any corridors."); } } } diff --git a/src/raws/rawmaster.rs b/src/raws/rawmaster.rs index 5a820ad..813dbe2 100644 --- a/src/raws/rawmaster.rs +++ b/src/raws/rawmaster.rs @@ -759,7 +759,7 @@ pub fn table_by_name(raws: &RawMaster, key: &str, optional_difficulty: Option EquipmentSlot { if !raws.item_index.contains_key(tag) { - panic!("Trying to equip an unknown item: {}", tag); + unreachable!("Tried to equip an unknown item: {}", tag); } let item_index = raws.item_index[tag]; let item = &raws.raws.items[item_index]; @@ -794,7 +794,7 @@ fn find_slot_for_equippable_item(tag: &str, raws: &RawMaster) -> EquipmentSlot { } } } - panic!("Trying to equip {}, but it has no slot tag.", tag); + unreachable!("Tried to equip {}, but it has no slot tag.", tag); } pub fn roll_on_loot_table( @@ -1067,7 +1067,7 @@ fn parse_damage_string(n: &str) -> (DamageType, DiceType) { "fire" => DamageType::Fire, "cold" => DamageType::Cold, "poison" => DamageType::Poison, - _ => panic!("Unrecognised damage type in raws: {}", tokens[1]), + _ => unreachable!("Unrecognised damage type in raws: {}", tokens[1]), } } else { DamageType::Physical