2025-06-23 09:48:28 +01:00
|
|
|
use colored::Colorize;
|
2025-10-02 17:52:12 +01:00
|
|
|
use tokio::sync::broadcast::Receiver;
|
2025-10-03 00:00:39 +01:00
|
|
|
use werewolves_proto::error::GameError;
|
2025-06-23 09:48:28 +01:00
|
|
|
|
2025-10-03 00:00:39 +01:00
|
|
|
use crate::runner::IdentifiedClientMessage;
|
2025-06-23 09:48:28 +01:00
|
|
|
|
|
|
|
|
pub struct PlayerIdComms {
|
|
|
|
|
message_recv: Receiver<IdentifiedClientMessage>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl PlayerIdComms {
|
2025-10-12 23:48:52 +01:00
|
|
|
pub fn new(message_recv: Receiver<IdentifiedClientMessage>) -> Self {
|
|
|
|
|
Self { message_recv }
|
2025-06-23 09:48:28 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|