diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-09-21 16:56:38 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-09-21 16:56:38 -0400 |
commit | 1d13f53d8dd72921bb6e05839ef125061b567be8 (patch) | |
tree | 90926fcc11246fb8e4318ce55ef580c939ee17c5 /webapp | |
parent | 55f6d120d492755a1f2a5bd66d1819c8b2ad9f31 (diff) |
Refactor GameState to use PlayingDeal
Diffstat (limited to 'webapp')
-rw-r--r-- | webapp/src/bridge_engine.rs | 4 | ||||
-rw-r--r-- | webapp/src/components/game.rs | 15 |
2 files changed, 9 insertions, 10 deletions
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<PlayingDealResult, anyhow::Error> { 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! { <p>{ "Time to play" }</p> }, GameState::PassedOut { .. } => html! { <p>{ "Everyone passed" }</p> }, }; |