fix(core): type get_hand as Array[Card] and use for-loop copy for dict reads
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user