mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/simple.rs')
-rw-r--r--src/block/simple.rs13
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 {