diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-11-25 17:10:17 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-11-27 17:23:11 -0500 |
commit | 685ac902e3faf4ed5a76b8c859b01f7d2e2d9ea0 (patch) | |
tree | 063eac21566c0dd83f849d7ea9cccb51a618d4de /server | |
parent | eeeea174157202cb812fab04844292cbd96bfac0 (diff) |
Add state machine for GameState and corresponding player view of the state
Diffstat (limited to 'server')
-rw-r--r-- | server/src/main.rs | 6 | ||||
-rw-r--r-- | server/src/play.rs | 7 |
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"), }; } |