use actix::Addr; use uuid::Uuid; use crate::data::GameRules; use crate::game::{Game, Player, SetBoatsLayout}; use crate::human_player_ws::{ClientMessage, HumanPlayerWS, ServerMessage}; pub struct HumanPlayer { pub name: String, pub game: Addr, pub player: Addr, pub uuid: Uuid, } impl Player for HumanPlayer { fn get_name(&self) -> &str { &self.name } fn get_uid(&self) -> Uuid { self.uuid } fn query_boats_layout(&self, rules: &GameRules) { self.player.do_send(ServerMessage::QueryBoatsLayout { rules: rules.clone(), }); } fn notify_other_player_ready(&self) { self.player.do_send(ServerMessage::OtherPlayerReady); } fn notify_game_starting(&self) { self.player.do_send(ServerMessage::GameStarting); } } impl HumanPlayer { pub fn handle_client_message(&self, msg: ClientMessage) { match msg { ClientMessage::StopGame => { // TODO : do something} } ClientMessage::BoatsLayout { layout } => { self.game.do_send(SetBoatsLayout(self.uuid, layout)) } } } }