summaryrefslogtreecommitdiff
path: root/webapp/src
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-11-15 19:49:54 -0500
committerKjetil Orbekk <kj@orbekk.com>2022-11-15 19:49:54 -0500
commitb114fe7940e77090861ac9ba60f4d0b8caec8978 (patch)
treed5c7a1f2250a899719225642bf876a29316a30b0 /webapp/src
parent87ede1e2b367a997440626ad9f583600d7cc42fc (diff)
Add journaling GameState
Diffstat (limited to 'webapp/src')
-rw-r--r--webapp/src/components/game.rs46
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,
},
});
})