werewolves/werewolves-server/src/communication/player.rs

41 lines
1.1 KiB
Rust
Raw Normal View History

use colored::Colorize;
use tokio::sync::broadcast::Receiver;
use werewolves_proto::{error::GameError, player::PlayerId};
use crate::{connection::JoinedPlayers, runner::IdentifiedClientMessage};
pub struct PlayerIdComms {
// joined_players: JoinedPlayers,
message_recv: Receiver<IdentifiedClientMessage>,
// connect_recv: tokio::sync::broadcast::Receiver<(PlayerId, bool)>,
}
impl PlayerIdComms {
pub fn new(
// joined_players: JoinedPlayers,
message_recv: Receiver<IdentifiedClientMessage>,
// connect_recv: tokio::sync::broadcast::Receiver<(PlayerId, bool)>,
) -> Self {
Self {
// joined_players,
message_recv,
// connect_recv,
}
}
pub async fn recv(&mut self) -> Result<IdentifiedClientMessage, GameError> {
match self
.message_recv
.recv()
.await
.map_err(|err| GameError::GenericError(err.to_string()))
{
Ok(msg) => {
log::debug!("got message: {}", format!("{msg:?}").dimmed());
Ok(msg)
}
Err(err) => Err(err),
}
}
}