diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-12-22 20:35:49 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-12-22 20:36:35 -0500 |
commit | 573749cb2055d9e3e6897f73d6879773d738faee (patch) | |
tree | 84238c93441bdef3e097b82ce37348d8c7c766ee /protocol/src/bridge_engine.rs | |
parent | 93faa3894907508933a43173d829b15fd32cbc44 (diff) |
Add playing view showing declarer and dummy hands
Diffstat (limited to 'protocol/src/bridge_engine.rs')
-rw-r--r-- | protocol/src/bridge_engine.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/protocol/src/bridge_engine.rs b/protocol/src/bridge_engine.rs index bfc2a93..293b205 100644 --- a/protocol/src/bridge_engine.rs +++ b/protocol/src/bridge_engine.rs @@ -187,6 +187,11 @@ impl DealInPlay { self.in_progress.current_player() } + pub fn is_dummy_visible(&self) -> bool { + !self.tricks_played.is_empty() + || !self.in_progress.trick.cards_played.is_empty() + } + pub fn play( mut self: Self, card: Card, @@ -835,11 +840,23 @@ impl PlayStatePlayerView { play_state: &PlayState, player_position: Player, ) -> Self { + let dummy = if play_state.playing_deal.is_dummy_visible() { + Some( + play_state + .contract + .declarer + .many_next(2) + .get_cards(&play_state.playing_deal.deal) + .clone(), + ) + } else { + None + }; Self { player_position, bidding: play_state.bidding.clone(), contract: play_state.contract, - dummy: None, + dummy, declarer_tricks: 0, hand: player_position .get_cards(&play_state.playing_deal.deal) |