mindustry logic execution, map- and schematic- parsing and rendering
Fix deserializing error for out-of-bounds blocks
| -rw-r--r-- | src/data/schematic.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/data/schematic.rs b/src/data/schematic.rs index 081df15..10252aa 100644 --- a/src/data/schematic.rs +++ b/src/data/schematic.rs @@ -707,10 +707,7 @@ impl<'l> Serializer<Schematic> for SchematicSerializer<'l> } else {DynSerializer.deserialize(&mut rbuff)?}; let rot = Rotation::from(rbuff.read_u8()?); - if schematic.set(pos.0, pos.1, block, config, rot).is_err() - { - return Err(ReadError::Overlap(pos)); - } + schematic.set(pos.0, pos.1, block, config, rot)?; } Ok(schematic) } @@ -841,7 +838,7 @@ pub enum ReadError BlockCount(i32), BlockIndex(i8, usize), BlockState(dynamic::ReadError), - Overlap(GridPos), + Placement(PlaceError), } impl From<data::ReadError> for ReadError @@ -868,6 +865,14 @@ impl From<dynamic::ReadError> for ReadError } } +impl From<PlaceError> for ReadError +{ + fn from(value: PlaceError) -> Self + { + Self::Placement(value) + } +} + #[derive(Debug)] pub enum WriteError { |