diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-11-15 19:49:54 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-11-15 19:49:54 -0500 |
commit | b114fe7940e77090861ac9ba60f4d0b8caec8978 (patch) | |
tree | d5c7a1f2250a899719225642bf876a29316a30b0 /webapp | |
parent | 87ede1e2b367a997440626ad9f583600d7cc42fc (diff) |
Add journaling GameState
Diffstat (limited to 'webapp')
-rw-r--r-- | webapp/src/components/game.rs | 46 |
1 files changed, 3 insertions, 43 deletions
diff --git a/webapp/src/components/game.rs b/webapp/src/components/game.rs index 45ad035..02774e7 100644 --- a/webapp/src/components/game.rs +++ b/webapp/src/components/game.rs @@ -1,48 +1,8 @@ -use protocol::bridge_engine::{self, Contract, DealInPlay, DealInPlayResult, Player}; -use protocol::card; -use protocol::card::Deal; -use protocol::card::Suit; +use protocol::bridge_engine::{DealInPlay, DealInPlayResult, Player, GameState, deal}; use crate::components::{Bidding, Hand, ShowBid, TrickInPlay, TricksPlayed}; use log::{error, info}; use yew::prelude::*; -pub const SUIT_DISPLAY_ORDER: [Suit; 4] = [Suit::Diamond, Suit::Club, Suit::Heart, Suit::Spade]; - -#[derive(Debug, Clone)] -enum GameState { - Bidding { - dealer: Player, - deal: Deal, - }, - PassedOut { - _dealer: Player, - deal: Deal, - _bidding: bridge_engine::Bidding, - }, - Play { - playing_deal: DealInPlay, - contract: Contract, - bidding: bridge_engine::Bidding, - }, -} - -impl GameState { - fn deal(&self) -> &Deal { - match self { - Self::Bidding { deal, .. } => deal, - Self::PassedOut { deal, .. } => deal, - Self::Play { playing_deal, .. } => &playing_deal.deal(), - } - } -} - -pub fn deal() -> card::Deal { - let mut rng = rand::thread_rng(); - let mut deal = card::deal(&mut rng); - deal.sort(&SUIT_DISPLAY_ORDER, card::RankOrder::Descending); - deal -} - fn init_state() -> GameState { let dealer = Player::East; let deal = deal(); @@ -97,9 +57,9 @@ pub fn game() -> Html { bidding, }, None => GameState::PassedOut { - _dealer: dealer, + dealer: dealer, deal: deal.clone(), - _bidding: bidding, + bidding: bidding, }, }); }) |