From 92c68e821ee381ee2aa52bdfcbaebdccc76f0870 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Tue, 6 Sep 2022 21:19:32 -0400 Subject: Set up initial shared (empty) bidding state --- webapp/src/bridge_engine.rs | 13 ++++++++++--- webapp/src/default.css | 2 ++ webapp/src/main.rs | 16 +++++----------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/webapp/src/bridge_engine.rs b/webapp/src/bridge_engine.rs index 573b2f1..fd52c33 100644 --- a/webapp/src/bridge_engine.rs +++ b/webapp/src/bridge_engine.rs @@ -263,7 +263,7 @@ impl Bidding { } } - fn highest_bid(&self) -> Option { + pub fn highest_bid(&self) -> Option { for bid in self.bids.iter().rev() { if let Some(raise) = bid.as_raise() { return Some(raise); @@ -314,7 +314,11 @@ pub enum BiddingResult { } impl BiddingResult { - pub fn bidding(self) -> Bidding { + pub fn new(dealer: Player) -> Self { + BiddingResult::InProgress(Bidding::new(dealer)) + } + + pub fn bidding(&self) -> &Bidding { match self { BiddingResult::InProgress(bidding) => bidding, BiddingResult::Contract(_, bidding) => bidding, @@ -375,7 +379,10 @@ mod tests { let mut checked_raises = 0; for bid in Raise::all_raises() { assert_eq!(bid, Raise::from_str(format!("{}", bid).as_str()).unwrap()); - assert_eq!(Bid::Raise(bid), Bid::from_str(format!("{}", bid).as_str()).unwrap()); + assert_eq!( + Bid::Raise(bid), + Bid::from_str(format!("{}", bid).as_str()).unwrap() + ); checked_raises += 1; } assert_eq!(checked_raises, 35); diff --git a/webapp/src/default.css b/webapp/src/default.css index 7e34b66..724cce9 100644 --- a/webapp/src/default.css +++ b/webapp/src/default.css @@ -65,8 +65,10 @@ body { .bidding-table { max-width: 250px; + min-height: 50px; display: grid; grid-template-columns: repeat(4, 1fr); + grid-template-rows: min-content; border: 2px solid #000; border-radius: 10px; background-color: #eee; diff --git a/webapp/src/main.rs b/webapp/src/main.rs index dd69eca..c99eeee 100644 --- a/webapp/src/main.rs +++ b/webapp/src/main.rs @@ -6,6 +6,7 @@ pub mod bridge_engine; pub mod card; use bridge_engine::Bid; use bridge_engine::Bidding; +use bridge_engine::BiddingResult; use bridge_engine::Player; use bridge_engine::Raise; extern crate wee_alloc; @@ -33,6 +34,8 @@ pub fn app() -> Html { let south = use_state(|| HandProps::from_iter(deal.south.into_iter())); let east = use_state(|| HandProps::from_iter(deal.east.into_iter())); + let bidding_state = use_state(|| BiddingResult::new(Player::East)); + let shuffle = { let north = north.clone(); let west = west.clone(); @@ -50,21 +53,12 @@ pub fn app() -> Html { }) }; - let bidding = Bidding::new(Player::North); - let bidding = bidding.bid("1NT".parse().unwrap()).unwrap().bidding(); - let bidding = bidding.bid("pass".parse().unwrap()).unwrap().bidding(); - let bidding = bidding.bid("2♦".parse().unwrap()).unwrap().bidding(); - let bidding = bidding.bid("pass".parse().unwrap()).unwrap().bidding(); - let bidding = bidding.bid("2♥".parse().unwrap()).unwrap().bidding(); - let bidding = bidding.bid("pass".parse().unwrap()).unwrap().bidding(); - let bidding = bidding.bid("4♥".parse().unwrap()).unwrap().bidding(); - html! { <>

{ "Bidding table" }

- +

{ "Bidding box" }

- ().unwrap())} /> +

{ "North" }

{ "West" }

-- cgit v1.2.3