137 lines
3.9 KiB
Rust
137 lines
3.9 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)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct SubmitPuzzleLeaderboardRequest {
|
|
pub profile_id: String,
|
|
pub grid_size: u32,
|
|
pub elapsed_ms: u64,
|
|
pub nickname: String,
|
|
}
|
|
|
|
#[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 PuzzleLeaderboardEntryResponse {
|
|
pub rank: u32,
|
|
pub nickname: String,
|
|
pub elapsed_ms: u64,
|
|
#[serde(default)]
|
|
pub is_current_player: bool,
|
|
}
|
|
|
|
#[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,
|
|
#[serde(default)]
|
|
pub started_at_ms: u64,
|
|
#[serde(default)]
|
|
pub cleared_at_ms: Option<u64>,
|
|
#[serde(default)]
|
|
pub elapsed_ms: Option<u64>,
|
|
#[serde(default)]
|
|
pub leaderboard_entries: Vec<PuzzleLeaderboardEntryResponse>,
|
|
}
|
|
|
|
#[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>,
|
|
#[serde(default)]
|
|
pub leaderboard_entries: Vec<PuzzleLeaderboardEntryResponse>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzleRunResponse {
|
|
pub run: PuzzleRunSnapshotResponse,
|
|
}
|