Card.h 948 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include <furi.h>
  3. class RenderBuffer;
  4. enum CardValue {
  5. NONE = -1,
  6. TWO = 0,
  7. THREE = 1,
  8. FOUR = 2,
  9. FIVE = 3,
  10. SIX = 4,
  11. SEVEN = 5,
  12. EIGHT = 6,
  13. NINE = 7,
  14. TEN = 8,
  15. JACK = 9,
  16. QUEEN = 10,
  17. KING = 11,
  18. ACE = 12,
  19. };
  20. struct Card {
  21. uint8_t suit = 0;
  22. CardValue value = NONE;
  23. bool exposed = false;
  24. Card(uint8_t s, uint8_t v) : suit(s), value((CardValue) v) {}
  25. void Render(uint8_t x, uint8_t y, bool selected, RenderBuffer *buffer, uint8_t size_limit = 22);
  26. static void RenderEmptyCard(uint8_t x, uint8_t y, RenderBuffer *buffer);
  27. static void RenderBack(uint8_t x, uint8_t y, bool selected, RenderBuffer *buffer, uint8_t size_limit= 22);
  28. static void TryRender(Card *c, uint8_t x, uint8_t y, bool selected, RenderBuffer *buffer, uint8_t size_limit= 22);
  29. bool CanPlaceFoundation(Card *where);
  30. bool CanPlaceColumn(Card *where);
  31. void print();
  32. };