Add a "is_card_face" function to take into account if Pareidolia is present

This commit is contained in:
MonteCrysto
2025-09-30 22:47:00 +02:00
parent 74739d87ed
commit c781ee9666
4 changed files with 34 additions and 16 deletions
+3
View File
@@ -86,6 +86,7 @@ typedef struct List List;
// Utility functions for other files // Utility functions for other files
typedef struct CardObject CardObject; // forward declaration, actually declared in card.h typedef struct CardObject CardObject; // forward declaration, actually declared in card.h
typedef struct Card Card;
typedef struct JokerObject JokerObject; typedef struct JokerObject JokerObject;
CardObject** get_hand_array(void); CardObject** get_hand_array(void);
int get_hand_top(void); int get_hand_top(void);
@@ -93,6 +94,8 @@ int hand_get_size(void);
CardObject** get_played_array(void); CardObject** get_played_array(void);
int get_played_top(void); int get_played_top(void);
List* get_jokers(void); List* get_jokers(void);
bool is_joker_present(int joker_id);
bool card_is_face(Card *card);
int get_deck_top(void); int get_deck_top(void);
int get_num_discards_remaining(void); int get_num_discards_remaining(void);
+1
View File
@@ -36,6 +36,7 @@
#define DEFAULT_JOKER_ID 0 #define DEFAULT_JOKER_ID 0
#define GREEDY_JOKER_ID 1 // This is just an example to show the patern of making joker IDs #define GREEDY_JOKER_ID 1 // This is just an example to show the patern of making joker IDs
#define JOKER_STENCIL_ID 16 #define JOKER_STENCIL_ID 16
#define PAREIDOLIA_JOKER_ID 41
typedef struct typedef struct
{ {
+23
View File
@@ -161,6 +161,18 @@ List *get_jokers(void) {
return jokers; return jokers;
} }
bool is_joker_present(int joker_id) {
for (int k = 0; k < list_get_size(jokers); k++)
{
JokerObject *joker = list_get(jokers, k);
if (joker->joker->id == joker_id)
{
return true;
}
}
return false;
}
void add_joker(JokerObject *joker_object) void add_joker(JokerObject *joker_object)
{ {
list_append(jokers, joker_object); list_append(jokers, joker_object);
@@ -423,6 +435,17 @@ enum HandType hand_get_type()
return res_hand_type; // should be HIGH_CARD return res_hand_type; // should be HIGH_CARD
} }
// Returns true if the card is *considered* a face card
bool card_is_face(Card *card) {
// Card is a face card, or Pareidolia is present
return (
card->rank == JACK ||
card->rank == QUEEN ||
card->rank == KING ||
is_joker_present(PAREIDOLIA_JOKER_ID)
);
}
/* Copies the appropriate item into the top left panel (blind/shop icon) /* Copies the appropriate item into the top left panel (blind/shop icon)
* from where it was put outside the screenview * from where it was put outside the screenview
*/ */
+7 -16
View File
@@ -358,12 +358,9 @@ static JokerEffect business_card_joker_effect(Joker *joker, Card *scored_card) {
if (scored_card == NULL) if (scored_card == NULL)
return effect; return effect;
switch (scored_card->rank) { if (card_is_face(scored_card)) {
case KING: case QUEEN: case JACK: if (random() % 2 == 0)
if (random() % 2 == 0) effect.money = 2;
effect.money = 2;
default:
break;
} }
return effect; return effect;
@@ -387,11 +384,8 @@ static JokerEffect scary_face_joker_effect(Joker *joker, Card *scored_card) {
if (scored_card == NULL) if (scored_card == NULL)
return effect; return effect;
switch (scored_card->rank) { if (card_is_face(scored_card)) {
case KING: case QUEEN: case JACK: effect.chips = 30;
effect.chips = 30;
default:
break;
} }
return effect; return effect;
@@ -426,11 +420,8 @@ static JokerEffect smiley_face_joker_effect(Joker *joker, Card *scored_card) {
if (scored_card == NULL) if (scored_card == NULL)
return effect; return effect;
switch (scored_card->rank) { if (card_is_face(scored_card)) {
case KING: case QUEEN: case JACK: effect.mult = 5;
effect.mult = 5;
default:
break;
} }
return effect; return effect;