mindustry logic execution, map- and schematic- parsing and rendering
-rw-r--r--src/block/mod.rs43
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,
+ }
+ }
}