use std::process::exit;
use log::info;
use crate::{
i_client_handler::ComCancelHandler,
internal::{GameResult, GameState, PreparedRoom},
neutral::Move,
};
pub trait IClientHandler {
fn calculate_move(&mut self) -> Move;
fn on_gamestate_update(&mut self, state: GameState);
fn on_game_joined(&mut self, room_id: &str) {
println!("joined game with id: {}", room_id);
}
fn on_game_left(&mut self) {
info!("client is not in game room anymore");
}
fn on_game_result(&mut self, res: &GameResult) {
println!("game over, exiting");
println!("final result: \n{:#?}", res);
exit(0)
}
fn on_welcome_message(&mut self) {
info!("received welcome")
}
#[allow(unused_variables)]
fn while_waiting(&mut self, cancel_handler: ComCancelHandler) {}
#[allow(unused_variables)]
fn on_game_prepared(&mut self, prepared: &PreparedRoom) {}
fn on_create_game(&mut self) {}
#[allow(unused_variables)]
fn on_observed(&mut self, room_id: &str) {}
}