aboutsummaryrefslogtreecommitdiff
path: root/azalea-block/src/blocks.rs
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-05-27 16:04:22 -0500
committermat <github@matdoes.dev>2022-05-27 16:04:22 -0500
commitaac64d013546c8be3b992af63d70150155386c11 (patch)
tree5241eda4c71ad5d6093b7759fc7ec8feab18863c /azalea-block/src/blocks.rs
parent86cc2a9b7c85b0cb412fa8cbe2ab6b9a7ae5fcfc (diff)
downloadazalea-drasl-aac64d013546c8be3b992af63d70150155386c11.tar.xz
Start making azalea-block
Diffstat (limited to 'azalea-block/src/blocks.rs')
-rw-r--r--azalea-block/src/blocks.rs88
1 files changed, 88 insertions, 0 deletions
diff --git a/azalea-block/src/blocks.rs b/azalea-block/src/blocks.rs
new file mode 100644
index 00000000..f6f33a89
--- /dev/null
+++ b/azalea-block/src/blocks.rs
@@ -0,0 +1,88 @@
+use crate::{behavior::BlockBehavior, properties};
+
+// make_block_states! {
+// acacia_button => BlockBehavior { has_collision: false }, {
+// Face,
+// Facing,
+// Powered
+// };
+// acacia_door => BlockBehavior { has_collision: true }, {
+// Facing,
+// Half,
+// Hinge,
+// Open,
+// Powered
+// };
+// }
+
+// the underscore makes it more readable, so i think it's fine to allow it
+#[allow(non_camel_case_types)]
+pub enum BlockState {
+ AcaciaButton_FloorNorthTrue,
+ AcaciaButton_WallNorthTrue,
+ AcaciaButton_CeilingNorthTrue,
+}
+
+pub trait Block {
+ fn behavior(&self) -> BlockBehavior;
+}
+
+#[derive(Debug)]
+pub struct AcaciaButtonBlock {
+ pub face: properties::Face,
+ pub facing: properties::Facing,
+ pub powered: properties::Powered,
+}
+
+impl Block for AcaciaButtonBlock {
+ fn behavior(&self) -> BlockBehavior {
+ BlockBehavior {
+ has_collision: false,
+ }
+ }
+}
+
+pub struct AcaciaDoorBlock {
+ pub facing: properties::Facing,
+ // pub half: properties::Half,
+ // pub hinge: properties::Hinge,
+ // pub open: properties::Open,
+ pub powered: properties::Powered,
+}
+
+impl From<BlockState> for &dyn Block {
+ fn from(b: BlockState) -> Self {
+ match b {
+ BlockState::AcaciaButton_FloorNorthTrue => &AcaciaButtonBlock {
+ face: properties::Face::Floor,
+ facing: properties::Facing::North,
+ powered: properties::Powered::True,
+ },
+ // BlockState::AcaciaButton_WallNorthTrue => todo!(),
+ // BlockState::AcaciaButton_CeilingNorthTrue => todo!(),
+ _ => todo!(),
+ }
+ }
+}
+impl From<AcaciaButtonBlock> for BlockState {
+ fn from(b: AcaciaButtonBlock) -> Self {
+ match b {
+ AcaciaButtonBlock {
+ face: properties::Face::Floor,
+ facing: properties::Facing::North,
+ powered: properties::Powered::True,
+ } => BlockState::AcaciaButton_FloorNorthTrue,
+ // AcaciaButtonBlock {
+ // face: properties::Face::Wall,
+ // facing: properties::Facing::North,
+ // powered: properties::Powered::True,
+ // } => todo!(),
+ // AcaciaButtonBlock {
+ // face: properties::Face::Ceiling,
+ // facing: properties::Facing::North,
+ // powered: properties::Powered::True,
+ // } => todo!(),
+ _ => todo!(),
+ }
+ }
+}