use serde::{Deserialize, Serialize};
use crate::*;
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct SelectLevelByName {
pub name: LevelName,
}
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct GetLevelRequest {
pub name: LevelName,
}
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct RemoveLevelRequest {
pub name: LevelName,
}
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct ListLevelsRequest;
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "kebab-case", tag = "type", content = "data")]
pub enum LevelEvents {
LevelSet(Level),
LevelRemoved(SelectLevelByName),
}
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "kebab-case", tag = "type", content = "data")]
pub enum LevelRequests {
SetLevel(Level),
RemoveLevel(RemoveLevelRequest),
GetLevel(GetLevelRequest),
ListLevels(ListLevelsRequest),
}
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "kebab-case", tag = "type", content = "data")]
pub enum LevelResponses {
LevelSet(Level),
LevelFound(Level),
LevelsListed(Vec<Level>),
LevelRemoved,
}