diff --git a/src/core/game_state.gd b/src/core/game_state.gd index 32deb1e..fadfaa3 100644 --- a/src/core/game_state.gd +++ b/src/core/game_state.gd @@ -44,8 +44,8 @@ func get_partner(player_idx: int) -> int: return t.teammate_of(player_idx) return -1 -func get_hand(player_idx: int) -> Array: - return player_hands[player_idx] +func get_hand(player_idx: int) -> Array[Card]: + return player_hands[player_idx] as Array[Card] func remove_cards_from_hand(player_idx: int, cards: Array) -> void: var hand: Array = player_hands[player_idx] diff --git a/src/core/move_generator.gd b/src/core/move_generator.gd index bc13cca..86d2abe 100644 --- a/src/core/move_generator.gd +++ b/src/core/move_generator.gd @@ -45,7 +45,10 @@ static func _gen_pairs(sorted: Array[Card], results: Array[HandEvaluator.Evaluat if not rank_counts.has(rk): rank_counts[rk] = [] as Array[Card] rank_counts[rk].append(c) for rk in rank_counts: - var cards: Array[Card] = rank_counts[rk] + var src: Array = rank_counts[rk] + var cards: Array[Card] = [] + for c in src: + cards.append(c) if cards.size() >= 2: var ep := HandEvaluator.evaluate(cards.slice(0, 2), current_rank, config) if ep != null: results.append(ep) @@ -57,7 +60,10 @@ static func _gen_triples(sorted: Array[Card], results: Array[HandEvaluator.Evalu if not rank_counts.has(rk): rank_counts[rk] = [] as Array[Card] rank_counts[rk].append(c) for rk in rank_counts: - var cards: Array[Card] = rank_counts[rk] + var src: Array = rank_counts[rk] + var cards: Array[Card] = [] + for c in src: + cards.append(c) if cards.size() >= 3: var ep := HandEvaluator.evaluate(cards.slice(0, 3), current_rank, config) if ep != null: results.append(ep) @@ -80,7 +86,10 @@ static func _gen_bombs(sorted: Array[Card], results: Array[HandEvaluator.Evaluat if not rank_counts.has(rk): rank_counts[rk] = [] as Array[Card] rank_counts[rk].append(c) for rk in rank_counts: - var cards: Array[Card] = rank_counts[rk] + var src: Array = rank_counts[rk] + var cards: Array[Card] = [] + for c in src: + cards.append(c) if cards.size() >= 4: var ep := HandEvaluator.evaluate(cards.slice(0, 4), current_rank, config) if ep != null: results.append(ep) @@ -120,8 +129,12 @@ static func _find_pairs(hand: Array[Card]) -> Array[Array]: if not rank_groups.has(rk): rank_groups[rk] = [] as Array[Card] rank_groups[rk].append(c) for rk in rank_groups: - if rank_groups[rk].size() >= 2: - result.append(rank_groups[rk].slice(0, 2) as Array[Card]) + var src: Array = rank_groups[rk] + if src.size() >= 2: + var pair: Array[Card] = [] + for c in src.slice(0, 2): + pair.append(c) + result.append(pair) return result static func _card_in(cards: Array[Card], target: Card) -> bool: