1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use serde::{Deserialize, Serialize};

use crate::{error, internal};

#[derive(Debug, Serialize, Deserialize)]
pub enum MaaDbgControllerType {
    Invalid,
    CarouselImage,
    ReplayRecording,
}

impl TryFrom<internal::MaaDbgControllerType> for MaaDbgControllerType {
    type Error = error::Error;

    fn try_from(value: internal::MaaDbgControllerType) -> Result<Self, Self::Error> {
        match value {
            internal::MaaDbgControllerTypeEnum_MaaDbgController_Invalid => {
                Ok(MaaDbgControllerType::Invalid)
            }
            internal::MaaDbgControllerTypeEnum_MaaDbgControllerType_CarouselImage => {
                Ok(MaaDbgControllerType::CarouselImage)
            }
            internal::MaaDbgControllerTypeEnum_MaaDbgControllerType_ReplayRecording => {
                Ok(MaaDbgControllerType::ReplayRecording)
            }
            _ => Err(error::Error::MaaDbgControllerTypeConversionError(value)),
        }
    }
}

impl From<MaaDbgControllerType> for internal::MaaDbgControllerType {
    fn from(value: MaaDbgControllerType) -> Self {
        match value {
            MaaDbgControllerType::Invalid => {
                internal::MaaDbgControllerTypeEnum_MaaDbgController_Invalid
            }
            MaaDbgControllerType::CarouselImage => {
                internal::MaaDbgControllerTypeEnum_MaaDbgControllerType_CarouselImage
            }
            MaaDbgControllerType::ReplayRecording => {
                internal::MaaDbgControllerTypeEnum_MaaDbgControllerType_ReplayRecording
            }
        }
    }
}