From 1d13f53d8dd72921bb6e05839ef125061b567be8 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Wed, 21 Sep 2022 16:56:38 -0400 Subject: Refactor GameState to use PlayingDeal --- webapp/src/bridge_engine.rs | 4 ++++ webapp/src/components/game.rs | 15 +++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) (limited to 'webapp') diff --git a/webapp/src/bridge_engine.rs b/webapp/src/bridge_engine.rs index c559576..d58a8dc 100644 --- a/webapp/src/bridge_engine.rs +++ b/webapp/src/bridge_engine.rs @@ -114,6 +114,10 @@ impl PlayingDeal { } } + pub fn deal(&self) -> &Deal { + &self.deal + } + pub fn play(mut self: Self, card: Card) -> Result { let player = self.in_progress.next_player(); let player_cards = player.get_cards(&mut self.deal); diff --git a/webapp/src/components/game.rs b/webapp/src/components/game.rs index 5258041..d367396 100644 --- a/webapp/src/components/game.rs +++ b/webapp/src/components/game.rs @@ -1,4 +1,4 @@ -use crate::bridge_engine::{self, Contract, Player}; +use crate::bridge_engine::{self, Contract, Player, PlayingDeal}; use crate::card; use crate::card::Deal; use crate::card::Suit; @@ -20,8 +20,7 @@ enum GameState { _bidding: bridge_engine::Bidding, }, Play { - _dealer: Player, - deal: Deal, + playing_deal: PlayingDeal, contract: Contract, bidding: bridge_engine::Bidding, }, @@ -32,7 +31,7 @@ impl GameState { match self { Self::Bidding { deal, .. } => deal, Self::PassedOut { deal, .. } => deal, - Self::Play { deal, .. } => deal, + Self::Play { playing_deal, .. } => &playing_deal.deal(), } } } @@ -72,8 +71,7 @@ pub fn game() -> Html { Callback::from(move |(contract, bidding)| { state.set(match contract { Some(contract) => GameState::Play { - _dealer: dealer, - deal: deal.clone(), + playing_deal: PlayingDeal::new(dealer, deal.clone()), contract, bidding, }, @@ -90,10 +88,7 @@ pub fn game() -> Html { } } GameState::Play { - _dealer: _, - deal: _, - contract: _, - bidding: _, + .. } => html! {

{ "Time to play" }

}, GameState::PassedOut { .. } => html! {

{ "Everyone passed" }

}, }; -- cgit v1.2.3