#[derive(Debug, )]
pub enum TreeKind {
Oak,
Birch,
Spruce,
}
#[inline]
pub fn get_kind(metadata: u8) -> TreeKind {
match metadata & 3 {
0 | 3 => TreeKind::Oak,
1 => TreeKind::Spruce,
2 => TreeKind::Birch,
_ => unreachable!()
}
}
#[inline]
pub fn set_kind(metadata: &mut u8, kind: TreeKind) {
*metadata &= !3;
*metadata |= match kind {
TreeKind::Oak |
TreeKind::Spruce => 1,
TreeKind::Birch => 2,
};
}
#[inline]
pub fn is_growing(metadata: u8) -> bool {
metadata & 8 != 0
}
#[inline]
pub fn set_growing(metadata: &mut u8, growing: bool) {
*metadata &= !8;
*metadata |= (growing as u8) << 3;
}