summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-11-25 17:10:17 -0500
committerKjetil Orbekk <kj@orbekk.com>2022-11-27 17:23:11 -0500
commit685ac902e3faf4ed5a76b8c859b01f7d2e2d9ea0 (patch)
tree063eac21566c0dd83f849d7ea9cccb51a618d4de /server
parenteeeea174157202cb812fab04844292cbd96bfac0 (diff)
Add state machine for GameState and corresponding player view of the state
Diffstat (limited to 'server')
-rw-r--r--server/src/main.rs6
-rw-r--r--server/src/play.rs7
2 files changed, 5 insertions, 8 deletions
diff --git a/server/src/main.rs b/server/src/main.rs
index b8ee403..cf42b3f 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -10,7 +10,7 @@ use axum::{
Json, Router,
};
use protocol::{Table, UserInfo};
-use protocol::bridge_engine::{TableView, Player};
+use protocol::bridge_engine::{GameStatePlayerView, Player};
use server::ContextExtension;
use tower_cookies::{Cookie, CookieManagerLayer, Cookies};
use tower_http::trace::TraceLayer;
@@ -138,12 +138,12 @@ async fn get_table_view(
_session: AuthenticatedSession,
extension: ContextExtension,
Path(id): Path<Uuid>,
-) -> Result<Json<protocol::bridge_engine::TableView>, BridgeError> {
+) -> Result<Json<protocol::bridge_engine::GameStatePlayerView>, BridgeError> {
info!("Getting table state for {id:}");
let jnl = DbJournal::new(extension.db.clone(), id);
let table = play::Table::new_or_replay(jnl).await?;
let response =
- Json(TableView::from_game_state(table.game(), Player::South));
+ Json(GameStatePlayerView::from_game_state(table.game(), Player::South));
info!("Response: {response:#?}");
Ok(response)
}
diff --git a/server/src/play.rs b/server/src/play.rs
index 256392d..9ae3d54 100644
--- a/server/src/play.rs
+++ b/server/src/play.rs
@@ -91,10 +91,7 @@ impl<J: Journal> Table<J> {
}
async fn init(journal: &mut J) -> Result<GameState, BridgeError> {
- let game = GameState::Bidding {
- dealer: Player::East,
- deal: bridge_engine::deal(),
- };
+ let game = GameState::new(bridge_engine::deal(), Player::East);
journal.append(0, json!(game)).await?;
Ok(game)
}
@@ -169,7 +166,7 @@ mod test {
async fn test_new_table() {
let t1: Table<TestJournal> = Table::new(Default::default()).await.unwrap();
match t1.game {
- GameState::Bidding { dealer, deal } => (),
+ GameState::Bidding { .. } => (),
_ => panic!("should be Bidding"),
};
}