summaryrefslogtreecommitdiff
path: root/webapp/src/components
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 /webapp/src/components
parenteeeea174157202cb812fab04844292cbd96bfac0 (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.rs6
-rw-r--r--webapp/src/components/table.rs9
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,
}