mindustry logic execution, map- and schematic- parsing and rendering
always read content header
bendn 8 months ago
parent c919884 · commit 60c4904
-rw-r--r--mindus/src/data/map.rs33
-rw-r--r--mindus/src/exe/map.rs4
2 files changed, 16 insertions, 21 deletions
diff --git a/mindus/src/data/map.rs b/mindus/src/data/map.rs
index bb49804..22302aa 100644
--- a/mindus/src/data/map.rs
+++ b/mindus/src/data/map.rs
@@ -623,27 +623,22 @@ impl MapReader {
Ok(tags)
}
- pub fn content(&mut self, version: u32) -> Result<Registrar, ReadError> {
+ pub fn content(&mut self) -> Result<Registrar, ReadError> {
let mut registrar = BlockEnum::ALL;
- let n = self.buff.read_u32()?;
- if version < 8 {
- for _ in 0..self.buff.read_i8()? {
- let ty = self.buff.read_u8()?;
- for index in 0..self.buff.read_u16()? as usize {
- if ty == 1 {
- let name = self.buff.read_utf()?;
- registrar
- .get_mut(index)
- .map(|x| *x = BlockEnum::by_name(name).unwrap_or(BlockEnum::Air));
- } else {
- let n = self.buff.read_u16()?;
- self.buff.skip(n as usize)?;
- }
+ _ = self.buff.read_u32()?;
+ for _ in 0..self.buff.read_i8()? {
+ let ty = self.buff.read_u8()?;
+ for index in 0..self.buff.read_u16()? as usize {
+ if ty == 1 {
+ let name = self.buff.read_utf()?;
+ registrar
+ .get_mut(index)
+ .map(|x| *x = BlockEnum::by_name(name).unwrap_or(BlockEnum::Air));
+ } else {
+ let n = self.buff.read_u16()?;
+ self.buff.skip(n as usize)?;
}
}
- dbg!(registrar);
- } else {
- self.buff.skip(n as _)?;
}
Ok(registrar)
}
@@ -966,7 +961,7 @@ impl Serializable for Map {
buff.header()?;
let v = buff.version()?;
let tags = buff.tags_alloc()?;
- let r = buff.content(v)?;
+ let r = buff.content()?;
let mut m = buff.collect_map(tags, r)?;
m.entities = buff.collect_entities()?;
diff --git a/mindus/src/exe/map.rs b/mindus/src/exe/map.rs
index 09719bd..88342e0 100644
--- a/mindus/src/exe/map.rs
+++ b/mindus/src/exe/map.rs
@@ -12,11 +12,11 @@ pub fn main(args: Args) {
match (|| {
let mut m = MapReader::new(&mut DataRead::new(&s))?;
m.header()?;
- let v = m.version()?;
+ m.version()?;
let t = m.tags()?;
dbg!(&t);
println!("rendering {}", t.get("name").unwrap_or(&"<unknown>"));
- let r = m.content(v)?;
+ let r = m.content()?;
let (mut img, sz) = mindus::data::renderer::draw_map_single(&mut m, r)?;
mindus::data::renderer::draw_units(&mut m, img.as_mut(), sz)?;
Ok::<_, mindus::data::map::ReadError>(img)