summaryrefslogtreecommitdiff
path: root/webapp/src/components
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-12-22 13:31:24 -0500
committerKjetil Orbekk <kj@orbekk.com>2022-12-22 13:39:11 -0500
commit22452073063b9211aa2aa38a1b1e2cf2e44cf133 (patch)
tree7988fed422b019a6ff5ba057d17f83082b05c440 /webapp/src/components
parentc2145b91775be375779884a2a97365396923aba1 (diff)
Delete outdated `game` component
Diffstat (limited to 'webapp/src/components')
-rw-r--r--webapp/src/components/game.rs135
1 files changed, 0 insertions, 135 deletions
diff --git a/webapp/src/components/game.rs b/webapp/src/components/game.rs
deleted file mode 100644
index c590357..0000000
--- a/webapp/src/components/game.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-use crate::components::{Bidding, Hand, ShowBid, TrickInPlay, TricksPlayed};
-use log::{error, info};
-use protocol::bridge_engine::{
- BiddingState, DealInPlay, DealInPlayResult, GameState, PlayState, Player,
-};
-use rand::random;
-use yew::prelude::*;
-
-fn init_state() -> GameState {
- GameState::new(random(), Player::East)
-}
-
-#[function_component(Game)]
-pub fn game() -> Html {
- let state = use_state(|| init_state());
-
- let shuffle = {
- let state = state.clone();
- Callback::from(move |_| {
- state.set(init_state());
- })
- };
-
- let on_card_clicked = {
- let state = state.clone();
- Callback::from(move |card| {
- if let GameState::Play(PlayState {
- dealer,
- playing_deal,
- contract,
- bidding,
- deal,
- ..
- }) = (*state).clone()
- {
- info!("Card clicked: {}", card);
- match playing_deal.play(card) {
- Err(err) => error!("Could not play card: {:?}", err),
- Ok(DealInPlayResult::InProgress(playing_deal)) => {
- state.set(GameState::Play(PlayState {
- dealer,
- playing_deal,
- contract,
- bidding,
- deal,
- }))
- }
- Ok(DealInPlayResult::PlayFinished(_tricks)) => todo!(),
- };
- }
- })
- };
-
- let center = match &*state {
- GameState::Bidding(BiddingState {
- dealer,
- deal,
- bidding,
- }) => {
- let on_contract = {
- let state = state.clone();
- let dealer = dealer.clone();
- let deal = deal.clone();
- Callback::from(move |(contract, bidding)| {
- state.set(match contract {
- Some(contract) => GameState::Play(PlayState {
- dealer,
- deal: deal.clone(),
- playing_deal: DealInPlay::new(dealer, deal.clone()),
- contract,
- bidding,
- }),
- None => GameState::PassedOut {
- dealer: dealer,
- deal: deal.clone(),
- bidding: bidding,
- },
- });
- })
- };
- html! {
- <Bidding {on_contract} dealer={dealer.clone()} />
- }
- }
- GameState::Play(PlayState {
- deal,
- dealer,
- playing_deal,
- contract: _,
- bidding: _,
- }) => {
- html! {
- <>
- <TricksPlayed tricks={ playing_deal.tricks().clone() } />
- <TrickInPlay in_progress={ playing_deal.trick_in_play().clone() } />
- </>
- }
- }
- GameState::PassedOut { .. } => html! { <p>{ "Everyone passed" }</p> },
- };
-
- html! {
- <>
- <div class="nav">
- if let GameState::Play(PlayState { contract, bidding, .. }) = &*state {
- <ShowBid contract={contract.clone()} bidding={bidding.clone()}/>
- }
- <button onclick={shuffle}>{ "Shuffle" }</button>
- </div>
- <div class="center">
- { center }
- </div>
- <div class="hand west">
- <Hand cards={ state.deal().west.clone() }
- on_card_clicked={ on_card_clicked.clone() }
- />
- </div>
- <div class="hand north">
- <Hand cards={ state.deal().north.clone() }
- on_card_clicked={ on_card_clicked.clone() }
- />
- </div>
- <div class="hand east">
- <Hand cards={ state.deal().east.clone() }
- on_card_clicked={ on_card_clicked.clone() }
- />
- </div>
- <div class="hand south">
- <Hand cards={ state.deal().south.clone() }
- on_card_clicked={ on_card_clicked.clone() }
- />
- </div>
- </>
- }
-}