mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/liquid.rs')
| -rw-r--r-- | src/block/liquid.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/block/liquid.rs b/src/block/liquid.rs index 2400988..758ff0d 100644 --- a/src/block/liquid.rs +++ b/src/block/liquid.rs @@ -10,6 +10,7 @@ use crate::block::{ }; use crate::content; use crate::data::dynamic::{DynData, DynType}; +use crate::data::renderer::load; use crate::data::GridPos; use crate::fluid; use crate::item::storage::Storage; @@ -102,6 +103,26 @@ impl BlockLogic for FluidBlock { Some(fluid) => Ok(DynData::Content(content::Type::Fluid, (*fluid).into())), } } + + fn draw( + &self, + category: &str, + name: &str, + state: Option<&dyn Any>, + ) -> Option<image::RgbaImage> { + let mut p = load(category, name).unwrap(); + if let Some(state) = state { + if let Some(s) = Self::get_state(state) { + let mut top = load("distribution", "center").unwrap(); + crate::utils::image::tint(&mut top, s.color()); + image::imageops::overlay(&mut p, &top, 0, 0); + return Some(p); + } + } + let mut null = load("distribution", "cross-full").unwrap(); + image::imageops::overlay(&mut null, &p, 0, 0); + Some(null) + } } #[derive(Clone, Copy, Debug, Eq, PartialEq)] |