summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-12-22 15:23:39 -0500
committerKjetil Orbekk <kj@orbekk.com>2022-12-22 15:23:39 -0500
commitf06fb735448926bdcc0e6448644895b4c83a4d1f (patch)
tree2f8da81738ecab500750717545e9544def195bd8 /server
parent147f3bcbcd18ff5afd57c92cbb0b58eed4d68595 (diff)
Add support for advancing the card play using bots
Diffstat (limited to 'server')
-rw-r--r--server/src/play.rs20
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(())
+ }
}
}