summaryrefslogtreecommitdiff
path: root/webapp
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-09-21 16:56:38 -0400
committerKjetil Orbekk <kj@orbekk.com>2022-09-21 16:56:38 -0400
commit1d13f53d8dd72921bb6e05839ef125061b567be8 (patch)
tree90926fcc11246fb8e4318ce55ef580c939ee17c5 /webapp
parent55f6d120d492755a1f2a5bd66d1819c8b2ad9f31 (diff)
Refactor GameState to use PlayingDeal
Diffstat (limited to 'webapp')
-rw-r--r--webapp/src/bridge_engine.rs4
-rw-r--r--webapp/src/components/game.rs15
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> },
};