fix(core): type get_hand as Array[Card] and use for-loop copy for dict reads

This commit is contained in:
xiaji
2026-06-02 21:57:47 +08:00
parent 85d2f63466
commit ae89194ecd
2 changed files with 20 additions and 7 deletions

View File

@@ -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]

View File

@@ -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: