added winning determination algorithm (not entirely working yet)

This commit is contained in:
2025-07-15 14:42:06 +02:00
parent ecfe5955b7
commit 231e861416
9 changed files with 180 additions and 11 deletions
+45 -1
View File
@@ -33,7 +33,51 @@ func get_card_texture(card_id: int, style: CardStyle = CardStyle.STICKMAN) -> Te
CardStyle.STICKMAN:
style_name = "stickman"
return load("res://cards/textures/" + style_name + "/" + _get_card_name(card_id) + ".webp")
func get_winning_card(card_ids: Array[int], trump: int) -> int:
if card_ids.has(56) or card_ids.has(57) or card_ids.has(58) or card_ids.has(59):
# cards contain magician
for card_id in card_ids:
if full_deck[card_id].card_type == Card.CardType.MAGICIAN:
return card_id
return -1 # should not happen
elif not trump == -1:
# trump exists, determine winner from this
var largest_trump_card_id: int = -1
var trump_color: Card.CardColor = full_deck[trump].color
for card_id in card_ids:
if full_deck[card_id].color == trump_color and card_id > largest_trump_card_id:
largest_trump_card_id = card_id
if not largest_trump_card_id == -1:
return largest_trump_card_id
# no trump played; determine from highest played card
# TODO check for white cards here!
return _get_largest_non_trump_card(card_ids)
else:
# no trump exists
return _get_largest_non_trump_card(card_ids)
func _get_largest_non_trump_card(card_ids: Array[int]) -> int:
var largest_card_id: int = -1
var first_color: Card.CardColor = _get_first_color_card(card_ids)
if first_color == Card.CardColor.WHITE:
return card_ids[0] # first one wins if all played cards are white
else:
for card_id in card_ids:
if full_deck[card_id].color == first_color and card_id > largest_card_id:
largest_card_id = card_id
return largest_card_id
## Returns the color of the first non-white card played.
## Returns WHITE if all cards played are white.
func _get_first_color_card(card_ids: Array[int]) -> Card.CardColor:
for card_id in card_ids:
if not full_deck[card_id].color == Card.CardColor.WHITE:
return full_deck[card_id].color
return Card.CardColor.WHITE
func _get_card_name(card_id: int) -> String:
var color: String
var suffix: String