mirror of
https://github.com/cellos51/balatro-gba.git
synced 2026-09-07 08:26:00 -05:00
Some checks failed
Build and Deploy Doxygen Docs / docs (push) Has been cancelled
* Updated all static variables to have the s_ prefix and constants to upper case * Renamed missed sneaky functions in round.c (+ clang-format...) * Renamed a few more missed constants * Updated rng_update() documentation * Apply suggestions from Copilot's code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Added missed suggestion * Updated rng_update() comment --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
301 lines
7.2 KiB
C
301 lines
7.2 KiB
C
/**
|
|
* @file deck_types.c
|
|
*
|
|
* @brief Implementation of functions related to the different types of Decks.
|
|
*/
|
|
#include "deck_types.h"
|
|
|
|
#include "game.h"
|
|
|
|
#include <tonc.h>
|
|
|
|
#define TTE_COLOR_TEXT_FORMAT "#{cx:0x%X000}%s"
|
|
|
|
/**
|
|
* @brief List of DeckType names, all formatted to be centered in a string of 13 characters.
|
|
*/
|
|
static const char DECK_NAMES[DECK_TYPE_MAX][DECK_NAME_LENGTH] = {
|
|
" Red Deck ",
|
|
" Blue Deck ",
|
|
" Yellow Deck ",
|
|
" Green Deck ",
|
|
" Black Deck ",
|
|
"Painted Deck "
|
|
};
|
|
|
|
static void print_desc_red_deck(BG_POINT pos);
|
|
static void print_desc_blue_deck(BG_POINT pos);
|
|
static void print_desc_yellow_deck(BG_POINT pos);
|
|
static void print_desc_green_deck(BG_POINT pos);
|
|
static void print_desc_black_deck(BG_POINT pos);
|
|
static void print_desc_painted_deck(BG_POINT pos);
|
|
|
|
typedef void (*PrintDescCallback)(BG_POINT);
|
|
static const PrintDescCallback deck_description_functions[DECK_TYPE_MAX] = {
|
|
print_desc_red_deck,
|
|
print_desc_blue_deck,
|
|
print_desc_yellow_deck,
|
|
print_desc_green_deck,
|
|
print_desc_black_deck,
|
|
print_desc_painted_deck
|
|
};
|
|
|
|
void print_deck_name(enum DeckType deck, BG_POINT pos)
|
|
{
|
|
tte_printf("#{P:%d,%d; cx:0x%X000}%s", pos.x, pos.y, TTE_WHITE_PB, DECK_NAMES[deck]);
|
|
}
|
|
|
|
void print_deck_description(enum DeckType deck, BG_POINT pos)
|
|
{
|
|
if (deck_description_functions[deck] == NULL)
|
|
return;
|
|
|
|
deck_description_functions[deck](pos);
|
|
}
|
|
|
|
/**
|
|
* @brief Print an empty string of 13 characters long at given coordinates.
|
|
* Reduces boilerplate in deck descriptions functions.
|
|
*
|
|
* @param pos_x
|
|
* @param pos_y
|
|
*/
|
|
static inline void print_empty_desc_line(int pos_x, int pos_y)
|
|
{
|
|
tte_printf("#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT, pos_x, pos_y, TTE_BLACK_PB, " ");
|
|
}
|
|
|
|
/**
|
|
* @brief Print the decription of the Red Deck
|
|
* ```
|
|
* " "
|
|
* " +1 discard "
|
|
* " every Round "
|
|
* " "
|
|
* " "
|
|
* ```
|
|
* @param pos position of the rectagle to print the description to
|
|
*/
|
|
static void print_desc_red_deck(BG_POINT pos)
|
|
{
|
|
print_empty_desc_line(pos.x, pos.y);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + TILE_SIZE,
|
|
TTE_RED_PB,
|
|
" +1 ",
|
|
TTE_BLACK_PB,
|
|
"discard "
|
|
);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + 2 * TILE_SIZE,
|
|
TTE_BLACK_PB,
|
|
" every Round "
|
|
);
|
|
print_empty_desc_line(pos.x, pos.y + 3 * TILE_SIZE);
|
|
print_empty_desc_line(pos.x, pos.y + 4 * TILE_SIZE);
|
|
}
|
|
|
|
/**
|
|
* @brief Print the decription of the Blue Deck
|
|
* ```
|
|
* " "
|
|
* " +1 hand "
|
|
* " every Round "
|
|
* " "
|
|
* " "
|
|
* ```
|
|
* @param pos position of the rectagle to print the description to
|
|
*/
|
|
static void print_desc_blue_deck(BG_POINT pos)
|
|
{
|
|
print_empty_desc_line(pos.x, pos.y);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + TILE_SIZE,
|
|
TTE_BLUE_PB,
|
|
" +1 ",
|
|
TTE_BLACK_PB,
|
|
"hand "
|
|
);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + 2 * TILE_SIZE,
|
|
TTE_BLACK_PB,
|
|
" every Round "
|
|
);
|
|
print_empty_desc_line(pos.x, pos.y + 3 * TILE_SIZE);
|
|
print_empty_desc_line(pos.x, pos.y + 4 * TILE_SIZE);
|
|
}
|
|
|
|
/**
|
|
* @brief Print the decription of the Yellow Deck
|
|
* ```
|
|
* " "
|
|
* " Start with "
|
|
* "an extra $10 "
|
|
* " "
|
|
* " "
|
|
* ```
|
|
* @param pos position of the rectagle to print the description to
|
|
*/
|
|
static void print_desc_yellow_deck(BG_POINT pos)
|
|
{
|
|
print_empty_desc_line(pos.x, pos.y);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + TILE_SIZE,
|
|
TTE_BLACK_PB,
|
|
" Start with "
|
|
);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + 2 * TILE_SIZE,
|
|
TTE_BLACK_PB,
|
|
"an extra",
|
|
TTE_YELLOW_PB,
|
|
" $10 "
|
|
);
|
|
print_empty_desc_line(pos.x, pos.y + 3 * TILE_SIZE);
|
|
print_empty_desc_line(pos.x, pos.y + 4 * TILE_SIZE);
|
|
}
|
|
|
|
/**
|
|
* @brief Print the decription of the Green Deck
|
|
* ```
|
|
* "End of Round:"
|
|
* " "
|
|
* "-$2 per Hand "
|
|
* "-$2 per Disc."
|
|
* "-No Interest "
|
|
* ```
|
|
* @param pos position of the rectagle to print the description to
|
|
*/
|
|
static void print_desc_green_deck(BG_POINT pos)
|
|
{
|
|
tte_printf("#{P:%d,%d; cx:0x%X000}%s", pos.x, pos.y, TTE_BLACK_PB, "End of Round:");
|
|
print_empty_desc_line(pos.x, pos.y + TILE_SIZE);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT
|
|
TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + 2 * TILE_SIZE,
|
|
TTE_BLACK_PB,
|
|
"-",
|
|
TTE_YELLOW_PB,
|
|
"$2 ",
|
|
TTE_BLACK_PB,
|
|
"per ",
|
|
TTE_RED_PB,
|
|
"Hand "
|
|
);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT
|
|
TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + 3 * TILE_SIZE,
|
|
TTE_BLACK_PB,
|
|
"-",
|
|
TTE_YELLOW_PB,
|
|
"$1 ",
|
|
TTE_BLACK_PB,
|
|
"per ",
|
|
TTE_BLUE_PB,
|
|
"Disc."
|
|
);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + 4 * TILE_SIZE,
|
|
TTE_BLACK_PB,
|
|
"-No ",
|
|
TTE_YELLOW_PB,
|
|
"Interest "
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @brief Print the decription of the Black Deck
|
|
* ```
|
|
* "+1 Joker slot"
|
|
* " "
|
|
* " -1 hand "
|
|
* " every Round "
|
|
* " "
|
|
* ```
|
|
* @param pos position of the rectagle to print the description to
|
|
*/
|
|
static void print_desc_black_deck(BG_POINT pos)
|
|
{
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y,
|
|
TTE_YELLOW_PB,
|
|
"+1 ",
|
|
TTE_BLACK_PB,
|
|
"Joker slot"
|
|
);
|
|
print_empty_desc_line(pos.x, pos.y + TILE_SIZE);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + 2 * TILE_SIZE,
|
|
TTE_BLUE_PB,
|
|
" -1 ",
|
|
TTE_BLACK_PB,
|
|
"hand "
|
|
);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + 3 * TILE_SIZE,
|
|
TTE_BLACK_PB,
|
|
" every Round "
|
|
);
|
|
print_empty_desc_line(pos.x, pos.y + 4 * TILE_SIZE);
|
|
}
|
|
|
|
/**
|
|
* @brief Print the decription of the Painted Deck
|
|
* ```
|
|
* " "
|
|
* "+2 Hand size "
|
|
* "-1 Joker slot"
|
|
* " "
|
|
* " "
|
|
* ```
|
|
* @param pos position of the rectagle to print the description to
|
|
*/
|
|
static void print_desc_painted_deck(BG_POINT pos)
|
|
{
|
|
print_empty_desc_line(pos.x, pos.y);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + TILE_SIZE,
|
|
TTE_YELLOW_PB,
|
|
"+2 ",
|
|
TTE_BLACK_PB,
|
|
"Hand size "
|
|
);
|
|
tte_printf(
|
|
"#{P:%d,%d}" TTE_COLOR_TEXT_FORMAT TTE_COLOR_TEXT_FORMAT,
|
|
pos.x,
|
|
pos.y + 2 * TILE_SIZE,
|
|
TTE_RED_PB,
|
|
"-1 ",
|
|
TTE_BLACK_PB,
|
|
"Joker slot"
|
|
);
|
|
print_empty_desc_line(pos.x, pos.y + 3 * TILE_SIZE);
|
|
print_empty_desc_line(pos.x, pos.y + 4 * TILE_SIZE);
|
|
}
|