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 t.teammate_of(player_idx)
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
func get_hand(player_idx: int) -> Array:
|
func get_hand(player_idx: int) -> Array[Card]:
|
||||||
return player_hands[player_idx]
|
return player_hands[player_idx] as Array[Card]
|
||||||
|
|
||||||
func remove_cards_from_hand(player_idx: int, cards: Array) -> void:
|
func remove_cards_from_hand(player_idx: int, cards: Array) -> void:
|
||||||
var hand: Array = player_hands[player_idx]
|
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]
|
if not rank_counts.has(rk): rank_counts[rk] = [] as Array[Card]
|
||||||
rank_counts[rk].append(c)
|
rank_counts[rk].append(c)
|
||||||
for rk in rank_counts:
|
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:
|
if cards.size() >= 2:
|
||||||
var ep := HandEvaluator.evaluate(cards.slice(0, 2), current_rank, config)
|
var ep := HandEvaluator.evaluate(cards.slice(0, 2), current_rank, config)
|
||||||
if ep != null: results.append(ep)
|
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]
|
if not rank_counts.has(rk): rank_counts[rk] = [] as Array[Card]
|
||||||
rank_counts[rk].append(c)
|
rank_counts[rk].append(c)
|
||||||
for rk in rank_counts:
|
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:
|
if cards.size() >= 3:
|
||||||
var ep := HandEvaluator.evaluate(cards.slice(0, 3), current_rank, config)
|
var ep := HandEvaluator.evaluate(cards.slice(0, 3), current_rank, config)
|
||||||
if ep != null: results.append(ep)
|
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]
|
if not rank_counts.has(rk): rank_counts[rk] = [] as Array[Card]
|
||||||
rank_counts[rk].append(c)
|
rank_counts[rk].append(c)
|
||||||
for rk in rank_counts:
|
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:
|
if cards.size() >= 4:
|
||||||
var ep := HandEvaluator.evaluate(cards.slice(0, 4), current_rank, config)
|
var ep := HandEvaluator.evaluate(cards.slice(0, 4), current_rank, config)
|
||||||
if ep != null: results.append(ep)
|
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]
|
if not rank_groups.has(rk): rank_groups[rk] = [] as Array[Card]
|
||||||
rank_groups[rk].append(c)
|
rank_groups[rk].append(c)
|
||||||
for rk in rank_groups:
|
for rk in rank_groups:
|
||||||
if rank_groups[rk].size() >= 2:
|
var src: Array = rank_groups[rk]
|
||||||
result.append(rank_groups[rk].slice(0, 2) as Array[Card])
|
if src.size() >= 2:
|
||||||
|
var pair: Array[Card] = []
|
||||||
|
for c in src.slice(0, 2):
|
||||||
|
pair.append(c)
|
||||||
|
result.append(pair)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
static func _card_in(cards: Array[Card], target: Card) -> bool:
|
static func _card_in(cards: Array[Card], target: Card) -> bool:
|
||||||
|
|||||||
Reference in New Issue
Block a user