108 lines
3.1 KiB
Rust
108 lines
3.1 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct StartPuzzleRunRequest {
|
|
pub profile_id: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct AdvanceLocalPuzzleNextLevelRequest {
|
|
pub run: PuzzleRunSnapshotResponse,
|
|
#[serde(default)]
|
|
pub source_session_id: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct SwapPuzzlePiecesRequest {
|
|
pub first_piece_id: String,
|
|
pub second_piece_id: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct DragPuzzlePieceRequest {
|
|
pub piece_id: String,
|
|
pub target_row: u32,
|
|
pub target_col: u32,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzleCellPositionResponse {
|
|
pub row: u32,
|
|
pub col: u32,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzlePieceStateResponse {
|
|
pub piece_id: String,
|
|
pub correct_row: u32,
|
|
pub correct_col: u32,
|
|
pub current_row: u32,
|
|
pub current_col: u32,
|
|
#[serde(default)]
|
|
pub merged_group_id: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzleMergedGroupStateResponse {
|
|
pub group_id: String,
|
|
pub piece_ids: Vec<String>,
|
|
pub occupied_cells: Vec<PuzzleCellPositionResponse>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzleBoardSnapshotResponse {
|
|
pub rows: u32,
|
|
pub cols: u32,
|
|
pub pieces: Vec<PuzzlePieceStateResponse>,
|
|
pub merged_groups: Vec<PuzzleMergedGroupStateResponse>,
|
|
#[serde(default)]
|
|
pub selected_piece_id: Option<String>,
|
|
pub all_tiles_resolved: bool,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzleRuntimeLevelSnapshotResponse {
|
|
pub run_id: String,
|
|
pub level_index: u32,
|
|
pub grid_size: u32,
|
|
pub profile_id: String,
|
|
pub level_name: String,
|
|
pub author_display_name: String,
|
|
pub theme_tags: Vec<String>,
|
|
#[serde(default)]
|
|
pub cover_image_src: Option<String>,
|
|
pub board: PuzzleBoardSnapshotResponse,
|
|
pub status: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzleRunSnapshotResponse {
|
|
pub run_id: String,
|
|
pub entry_profile_id: String,
|
|
pub cleared_level_count: u32,
|
|
pub current_level_index: u32,
|
|
pub current_grid_size: u32,
|
|
pub played_profile_ids: Vec<String>,
|
|
pub previous_level_tags: Vec<String>,
|
|
#[serde(default)]
|
|
pub current_level: Option<PuzzleRuntimeLevelSnapshotResponse>,
|
|
#[serde(default)]
|
|
pub recommended_next_profile_id: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzleRunResponse {
|
|
pub run: PuzzleRunSnapshotResponse,
|
|
}
|