fix: resolve GDScript parse errors (pass keyword, array type inference, tabs)

This commit is contained in:
xiaji
2026-05-29 10:03:55 +08:00
parent 09953c98f7
commit c1350a3d7b
838 changed files with 262 additions and 76933 deletions

View File

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