mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/data/renderer.rs')
| -rw-r--r-- | src/data/renderer.rs | 47 |
1 files changed, 26 insertions, 21 deletions
diff --git a/src/data/renderer.rs b/src/data/renderer.rs index 7f280b3..cb6d88d 100644 --- a/src/data/renderer.rs +++ b/src/data/renderer.rs @@ -411,8 +411,13 @@ impl Renderable for Schematic<'_> { impl Renderable for Map<'_> { fn render(&self) -> RgbaImage { load_zip(); - let mut floor = RgbaImage::new(self.width as u32 * 8, self.height as u32 * 8); - let mut top = RgbaImage::new(self.width as u32 * 8, self.height as u32 * 8); + let scale = if self.width + self.height < 2000 { + 8 + } else { + 4 + }; + let mut floor = RgbaImage::new(self.width as u32 * scale, self.height as u32 * scale); + let mut top = RgbaImage::new(self.width as u32 * scale, self.height as u32 * scale); for (x, y, j, tile) in self.tiles.iter().enumerate().map(|(j, t)| { ( (j % self.width), @@ -425,9 +430,9 @@ impl Renderable for Map<'_> { if tile.build().is_none() { floor.overlay( // SAFETY: [`load_raw`] forces nonzero image size - unsafe { &tile.image(None).own().scale(8) }, - x as u32 * 8, - y as u32 * 8, + unsafe { &tile.image(None).own().scale(scale) }, + x as u32 * scale, + y as u32 * scale, ); } else { let s = if let Some(build) = &tile.build() { @@ -456,9 +461,14 @@ impl Renderable for Map<'_> { })(); top.overlay( // SAFETY: tile.size can never be 0, and [`load_raw`] forces nonzero. - unsafe { &tile.image(ctx.as_ref()).own().scale(tile.size() as u32 * 8) }, - x as u32 * 8, - y as u32 * 8, + unsafe { + &tile + .image(ctx.as_ref()) + .own() + .scale(tile.size() as u32 * scale) + }, + x as u32 * scale, + y as u32 * scale, ); } } @@ -475,19 +485,14 @@ fn all_blocks() { let reg = crate::block::build_registry(); for t in 19..Type::WorldMessage as u16 { let t = Type::try_from(t).unwrap(); - if matches!( - t, - // TODO canvas - Type::Canvas - | Type::Empty - | Type::SlagCentrifuge - | Type::HeatReactor - | Type::LegacyMechPad - | Type::LegacyUnitFactory - | Type::LegacyUnitFactoryAir - | Type::LegacyUnitFactoryGround - | Type::CommandCenter - ) { + if matches!(t, |Type::Empty| Type::SlagCentrifuge + | Type::HeatReactor + | Type::LegacyMechPad + | Type::LegacyUnitFactory + | Type::LegacyUnitFactoryAir + | Type::LegacyUnitFactoryGround + | Type::CommandCenter) + { continue; } |