From 71c95fcf1211cb32755f028c8322c9c07ddd6f89 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Fri, 30 Dec 2022 10:57:13 -0500 Subject: Display cards during game result This uses the Hand widget which is not working well for vertical hands yet. --- protocol/src/bridge_engine.rs | 7 ++++ webapp/src/components/table.rs | 82 +++++++++++++++++++++++++++++++++++------- 2 files changed, 77 insertions(+), 12 deletions(-) diff --git a/protocol/src/bridge_engine.rs b/protocol/src/bridge_engine.rs index 75a51ba..44e5c91 100644 --- a/protocol/src/bridge_engine.rs +++ b/protocol/src/bridge_engine.rs @@ -739,6 +739,13 @@ impl PlayResult { PlayResult::Played(r) => r.deal(), } } + + pub fn bidding(&self) -> &Bidding { + match self { + PlayResult::PassedOut(r) => &r.bidding, + PlayResult::Played(r) => &r.bidding, + } + } } #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] diff --git a/webapp/src/components/table.rs b/webapp/src/components/table.rs index b9fe45d..a751bc1 100644 --- a/webapp/src/components/table.rs +++ b/webapp/src/components/table.rs @@ -4,8 +4,8 @@ use crate::{services, use_app_context}; use futures::FutureExt; use log::info; use protocol::bridge_engine::{ - Bid, BiddingStatePlayerView, GameStatePlayerView, PlayStatePlayerView, - Player, TableStatePlayerView, + Bid, BiddingStatePlayerView, GameStatePlayerView, PlayResult, + PlayStatePlayerView, Player, TableStatePlayerView, }; use protocol::card::Card; use yew::prelude::*; @@ -65,6 +65,67 @@ impl OnlineTableInner { ); } + fn view_result( + &self, + ctx: &yew::Context, + result: &PlayResult, + ) -> Html { + let leave_table = { + let ctx = ctx.props().app_ctx.clone(); + Callback::from(move |_| ctx.leave_table()) + }; + + let center = html! { + <> + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + }; + html! { + <> +
+ + {center} +
+ + } + } + fn view_game( &self, ctx: &yew::Context, @@ -149,9 +210,11 @@ impl Component for OnlineTableInner { async move { services::new_deal(table.clone()).await?; services::get_table_player_view(table).await - }.map(Msg::TableStateUpdated)); + } + .map(Msg::TableStateUpdated), + ); false - }, + } } } @@ -162,14 +225,9 @@ impl Component for OnlineTableInner {

{"An error occurred."}

}, Some(TableStatePlayerView::Game(game)) => self.view_game(ctx, game), - Some(TableStatePlayerView::Result(result)) => html! { - <> -
{format!("{result:#?}")}
- - - }, + Some(TableStatePlayerView::Result(result)) => { + self.view_result(ctx, result) + } } } } -- cgit v1.2.3