From 55a24a3b7d1b3fcc07f0bb8e53b00abf23e651b3 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sat, 10 Sep 2022 14:49:38 -0400 Subject: Add nav bar with context --- webapp/src/components/bidding.rs | 4 ++-- webapp/src/components/game.rs | 28 ++++++++++++++++++++++++---- webapp/src/components/show_bid.rs | 18 ++++++++++++++++++ 3 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 webapp/src/components/show_bid.rs (limited to 'webapp/src/components') diff --git a/webapp/src/components/bidding.rs b/webapp/src/components/bidding.rs index 26a4426..d142dec 100644 --- a/webapp/src/components/bidding.rs +++ b/webapp/src/components/bidding.rs @@ -46,13 +46,13 @@ pub fn bidding(props: &BiddingProperties) -> Html { html! { <> -

{ "Bidding table" }

-

{ "Bidding box" }

+

{ "Bidding table" }

+ } } diff --git a/webapp/src/components/game.rs b/webapp/src/components/game.rs index 33fb5b7..0f25fc3 100644 --- a/webapp/src/components/game.rs +++ b/webapp/src/components/game.rs @@ -1,11 +1,17 @@ use crate::bridge_engine::{self, Contract, Player}; use crate::card; use crate::card::Suit; -use crate::components::{Bidding, Hand, HandProps}; +use crate::components::{Bidding, Hand, HandProps, ShowBid}; use yew::prelude::*; pub const SUIT_DISPLAY_ORDER: [Suit; 4] = [Suit::Diamond, Suit::Club, Suit::Heart, Suit::Spade]; +#[derive(Debug)] +enum Phase { + Bidding, + Cardplay, +} + #[function_component(Game)] pub fn game() -> Html { let mut rng = rand::thread_rng(); @@ -25,12 +31,19 @@ pub fn game() -> Html { Callback::from(move |c| contract.set(Some(c))) }; + let phase = if contract.is_none() { + Phase::Bidding + } else { + Phase::Cardplay + }; + let shuffle = { let north = north.clone(); let west = west.clone(); let south = south.clone(); let east = east.clone(); let dealer = dealer.clone(); + let contract = contract.clone(); Callback::from(move |_| { let mut rng = rand::thread_rng(); @@ -42,19 +55,26 @@ pub fn game() -> Html { east.set(deal.east.into_iter().collect()); dealer.set(dealer.next()); + contract.set(None); }) }; html! { <> +

{ format!("Dealer: {:?}", *dealer) }

- if let Some((contract, bidding)) = &*contract { - { format!("Got contract {:?}. Bidding was {:?}", contract, bidding) } + if let Some(_) = &*contract { + { "Let's play" } } else { } -
diff --git a/webapp/src/components/show_bid.rs b/webapp/src/components/show_bid.rs new file mode 100644 index 0000000..b0c917e --- /dev/null +++ b/webapp/src/components/show_bid.rs @@ -0,0 +1,18 @@ +use crate::bridge_engine::{Bid, Bidding, Contract}; +use crate::components::bid_css_class; +use yew::prelude::*; + +#[derive(PartialEq, Properties, Clone)] +pub struct ShowBidProps { + pub contract: Contract, + pub bidding: Bidding, +} + +#[function_component(ShowBid)] +pub fn show_bid(props: &ShowBidProps) -> Html { +html! { + <> +

{ format!("{}", props.contract) }

+ +} +} -- cgit v1.2.3