mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/data/map.rs')
-rw-r--r--src/data/map.rs41
1 files changed, 9 insertions, 32 deletions
diff --git a/src/data/map.rs b/src/data/map.rs
index 4e7cb9e..f515687 100644
--- a/src/data/map.rs
+++ b/src/data/map.rs
@@ -41,7 +41,7 @@
//! - chunk len: `u16`
//! - if block == building:
//! - revision: `i8`
-//! - [`read`]
+//! - [`Build::read`]
//! - else skip `chunk len`
//! - or data
//! - data: `i8`
@@ -105,7 +105,6 @@ macro_rules! lo {
} };
}
-pub type EntityMapping = HashMap<u8, Box<dyn Content>>;
impl<'l> Tile<'l> {
#[must_use]
pub const fn new(floor: BlockEnum, ore: BlockEnum) -> Self {
@@ -305,12 +304,7 @@ impl<'l> Build<'l> {
self.block.name()
}
- pub fn read(
- &mut self,
- buff: &mut DataRead<'_>,
- reg: &BlockRegistry,
- map: &EntityMapping,
- ) -> Result<(), ReadError> {
+ pub fn read(&mut self, buff: &mut DataRead<'_>, reg: &BlockRegistry) -> Result<(), ReadError> {
// health
let _ = buff.read_f32()?;
let rot = buff.read_i8()? as i16;
@@ -344,7 +338,7 @@ impl<'l> Build<'l> {
buff.skip(4)?;
}
// "overridden by subclasses"
- self.block.read(self, reg, map, buff)?;
+ self.block.read(self, reg, buff)?;
// implementation not complete, simply error, causing the remaining bytes in the chunk to be skipped (TODO finish impl)
Err(ReadError::Version(0x0))
// Ok(())
@@ -610,10 +604,8 @@ impl<'l> Serializer<Map<'l>> for MapSerializer<'l> {
.ok_or_else(|| ReadError::NoSuchBlock(block.to_string()))?,
)
};
- if central {
- if let Some(block) = block {
- map[i].set_block(block);
- }
+ if central && let Some(block) = block {
+ map[i].set_block(block);
}
if entity {
if central {
@@ -624,12 +616,7 @@ impl<'l> Serializer<Map<'l>> for MapSerializer<'l> {
println!("reading {:?}", map[i].build.as_ref().unwrap());
let _ = buff.read_i8()?;
- map[i]
- .build
- .as_mut()
- .unwrap()
- // map not initialized yet
- .read(buff, self.0, &HashMap::new())?;
+ map[i].build.as_mut().unwrap().read(buff, self.0)?;
Ok::<(), ReadError>(())
});
}
@@ -652,15 +639,11 @@ impl<'l> Serializer<Map<'l>> for MapSerializer<'l> {
m = Some(map);
Ok::<(), ReadError>(())
})?;
- let mut mapping = EntityMapping::new();
buff.read_chunk(true, |buff| {
// read entity mapping (SaveVersion.java#436)
for _ in 0..buff.read_u16()? {
- let id = buff.read_u16()? as u8;
- let nam = buff.read_utf()?;
- dbg!(nam);
- mapping.insert(id, Box::new(Item::Copper));
- // mapping.push(content::Type::get_name(nam));
+ buff.skip(2)?;
+ let _ = buff.read_utf()?;
}
// read team block plans (ghosts) (SaveVersion.java#389)
for _ in 0..buff.read_u32()? {
@@ -673,13 +656,7 @@ impl<'l> Serializer<Map<'l>> for MapSerializer<'l> {
// read world entities (#412). eg units
for _ in 0..buff.read_u32()? {
let len = buff.read_u16()? as usize;
- let ty = buff.read_u8()?;
- if !mapping.contains_key(&ty) {
- buff.skip(len - 1)?;
- continue;
- }
- let _id = buff.read_u32()?;
- // TODO
+ buff.skip(len)?;
}
Ok::<(), ReadError>(())
})?;