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