use thiserror::Error;
#[derive(Error, Debug)]
#[non_exhaustive]
pub enum SimConnectError {
#[error("SimConnect error: {0}")]
SimConnectError(i32),
#[error("SimConnect exception: {0}")]
SimConnectException(u32),
#[error("Unimplemented event in the SDK: {0}")]
UnimplementedEventType(u32),
#[error("Unimplemented notification in the SDK: {0}")]
UnimplementedMessageType(i32),
#[error("Object `{0}` has already been registered")]
ObjectAlreadyRegistered(String),
#[error("Object `{0}` has not been registered")]
ObjectNotRegistered(String),
#[error("Tried to convert object of type {actual} to {expected}")]
ObjectMismatch { actual: String, expected: String },
#[error("Conversion error: {0}")]
ConversionError(#[from] std::num::TryFromIntError),
#[error("Unexpected error: {0}")]
UnexpectedError(String),
}