mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/data/map.rs')
| -rw-r--r-- | src/data/map.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/data/map.rs b/src/data/map.rs index 636e3f3..4e7cb9e 100644 --- a/src/data/map.rs +++ b/src/data/map.rs @@ -358,7 +358,9 @@ impl<'l> Build<'l> { /// fn read_items(from: &mut DataRead, to: &mut Storage<Item>) -> Result<(), ReadError> { to.clear(); - for _ in 0..from.read_u16()? { + let n = from.read_u16()?; + to.reserve(n as usize); + for _ in 0..n { let item = from.read_u16()?; let amount = from.read_u32()?; if let Ok(item) = Item::try_from(item) { @@ -374,7 +376,9 @@ fn read_items(from: &mut DataRead, to: &mut Storage<Item>) -> Result<(), ReadErr /// - amount: [`f32`] fn read_liquids(from: &mut DataRead, to: &mut Storage<Fluid>) -> Result<(), ReadError> { to.clear(); - for _ in 0..from.read_u16()? { + let n = from.read_u16()?; + to.reserve(n as usize); + for _ in 0..n { let fluid = from.read_u16()?; let amount = from.read_f32()?; if let Ok(fluid) = Fluid::try_from(fluid) { |