codename-routes/routes-native/src/stateserver/world/tiles.rs

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()
}
}