Card.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include <furi.h>
  3. class RenderBuffer;
  4. enum CardValue {
  5. NONE = -1,
  6. TWO = 0, //1
  7. THREE = 1, //2
  8. FOUR = 2, //3
  9. FIVE = 3, //4
  10. SIX = 4, //5
  11. SEVEN = 5, //6
  12. EIGHT = 6, //7
  13. NINE = 7, //8
  14. TEN = 8, //9
  15. JACK = 9, //10
  16. QUEEN = 10, //11
  17. KING = 11, //12
  18. ACE = 12, //13
  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. };