diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-12-22 15:23:39 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-12-22 15:23:39 -0500 |
commit | f06fb735448926bdcc0e6448644895b4c83a4d1f (patch) | |
tree | 2f8da81738ecab500750717545e9544def195bd8 /server | |
parent | 147f3bcbcd18ff5afd57c92cbb0b58eed4d68595 (diff) |
Add support for advancing the card play using bots
Diffstat (limited to 'server')
-rw-r--r-- | server/src/play.rs | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/server/src/play.rs b/server/src/play.rs index 62b6219..16ef5a4 100644 --- a/server/src/play.rs +++ b/server/src/play.rs @@ -2,11 +2,14 @@ use std::mem; use async_trait::async_trait; use protocol::{ - bot::BiddingBot, - bridge_engine::{Bid, BiddingStatePlayerView, Deal, GameState, Player}, + bot::{BiddingBot, PlayingBot}, + bridge_engine::{ + Bid, BiddingStatePlayerView, Deal, GameState, PlayStatePlayerView, + Player, GameResult, PlayResult, + }, card::Card, play_result::MoveResult, - simple_bots::AlwaysPassBiddingBot, + simple_bots::{AlwaysPassBiddingBot, RandomPlayingBot}, }; use rand::random; use serde::{de::DeserializeOwned, Deserialize, Serialize}; @@ -254,7 +257,16 @@ pub async fn advance_play<J: Journal<TableUpdate>>( table.bid(bid).await?; Ok(()) } - GameState::Play(_) => todo!(), + GameState::Play(game) => { + let player_view = PlayStatePlayerView::from_play_state( + game, + game.current_player(), + ); + let bot = RandomPlayingBot {}; + let card = bot.play(&player_view).await; + table.play(card).await?; + Ok(()) + } } } |