From b114fe7940e77090861ac9ba60f4d0b8caec8978 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Tue, 15 Nov 2022 19:49:54 -0500 Subject: Add journaling GameState --- webapp/src/components/game.rs | 46 +++---------------------------------------- 1 file changed, 3 insertions(+), 43 deletions(-) (limited to 'webapp') 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, }, }); }) -- cgit v1.2.3