mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/simple.rs')
-rw-r--r--src/block/simple.rs26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/block/simple.rs b/src/block/simple.rs
index 2dca7fd..89417c6 100644
--- a/src/block/simple.rs
+++ b/src/block/simple.rs
@@ -22,8 +22,10 @@ macro_rules! state_impl {
pub(crate) use state_impl;
+/// draw is called with self, category, name, state, context
+/// read is called with self, category, name, reg, entity_mapping, buff
macro_rules! make_simple {
- ($name: ident, $draw: expr, $read: expr) => {
+ ($name: ident, $draw: expr, $read: expr, $wants_context: literal) => {
pub struct $name {
size: u8,
symmetric: bool,
@@ -87,8 +89,13 @@ macro_rules! make_simple {
category: &str,
name: &str,
state: Option<&crate::block::State>,
+ context: Option<&crate::data::renderer::RenderingContext>,
) -> Option<crate::data::renderer::ImageHolder> {
- $draw(self, category, name, state)
+ $draw(self, category, name, state, context)
+ }
+
+ fn want_context(&self) -> bool {
+ $wants_context
}
fn read(
@@ -104,10 +111,21 @@ macro_rules! make_simple {
}
};
($name: ident, $draw: expr) => {
- crate::block::simple::make_simple!($name, $draw, |_, _, _, _, _, _| Ok(()));
+ crate::block::simple::make_simple!($name, $draw, |_, _, _, _, _, _| Ok(()), false);
+ };
+ ($name: ident, $draw: expr, $wants_context: literal) => {
+ crate::block::simple::make_simple!($name, $draw, |_, _, _, _, _, _| Ok(()), $wants_context);
+ };
+ ($name: ident, $draw: expr, $read: expr) => {
+ crate::block::simple::make_simple!($name, $draw, $read, false);
};
($name: ident) => {
- crate::block::simple::make_simple!($name, |_, _, _, _| None, |_, _, _, _, _, _| { Ok(()) });
+ crate::block::simple::make_simple!(
+ $name,
+ |_, _, _, _, _| None,
+ |_, _, _, _, _, _| { Ok(()) },
+ false
+ );
};
}
pub(crate) use make_simple;