Start to create WS client for cli_player

This commit is contained in:
2022-10-15 10:12:02 +02:00
parent d90560d330
commit 4af2585a8b
11 changed files with 135 additions and 1 deletions

View File

@ -39,6 +39,8 @@ impl Player for BotPlayer {
true
}
fn opponent_connected(&self) {}
fn set_other_player_name(&self, _name: &str) {}
fn query_boats_layout(&self, rules: &GameRules) {

View File

@ -14,6 +14,8 @@ pub trait Player {
fn is_bot(&self) -> bool;
fn opponent_connected(&self);
fn set_other_player_name(&self, name: &str);
fn query_boats_layout(&self, rules: &GameRules);
@ -240,6 +242,9 @@ where
self.players.push(msg.0);
if self.players.len() == 2 {
self.players[0].opponent_connected();
self.players[1].opponent_connected();
self.query_boats_disposition();
}
}

View File

@ -25,6 +25,10 @@ impl Player for HumanPlayer {
false
}
fn opponent_connected(&self) {
self.player.do_send(ServerMessage::OpponentConnected);
}
fn set_other_player_name(&self, name: &str) {
self.player.do_send(ServerMessage::SetOpponentName {
name: name.to_string(),

View File

@ -47,6 +47,7 @@ pub enum ServerMessage {
},
InvalidInviteCode,
WaitingForAnotherPlayer,
OpponentConnected,
SetOpponentName {
name: String,
},

View File

@ -196,6 +196,9 @@ impl BotClient {
log::debug!("Got invalid invite code!");
return Ok(ClientEndResult::InvalidInviteCode);
}
ServerMessage::OpponentConnected => {
log::debug!("Opponent connected");
}
ServerMessage::QueryBoatsLayout { rules } => {
assert_eq!(&rules, &self.requested_rules);
log::debug!("Server requested boats layout");

View File

@ -1,2 +1,12 @@
use std::error::Error;
use std::fmt::Display;
use std::io::ErrorKind;
pub mod network_utils;
pub mod string_utils;
pub type Res<E = ()> = Result<E, Box<dyn Error>>;
pub fn boxed_error<D: Display>(msg: D) -> Box<dyn Error> {
Box::new(std::io::Error::new(ErrorKind::Other, msg.to_string()))
}