use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use crate::{player, room};
pub type Id = Uuid;
pub type GetRoomResponse = Room;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ListRoomsResponse {
pub rooms: Vec<Room>,
pub is_before: bool,
pub is_after: bool,
pub total_rooms: usize,
}
pub type CreateRoomResponse = Room;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Room {
pub id: Id,
pub state: RoomState,
pub host: Option<player::Player>,
pub players: HashMap<player::Id, player::Player>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum RoomState {
Lobby, Started, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum RoomEvent {
Server(RoomServerEvent),
Client(RoomClientEvent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum RoomServerEvent {
RoomUpdate(room::Room), GameStarted, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum RoomClientEvent {
PlayerNameUpdated(String), GameStarted, }