use crate::graph::StaticTile;
use std::fmt;
#[derive(Debug, Clone)]
pub enum TileSourceError {
ResourceNotFound { resource_id: String },
LoadError(String),
}
impl fmt::Display for TileSourceError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
TileSourceError::ResourceNotFound { resource_id } => {
write!(f, "Resource not found: {}", resource_id)
}
TileSourceError::LoadError(msg) => {
write!(f, "Tile load error: {}", msg)
}
}
}
}
impl std::error::Error for TileSourceError {}
pub trait TileSource: Send + Sync {
fn load_tiles(
&self,
resource_id: &str,
nodegroup_id: Option<&str>,
) -> Result<Vec<StaticTile>, TileSourceError>;
}