mindustry logic execution, map- and schematic- parsing and rendering
Fix deserializing error for out-of-bounds blocks
KosmosPrime 2023-01-04
parent a65fff6 · commit 20ce3f2
-rw-r--r--src/data/schematic.rs15
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
{