Card.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "Card.h"
  2. #include "RenderBuffer.h"
  3. #include "../assets.h"
  4. #define CARD_HEIGHT 23
  5. #define CARD_HALF_HEIGHT 11
  6. #define CARD_WIDTH 17
  7. #define CARD_HALF_WIDTH 8
  8. static Sprite letters[] = {
  9. Sprite(sprite_2, BlackOnly),
  10. Sprite(sprite_3, BlackOnly),
  11. Sprite(sprite_4, BlackOnly),
  12. Sprite(sprite_5, BlackOnly),
  13. Sprite(sprite_6, BlackOnly),
  14. Sprite(sprite_7, BlackOnly),
  15. Sprite(sprite_8, BlackOnly),
  16. Sprite(sprite_9, BlackOnly),
  17. Sprite(sprite_10, BlackOnly),
  18. Sprite(sprite_J, BlackOnly),
  19. Sprite(sprite_Q, BlackOnly),
  20. Sprite(sprite_K, BlackOnly),
  21. Sprite(sprite_A, BlackOnly),
  22. };
  23. static Sprite suits[] = {
  24. Sprite(sprite_hearths, BlackOnly),
  25. Sprite(sprite_diamonds, BlackOnly),
  26. Sprite(sprite_spades, BlackOnly),
  27. Sprite(sprite_clubs, BlackOnly)
  28. };
  29. static Sprite backSide = Sprite(sprite_pattern_big, BlackOnly);
  30. void Card::Render(uint8_t x, uint8_t y, bool selected, RenderBuffer *buffer) {
  31. if (exposed) {
  32. buffer->draw_rbox(x, y, x + 16, y + 22, White);
  33. buffer->draw_rbox_frame(x, y, x + 16, y + 22, Black);
  34. // buffer->draw_line(x+15, y, x+15, y+22, White);
  35. buffer->draw(&(letters[value]), (Vector) {(float) x + 5, (float) y + 6}, 0);
  36. buffer->draw(&(suits[suit]), (Vector) {(float) x + 12, (float) y + 6}, 0);
  37. buffer->draw(&(letters[value]), (Vector) {(float) x + 12, (float) y + 17}, M_PI);
  38. buffer->draw(&(suits[suit]), (Vector) {(float) x + 5, (float) y + 17}, M_PI);
  39. if (selected) {
  40. buffer->draw_rbox(x, y, x + 17, y + 23, Flip);
  41. }
  42. } else {
  43. RenderBack(x, y, selected, buffer);
  44. // buffer->draw(&backSide, (Vector) {(float) x + 8, (float) y + 11}, 0);
  45. }
  46. }
  47. void Card::RenderEmptyCard(uint8_t x, uint8_t y, RenderBuffer *buffer) {
  48. buffer->draw_rbox(x, y, x + 17, y + 23, Flip);
  49. buffer->draw_rbox_frame(x + 2, y + 2, x + 14, y + 20, Flip);
  50. }
  51. void Card::RenderBack(uint8_t x, uint8_t y, bool selected, RenderBuffer *buffer) {
  52. buffer->draw_rbox(x + 1, y + 1, x + 16, y + 22, White);
  53. buffer->draw_rbox_frame(x, y, x + 16, y + 22, Black);
  54. buffer->draw(&backSide, (Vector) {(float) x + 9, (float) y + 12}, 0);
  55. if (selected) {
  56. buffer->draw_rbox(x, y, x + 17, y + 23, Flip);
  57. }
  58. }