mindustry logic execution, map- and schematic- parsing and rendering
uninit
| -rw-r--r-- | mindus/Cargo.toml | 4 | ||||
| -rw-r--r-- | mindus/src/data/renderer.rs | 22 | ||||
| -rw-r--r-- | mindus/src/lib.rs | 9 | ||||
| -rw-r--r-- | mindus/src/team.rs | 3 |
4 files changed, 20 insertions, 18 deletions
diff --git a/mindus/Cargo.toml b/mindus/Cargo.toml index 413aba3..0c8ea9e 100644 --- a/mindus/Cargo.toml +++ b/mindus/Cargo.toml @@ -24,14 +24,14 @@ thiserror = "1.0" bobbin-bits = "0.1" enum_dispatch = "0.3" phf = { version = "0.11", features = ["macros"] } -fimg = { version = "0.4.31", features = ["scale", "blur", "save"], default-features = false } +fimg = { version = "0.4.33", features = ["scale", "blur", "save"], default-features = false } [features] bin = ["fimg/save"] default = ["bin"] [build-dependencies] -fimg = { version = "0.4.31", features = ["scale", "save", "blur"], default-features = false } +fimg = { version = "0.4.33", features = ["scale", "save", "blur"], default-features = false } walkdir = "2" [[bin]] diff --git a/mindus/src/data/renderer.rs b/mindus/src/data/renderer.rs index 72d29d4..1f07d72 100644 --- a/mindus/src/data/renderer.rs +++ b/mindus/src/data/renderer.rs @@ -5,7 +5,7 @@ use super::GridPos; use crate::block::Rotation; pub(crate) use crate::utils::*; use crate::Map; -use fimg::BlendingOverlay; +use fimg::{uninit, BlendingOverlay}; include!(concat!(env!("OUT_DIR"), "/full.rs")); include!(concat!(env!("OUT_DIR"), "/quar.rs")); @@ -169,8 +169,10 @@ impl Renderable for Map { } else { Scale::Eigth }; - let mut img: Image<_, 3> = - Image::alloc(scale * self.width as u32, scale * self.height as u32); + let mut img = uninit::Image::<_, 3>::new( + (scale * self.width as u32).try_into().unwrap(), + (scale * self.height as u32).try_into().unwrap(), + ); // loop1 draws the floor for y in 0..self.height { for x in 0..self.width { @@ -179,21 +181,13 @@ impl Renderable for Map { let tile = unsafe { self.tiles.get_unchecked(j) }; let y = self.height - y - 1; // println!("draw {tile:?} ({x}, {y})"); - unsafe { - img.as_mut() - .overlay_at(&tile.floor(scale), scale * x as u32, scale * y as u32) - }; + unsafe { img.overlay_at(&tile.floor(scale), scale * x as u32, scale * y as u32) }; if tile.has_ore() { - unsafe { - img.as_mut().overlay_at( - &tile.ore(scale), - scale * x as u32, - scale * y as u32, - ) - }; + unsafe { img.overlay_at(&tile.ore(scale), scale * x as u32, scale * y as u32) }; } } } + let mut img = unsafe { img.assume_init() }; // loop2 draws the buildings for y in 0..self.height { for x in 0..self.width { diff --git a/mindus/src/lib.rs b/mindus/src/lib.rs index 7ed688b..dacdc6b 100644 --- a/mindus/src/lib.rs +++ b/mindus/src/lib.rs @@ -1,5 +1,12 @@ //! crate for dealing with mindustry -#![feature(generic_arg_infer, const_trait_impl, const_option, let_chains, effects)] +#![feature( + generic_arg_infer, + const_trait_impl, + const_option, + derive_const, + let_chains, + effects +)] #![allow(clippy::redundant_closure_call)] #![warn( clippy::multiple_unsafe_ops_per_block, diff --git a/mindus/src/team.rs b/mindus/src/team.rs index a10209f..34c6602 100644 --- a/mindus/src/team.rs +++ b/mindus/src/team.rs @@ -2,7 +2,8 @@ use std::fmt; use crate::content::{Content, Type}; -#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd, Default)] +#[derive(Clone, Copy, Debug, Eq, Ord, PartialOrd, Default)] +#[derive_const(PartialEq)] pub struct Team(u8); impl Team { |