GBAlatro
A Demake of Balatro for the GBA
Loading...
Searching...
No Matches
card.h
1#ifndef CARD_H
2#define CARD_H
3
4#include "deck_types.h"
5#include "game/common_ui.h"
6#include "item.h"
7
8#include <maxmod.h>
9#include <tonc.h>
10
11#define MAX_CARDS 128 // Arbitrary high value so we don't have issues
12#define MAX_CARDS_ON_SCREEN (MAX_HAND_SIZE + 1) // Add room for the Deck sprite
13
14// Card suits
15#define DIAMONDS 0
16#define CLUBS 1
17#define HEARTS 2
18#define SPADES 3
19#define NUM_SUITS 4
20
21// Card ranks
22#define TWO 0
23#define THREE 1
24#define FOUR 2
25#define FIVE 3
26#define SIX 4
27#define SEVEN 5
28#define EIGHT 6
29#define NINE 7
30#define TEN 8
31#define JACK 9
32#define QUEEN 10
33#define KING 11
34#define ACE 12
35#define NUM_RANKS 13
36#define RANK_OFFSET 2 // Because the first rank is 2 and ranks start at 0
37
38#define IMPOSSIBLY_HIGH_CARD_VALUE 100
39
40// Card sprites
41#define DEFAULT_HIGH_CONTRAST false
42#define DEFAULT_MORE_READABLE false
43
44// Card types
45typedef struct Card
46{
47 u8 suit;
48 u8 rank;
49} Card;
50
51typedef struct CardObject
52{
53 Item; // First member struct inheritance
54 Card* card;
55 bool selected;
57
58void card_init(void);
59
60// Card sprites accessibility functions
61void set_cards_high_contrast(bool enable);
62void set_cards_more_readable(bool enable);
63bool get_cards_high_contrast(void);
64bool get_cards_more_readable(void);
65
66// Card methods
67Card* card_new(u8 suit, u8 rank);
68void card_destroy(Card** card);
69u8 card_get_value(Card* card);
70
71// CardObject methods
72CardObject* card_object_new(Card* card);
73void card_object_destroy(CardObject** card_object);
74void card_object_set_sprite(CardObject* card_object, s16 layer);
75void card_object_set_sprite_face_down(CardObject* card_object, enum DeckType deck, s16 layer);
76void card_object_shake(CardObject* card_object, mm_word sound_id);
77
78void card_object_set_selected(CardObject* card_object, bool selected);
79bool card_object_is_selected(CardObject* card_object);
80Sprite* card_object_get_sprite(CardObject* card_object);
81
82int card_object_get_buy_price(Item* card_object);
83void card_object_dispose(Item** card_object);
84
85#endif // CARD_H
Common functions to render UI elements.
Functions related to the different types of Decks.
The core structure for items in the shop and inventory. Provides a common API for the shop and invent...
Definition card.h:46
A generic interface for all items that can appear in the shop or be in the inventory....
Definition item.h:83
Sprite struct for GBA hardware specifics.
Definition sprite.h:54