use thiserror::Error;
#[derive(Debug, Error)]
pub enum IssunError {
#[error("Plugin error: {0}")]
Plugin(String),
#[error("Plugin dependency error: {plugin} requires {dependency}")]
PluginDependency { plugin: String, dependency: String },
#[error("Circular dependency detected in plugins: {0:?}")]
CircularDependency(Vec<String>),
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("Serialization error: {0}")]
Serialization(String),
#[error("Game loop error: {0}")]
GameLoop(String),
#[error("Asset loading error: {0}")]
AssetLoad(String),
#[cfg(feature = "network")]
#[error("Network error: {0}")]
NetworkError(String),
}
pub type Result<T> = std::result::Result<T, IssunError>;