Game.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React, { Fragment } from 'react';
  2. import Hand from "./Hand";
  3. import { SiteState } from "./StateRouter";
  4. import { Card } from "./Card";
  5. import { colorToText } from "./util/colors";
  6. export default function Game({ message, swapCard, playCard, confirmPlay, undoPlay, skipTurn }) {
  7. console.log(message);
  8. const { hand, state, current_player, play_card, swap_card } = message;
  9. let play = null;
  10. let card = null;
  11. let text;
  12. switch (state) {
  13. case SiteState.SWAP_CARD:
  14. play = swapCard;
  15. if (swap_card) {
  16. card = swap_card;
  17. text = "Wacht op een kaart van je partner";
  18. } else {
  19. text = "Kies een kaart voor je partner";
  20. }
  21. break;
  22. case SiteState.SWAP_CARD_OTHERS:
  23. text = "Wacht op het andere team";
  24. break;
  25. case SiteState.PLAY_CARD:
  26. play = playCard;
  27. card = play_card;
  28. text = "Kies een kaart om te spelen";
  29. break;
  30. case SiteState.PLAY_CARD_OTHER:
  31. card = play_card;
  32. text = `${colorToText(current_player.color)} is aan de beurt`;
  33. break;
  34. }
  35. return <Fragment>
  36. <div className="top-bar">{text}</div>
  37. <div className="container">
  38. {card &&
  39. <Card value={card}/>
  40. }
  41. {card && play_card && state === SiteState.PLAY_CARD &&
  42. <button className="btn btn-success" onClick={confirmPlay}>Volgende speler</button>
  43. }
  44. {card && (state === SiteState.PLAY_CARD || state === SiteState.SWAP_CARD) &&
  45. <button className="btn btn-secondary" onClick={undoPlay}>Neem terug</button>
  46. }
  47. <br/>
  48. {state === SiteState.PLAY_CARD &&
  49. <button className="btn btn-primary" onClick={skipTurn}>Pas</button>
  50. }
  51. </div>
  52. <Hand cards={hand} play={play}/>
  53. </Fragment>;
  54. }