36 lines
814 B
Rust
36 lines
814 B
Rust
use derive_builder::Builder;
|
|
use strum::{AsRefStr, EnumDiscriminants, EnumIter, FromRepr};
|
|
|
|
#[derive(AsRefStr, EnumIter, FromRepr, EnumDiscriminants, Clone, Copy)]
|
|
#[repr(u8)]
|
|
pub enum Tiletypes {
|
|
Air,
|
|
Water,
|
|
Grass,
|
|
Dirt,
|
|
Sand,
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
#[derive(Builder)]
|
|
pub struct Tile {
|
|
kind: Tiletypes,
|
|
#[builder(default = "true")]
|
|
is_support: bool,
|
|
#[builder(default = "true")]
|
|
needs_support: bool,
|
|
#[builder(default = "vec![]")]
|
|
can_be_above: Vec<Tiletypes>,
|
|
#[builder(default = "vec![]")]
|
|
can_be_next_to: Vec<Tiletypes>,
|
|
}
|
|
|
|
impl Tile {
|
|
pub fn new(kind: Tiletypes) -> Tile {
|
|
TileBuilder::default().kind(kind).is_support(false).build().unwrap()
|
|
}
|
|
pub fn kind_to_string(&self) -> String {
|
|
self.kind.as_ref().to_string()
|
|
}
|
|
}
|