#pragma once #include class RenderBuffer; enum CardValue { NONE = -1, TWO = 0, THREE = 1, FOUR = 2, FIVE = 3, SIX = 4, SEVEN = 5, EIGHT = 6, NINE = 7, TEN = 8, JACK = 9, QUEEN = 10, KING = 11, ACE = 12, }; struct Card { uint8_t suit = 0; CardValue value = NONE; bool exposed = false; Card(uint8_t s, uint8_t v) : suit(s), value((CardValue) v) {} void Render(uint8_t x, uint8_t y, bool selected, RenderBuffer *buffer, uint8_t size_limit = 22); static void RenderEmptyCard(uint8_t x, uint8_t y, RenderBuffer *buffer); static void RenderBack(uint8_t x, uint8_t y, bool selected, RenderBuffer *buffer, uint8_t size_limit= 22); static void TryRender(Card *c, uint8_t x, uint8_t y, bool selected, RenderBuffer *buffer, uint8_t size_limit= 22); bool CanPlaceFoundation(Card *where); bool CanPlaceColumn(Card *where); void print(); };