mindustry logic execution, map- and schematic- parsing and rendering
Implement block rotation type
| -rw-r--r-- | src/block/mod.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/block/mod.rs b/src/block/mod.rs index 0c491ba..09d9cfa 100644 --- a/src/block/mod.rs +++ b/src/block/mod.rs @@ -3,6 +3,11 @@ use std::borrow::Cow; pub trait BlockLogic { fn get_size(&self) -> u8; + + fn is_symmetric(&self) -> bool + { + true + } } pub struct Block @@ -27,4 +32,42 @@ impl Block { self.logic.get_size() } + + pub fn is_symmetric(&self) -> bool + { + self.logic.is_symmetric() + } +} + +pub enum Rotation +{ + Right, Up, Left, Down +} + +impl From<u8> for Rotation +{ + fn from(val: u8) -> Self + { + match val & 3 + { + 0 => Rotation::Right, + 1 => Rotation::Up, + 2 => Rotation::Left, + _ => Rotation::Down, + } + } +} + +impl From<Rotation> for u8 +{ + fn from(rot: Rotation) -> Self + { + match rot + { + Rotation::Right => 0, + Rotation::Up => 1, + Rotation::Left => 2, + Rotation::Down => 3, + } + } } |