use std::fmt::Debug;
use std::hash::Hash;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CollisionType {
Passable,
Impassable,
Ledge {
direction: u8,
},
Counter,
Grass(Option<u8>),
Water,
Warp,
Door,
}
pub trait TileMetaTrait: Copy + Eq + Hash + Debug + 'static {}
pub trait TileMetadata<T: TileMetaTrait> {
fn is_passable(&self, tileset: T, tile_id: u8) -> bool;
fn collision_type(&self, tileset: T, tile_id: u8) -> CollisionType;
fn is_ledge(&self, tileset: T, tile_id: u8) -> bool;
fn is_counter(&self, tileset: T, tile_id: u8) -> bool;
fn is_grass(&self, tileset: T, tile_id: u8) -> bool;
fn get_grass_tile(&self, tileset: T) -> Option<u8>;
}