fix: resolve tab chars, typing, and parse errors in UI and game controller

This commit is contained in:
xiaji
2026-05-29 21:01:03 +08:00
parent 3573cc66b6
commit 3bed27076f
4 changed files with 38 additions and 36 deletions

View File

@@ -16,10 +16,12 @@ static func generate(hand: Array[Card], current_rank: int, config: RuleConfig) -
results.append(pass_play) results.append(pass_play)
if hand.is_empty(): if hand.is_empty():
return results return results
var sorted := hand.duplicate(false) var sorted: Array[Card] = []
for item: Card in hand:
sorted.append(item)
_sort(sorted) _sort(sorted)
var seen_ranks := {} var seen_ranks := {}
for c in sorted: for c: Card in sorted:
var rk := c.rank() var rk := c.rank()
if seen_ranks.get(rk, 0) < 4: if seen_ranks.get(rk, 0) < 4:
var ep := HandEvaluator.evaluate([c], current_rank, config) var ep := HandEvaluator.evaluate([c], current_rank, config)

View File

@@ -94,11 +94,11 @@ func _next_alive_player() -> void:
return return
func _trigger_ai(player_idx: int) -> void: func _trigger_ai(player_idx: int) -> void:
var ai := ai_players.get(player_idx) var ai: BaseAI = ai_players.get(player_idx) as BaseAI
if ai == null: if ai == null:
return return
var hand8: Array = game_state.get_hand(player_idx) var hand8: Array = game_state.get_hand(player_idx)
var decision := ai.decide(hand8, game_state.round.table, game_state.current_rank, game_state.rule_config) var decision: HandEvaluator.EvaluatedPlay = ai.decide(hand8, game_state.round.table, game_state.current_rank, game_state.rule_config)
if decision.type == -1: if decision.type == -1:
_apply_play(player_idx, decision) _apply_play(player_idx, decision)
else: else:

View File

@@ -1,8 +1,8 @@
class_name CardNode class_name CardNode
extends Control extends Control
signal card_clicked(card_node) signal card_clicked(card_node: CardNode)
signal card_double_clicked(card_node) signal card_double_clicked(card_node: CardNode)
var card_data: Card = null var card_data: Card = null
var is_selected: bool = false var is_selected: bool = false
@@ -11,28 +11,28 @@ var is_selected: bool = false
@onready var label: Label = $Label @onready var label: Label = $Label
func setup(card: Card) -> void: func setup(card: Card) -> void:
card_data = card card_data = card
update_display() update_display()
func update_display() -> void: func update_display() -> void:
if card_data == null: if card_data == null:
return return
var suits := ["S", "H", "C", "D", "SJ", "BJ"] var suits := ["S", "H", "C", "D", "SJ", "BJ"]
var ranks := ["", "", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "SJ", "BJ"] var ranks := ["", "", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "SJ", "BJ"]
var suit := card_data.suit() var suit := card_data.suit()
var rank := card_data.rank() var rank := card_data.rank()
if rank < ranks.size() and suit < suits.size(): if rank < ranks.size() and suit < suits.size():
label.text = "%s %s" % [suits[suit], ranks[rank]] label.text = "%s %s" % [suits[suit], ranks[rank]]
modulate = Color.WHITE if not is_selected else Color(1.2, 1.2, 0.8) modulate = Color.WHITE if not is_selected else Color(1.2, 1.2, 0.8)
func set_selected(sel: bool) -> void: func set_selected(sel: bool) -> void:
is_selected = sel is_selected = sel
update_display() update_display()
func _on_gui_input(event: InputEvent) -> void: func _on_gui_input(event: InputEvent) -> void:
if event is InputEventMouseButton: if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed: if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
if event.double_click: if event.double_click:
card_double_clicked.emit(self) card_double_clicked.emit(self)
else: else:
card_clicked.emit(self) card_clicked.emit(self)

View File

@@ -18,7 +18,7 @@ func update_hand(hand: Array) -> void:
card_nodes.clear() card_nodes.clear()
selected_cards.clear() selected_cards.clear()
for c in hand: for c in hand:
var node: CardNode = CARD_SCENE.instantiate() var node := CARD_SCENE.instantiate() as CardNode
node.setup(c) node.setup(c)
node.card_clicked.connect(_on_card_clicked) node.card_clicked.connect(_on_card_clicked)
node.card_double_clicked.connect(_on_card_double_clicked) node.card_double_clicked.connect(_on_card_double_clicked)
@@ -40,23 +40,23 @@ func _on_card_double_clicked(card_node: CardNode) -> void:
play_requested.emit() play_requested.emit()
func _on_hint_pressed() -> void: func _on_hint_pressed() -> void:
hint_requested.emit() hint_requested.emit()
func _on_play_pressed() -> void: func _on_play_pressed() -> void:
play_requested.emit() play_requested.emit()
func _on_pass_pressed() -> void: func _on_pass_pressed() -> void:
pass_requested.emit() pass_requested.emit()
func disable_input() -> void: func disable_input() -> void:
for cn in card_nodes: for cn in card_nodes:
cn.mouse_filter = Control.MOUSE_FILTER_IGNORE cn.mouse_filter = Control.MOUSE_FILTER_IGNORE
func enable_input() -> void: func enable_input() -> void:
for cn in card_nodes: for cn in card_nodes:
cn.mouse_filter = Control.MOUSE_FILTER_STOP cn.mouse_filter = Control.MOUSE_FILTER_STOP
func clear_selection() -> void: func clear_selection() -> void:
for cn in card_nodes: for cn in card_nodes:
cn.set_selected(false) cn.set_selected(false)
selected_cards.clear() selected_cards.clear()