You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.3 KiB
41 lines
1.3 KiB
use crate::types::{Position2dRef, TileRef};
|
|
use board_shared::{position::Position2d, tile::Tile};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Deserialize, Eq, PartialEq, Serialize)]
|
|
pub enum ClientMessage {
|
|
/// Creates a new room and join it with the given player name.
|
|
///
|
|
/// The server answers with a JoinedRoom message.
|
|
CreateRoom(String),
|
|
JoinRoom(String, String),
|
|
Disconnected,
|
|
TileUse(#[serde(with = "Position2dRef")] Position2d, usize),
|
|
TileTake(usize),
|
|
}
|
|
|
|
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
|
|
pub enum ServerMessage {
|
|
/// Informs that a room has been joined.
|
|
JoinedRoom {
|
|
room_name: String,
|
|
players: Vec<(String, u32, bool)>,
|
|
active_player: usize,
|
|
},
|
|
/// Notify that new player has joined the game.
|
|
PlayerConnected(String),
|
|
/// Notify that new player has rejoined the game.
|
|
PlayerReconnected(usize),
|
|
/// Notify that new player has temporary left the game.
|
|
PlayerDisconnected(usize),
|
|
/// Change the current player
|
|
PlayerTurn(usize),
|
|
/// Informs that a tile has been placed
|
|
TilePlaced(
|
|
#[serde(with = "Position2dRef")] Position2d,
|
|
#[serde(with = "TileRef")] Tile,
|
|
),
|
|
/// Informs that a tile has been removed
|
|
TileRemoved(#[serde(with = "Position2dRef")] Position2d),
|
|
}
|