use serde::{Deserialize, Serialize};
use thiserror::Error;
use crate::{
controller::MaaControllerOption,
instance::{MaaInstOption, MaaTaskId},
resource::MaaResOption,
utility::MaaGlobalOption,
};
#[derive(Error, Debug, Serialize, Deserialize)]
#[non_exhaustive]
pub enum Error {
#[error("Maa fails to set global option {0}")]
MaaSetGlobalOptionError(MaaGlobalOption),
#[error("MaaToolkit failed to init")]
MaaToolkitInitError,
#[error("MaaStatus conversion error: {0}")]
MaaStatusConversionError(i32),
#[error("MaaAdbControllerType conversion error: {0}")]
MaaAdbControllerTypeConversionError(i32),
#[error("MaaWin32ControllerType conversion error: {0}")]
MaaWin32ControllerTypeConversionError(i32),
#[error("MaaDbgControllerType conversion error: {0}")]
MaaDbgControllerTypeConversionError(i32),
#[error("MaaController fails to set option {0}")]
MaaControllerSetOptionError(MaaControllerOption),
#[error("MaaResource fails to set option {0}")]
MaaResourceSetOptionError(MaaResOption),
#[error("MaaInstance fails to set option {0}")]
MaaInstanceSetOptionError(MaaInstOption),
#[error("MaaInstance fails to bind resource")]
MaaInstanceBindResourceError,
#[error("MaaInstance fails to bind controller")]
MaaInstanceBindControllerError,
#[error("MaaInstance fails to set task param {0}")]
MaaInstanceSetTaskParamError(MaaTaskId),
#[error("MaaInstance fails to stop")]
MaaInstanceStopError,
#[error("MaaInstance fails to register custom recognizer {0}")]
MaaInstanceRegisterCustomRecognizerError(String),
#[error("MaaInstance fails to unregister custom recognizer {0}")]
MaaInstanceUnregisterCustomRecognizerError(String),
#[error("MaaInstance fails to clear custom recognizer")]
MaaInstanceClearCustomRecognizerError,
#[error("MaaInstance fails to register custom action {0}")]
MaaInstanceRegisterCustomActionError(String),
#[error("MaaInstance fails to unregister custom action {0}")]
MaaInstanceUnregisterCustomActionError(String),
#[error("MaaInstance fails to clear custom action")]
MaaInstanceClearCustomActionError,
#[error("MaaSyncContext fails to run task: {0}")]
MaaSyncContextRunTaskError(String),
#[error("MaaSyncContext fails to run recognizer: {0}")]
MaaSyncContextRunRecognizerError(String),
#[error("MaaSyncContext fails to run action: {0}")]
MaaSyncContextRunActionError(String),
#[error("MaaSyncContext fails to click")]
MaaSyncContextClickError,
#[error("MaaSyncContext fails to swipe")]
MaaSyncContextSwipeError,
#[error("MaaSyncContext fails to press key {0}")]
MaaSyncContextPressKeyError(i32),
#[error("MaaSyncContext fails to input text {0}")]
MaaSyncContextInputTextError(String),
#[error("MaaSyncContext fails to touch down")]
MaaSyncContextTouchDownError,
#[error("MaaSyncContext fails to touch move")]
MaaSyncContextTouchMoveError,
#[error("MaaSyncContext fails to touch up")]
MaaSyncContextTouchUpError,
#[error("MaaSyncContext fails to screencap")]
MaaSyncContextScreencapError,
#[error("MaaSyncContext fails to get cached image")]
MaaSyncContextCachedImageError,
#[error("MaaResource fails to get hash")]
MaaResourceGetHashError,
#[error("MaaResource fails to get task list")]
MaaResourceGetTaskListError,
#[error("MaaResource fails to clear")]
MaaResourceClearError,
#[error("Maa fails to set string buffeer {0}")]
MaaSetStringError(String),
#[error("MaaToolkit fails to register custom recognizer executor")]
MaaToolkitRegisterCustomRecognizerExecutorError,
#[error("MaaToolkit fails to unregister custom recognizer executor")]
MaaToolkitUnregisterCustomRecognizerExecutorError,
#[error("MaaToolkit fails to find device")]
MaaToolkitPostFindDeviceError,
#[error("Buffer operation failed.")]
BufferError,
#[error("(De)serialize error: {0}")]
SerdeError(String),
}
impl From<serde_json::Error> for Error {
fn from(e: serde_json::Error) -> Self {
Error::SerdeError(e.to_string())
}
}