fix: resolve GDScript parse errors (pass keyword, array type inference, tabs)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# src/core/hand_evaluator.gd
|
||||
# Pure functions — zero Godot dependency
|
||||
# Pure functions <EFBFBD>?zero Godot dependency
|
||||
# Evaluate: [Card] + current_rank + RuleConfig -> EvaluatedPlay | null
|
||||
|
||||
class_name HandEvaluator
|
||||
@@ -26,25 +26,25 @@ static func evaluate(cards: Array[Card], current_rank: int, config: RuleConfig)
|
||||
_sort_by_rank_and_suit(sorted)
|
||||
var n := sorted.size()
|
||||
if n == 1:
|
||||
return _make_result(_C.TYPE_SINGLE, sorted[0].rank(), false, sorted)
|
||||
return _make_result(_C.TYPE_SINGLE, sorted[0].rank(), false, sorted)
|
||||
|
||||
var wilds: Array[Card] = []
|
||||
var reals: Array[Card] = []
|
||||
for c in sorted:
|
||||
if c.is_heart() and c.rank() == current_rank:
|
||||
wilds.append(c)
|
||||
else:
|
||||
reals.append(c)
|
||||
var has_wild := wilds.size() > 0
|
||||
if n == 2:
|
||||
return _eval_two(reals, wilds, has_wild)
|
||||
if n == 3:
|
||||
return _eval_three(reals, wilds, has_wild)
|
||||
if n == 4:
|
||||
var result := _eval_four(reals, wilds, has_wild, current_rank, config)
|
||||
if result != null:
|
||||
return result
|
||||
return _eval_multi(reals, wilds, has_wild, current_rank, n, config)
|
||||
var wilds: Array[Card] = []
|
||||
var reals: Array[Card] = []
|
||||
for c in sorted:
|
||||
if c.is_heart() and c.rank() == current_rank:
|
||||
wilds.append(c)
|
||||
else:
|
||||
reals.append(c)
|
||||
var has_wild := wilds.size() > 0
|
||||
if n == 2:
|
||||
return _eval_two(reals, wilds, has_wild)
|
||||
if n == 3:
|
||||
return _eval_three(reals, wilds, has_wild)
|
||||
if n == 4:
|
||||
var result := _eval_four(reals, wilds, has_wild, current_rank, config)
|
||||
if result != null:
|
||||
return result
|
||||
return _eval_multi(reals, wilds, has_wild, current_rank, n, config)
|
||||
|
||||
static func _make_result(type: int, primary_rank: int, is_pure: bool, cards1: Array[Card]) -> EvaluatedPlay:
|
||||
var r := EvaluatedPlay.new()
|
||||
@@ -136,18 +136,22 @@ static func _eval_triple_plus_two(reals: Array[Card], wilds: Array[Card]) -> Eva
|
||||
|
||||
static func _eval_straight(reals: Array[Card], wilds: Array[Card], n: int, config: RuleConfig) -> EvaluatedPlay:
|
||||
if reals.size() + wilds.size() != n: return null
|
||||
var sorted := reals.duplicate(false)
|
||||
var sorted: Array[Card] = []
|
||||
for rc in reals: sorted.append(rc)
|
||||
_sort_by_rank_and_suit(sorted)
|
||||
var w := wilds.size()
|
||||
var gaps: Array[int] = []
|
||||
for i in range(sorted.size() - 1):
|
||||
var delta := sorted[i+1].rank() - sorted[i].rank()
|
||||
var card_a: Card = sorted[i]
|
||||
var card_b: Card = sorted[i+1]
|
||||
var delta: int = card_b.rank() - card_a.rank()
|
||||
if delta > 1:
|
||||
gaps.append(delta - 1)
|
||||
var total_gaps := 0
|
||||
for g in gaps: total_gaps += g
|
||||
if total_gaps == w or (total_gaps <= w and w >= total_gaps):
|
||||
var max_rank := sorted[sorted.size()-1].rank()
|
||||
var last_card: Card = sorted[sorted.size()-1]
|
||||
var max_rank: int = last_card.rank()
|
||||
if not config.straight_extends_to_ace and max_rank > 14: return null
|
||||
return _make_result(_C.TYPE_STRAIGHT, max_rank, w == 0, reals + wilds)
|
||||
return null
|
||||
|
||||
Reference in New Issue
Block a user