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 /webapp/src/components | |
parent | eeeea174157202cb812fab04844292cbd96bfac0 (diff) |
Add state machine for GameState and corresponding player view of the state
Diffstat (limited to 'webapp/src/components')
-rw-r--r-- | webapp/src/components/game.rs | 6 | ||||
-rw-r--r-- | webapp/src/components/table.rs | 9 |
2 files changed, 7 insertions, 8 deletions
diff --git a/webapp/src/components/game.rs b/webapp/src/components/game.rs index 9511eb2..c5e2602 100644 --- a/webapp/src/components/game.rs +++ b/webapp/src/components/game.rs @@ -4,9 +4,7 @@ use log::{error, info}; use yew::prelude::*; fn init_state() -> GameState { - let dealer = Player::East; - let deal = deal(); - GameState::Bidding { dealer, deal } + GameState::new(deal(), Player::East) } #[function_component(Game)] @@ -46,7 +44,7 @@ pub fn game() -> Html { }; let center = match &*state { - GameState::Bidding { dealer, deal } => { + GameState::Bidding { dealer, deal, bidding } => { let on_contract = { let state = state.clone(); let dealer = dealer.clone(); diff --git a/webapp/src/components/table.rs b/webapp/src/components/table.rs index 92302b2..c4f693e 100644 --- a/webapp/src/components/table.rs +++ b/webapp/src/components/table.rs @@ -1,6 +1,6 @@ use gloo_net::http::Request; use log::info; -use protocol::bridge_engine::TableView; +use protocol::bridge_engine::GameStatePlayerView; use yew::prelude::*; use crate::use_app_context; use crate::components::Hand; @@ -9,7 +9,7 @@ use crate::components::Hand; pub fn online_table(props: &OnlineTableProps) -> Html { let ctx = use_app_context(); - let table_state: UseStateHandle<Option<TableView>> = use_state(|| None); + let table_state: UseStateHandle<Option<GameStatePlayerView>> = use_state(|| None); { // TODO update this from server state let table_state = table_state.clone(); @@ -21,6 +21,7 @@ pub fn online_table(props: &OnlineTableProps) -> Html { let response = Request::get(&format!("/api/table/{}", props.table.id)) .send() .await?; + // info!("Got response: {:#?}", response.body()); let table = response.json().await?; table_state.set(Some(table)); Ok(()) @@ -66,7 +67,7 @@ pub fn table(props: &TableProps) -> Html { html! { <> <div class="hand south"> - <Hand cards={ props.table.hand.clone() } on_card_clicked={ on_card_clicked.clone() } /> + <Hand cards={ props.table.hand().clone() } on_card_clicked={ on_card_clicked.clone() } /> </div> <h2>{ "Table view" }</h2> <pre>{ format!("{:#?}", props.table) }</pre> @@ -76,5 +77,5 @@ pub fn table(props: &TableProps) -> Html { #[derive(PartialEq, Properties, Clone)] pub struct TableProps { - pub table: TableView, + pub table: GameStatePlayerView, } |