mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/transport.rs')
| -rw-r--r-- | src/block/transport.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/block/transport.rs b/src/block/transport.rs index f1e8dae..bba7408 100644 --- a/src/block/transport.rs +++ b/src/block/transport.rs @@ -104,6 +104,14 @@ impl BlockLogic for ItemBlock Box::new(Self::create_state(*state)) } + fn mirror_state(&self, _: &mut dyn Any, _: bool, _: bool) + { + } + + fn rotate_state(&self, _: &mut dyn Any, _: bool) + { + } + fn serialize_state(&self, state: &dyn Any) -> Result<DynData, SerializeError> { match Self::get_state(state) @@ -291,6 +299,33 @@ impl BlockLogic for BridgeBlock Box::new(Self::create_state(*state)) } + fn mirror_state(&self, state: &mut dyn Any, horizontally: bool, vertically: bool) + { + match Self::get_state_mut(state) + { + None => (), + Some((dx, dy)) => + { + if horizontally {*dx = -*dx;} + if vertically {*dy = -*dy;} + }, + } + } + + fn rotate_state(&self, state: &mut dyn Any, clockwise: bool) + { + match Self::get_state_mut(state) + { + None => (), + Some((dx, dy)) => + { + let (cdx, cdy) = (*dx, *dy); + *dx = if clockwise {cdy} else {-cdy}; + *dy = if clockwise {-cdx} else {cdx}; + }, + } + } + fn serialize_state(&self, state: &dyn Any) -> Result<DynData, SerializeError> { match Self::get_state(state) |