mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/simple.rs')
| -rw-r--r-- | src/block/simple.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/block/simple.rs b/src/block/simple.rs index d57f091..070f4b1 100644 --- a/src/block/simple.rs +++ b/src/block/simple.rs @@ -2,6 +2,7 @@ use std::any::{type_name, Any}; use crate::block::{impl_block, BlockLogic, DataConvertError, DeserializeError, SerializeError}; use crate::data::dynamic::DynData; +use crate::data::renderer::{load, read}; use crate::data::GridPos; use crate::item; use crate::item::storage::Storage; @@ -29,6 +30,7 @@ macro_rules!state_impl } }; } +use image::RgbaImage; pub(crate) use state_impl; pub type BuildCost = &'static [(item::Type, u32)]; @@ -77,6 +79,17 @@ impl BlockLogic for SimpleBlock { fn serialize_state(&self, _: &dyn Any) -> Result<DynData, SerializeError> { Ok(DynData::Empty) } + + fn draw(&self, category: &str, name: &str, _: Option<&dyn Any>) -> Option<RgbaImage> { + if category != "turrets" { + return None; + } + // TODO: erekir + let mut base = load(category, &format!("bases/block-{}", self.size)).unwrap(); + let top = read(category, name, self.size); + image::imageops::overlay(&mut base, &top, 0, 0); + Some(base) + } } macro_rules! cost { |