41 lines
1.1 KiB
Rust
41 lines
1.1 KiB
Rust
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),
|
|
}
|
|
}
|
|
}
|