diff --git a/src/core/move_generator.gd b/src/core/move_generator.gd index eea2fcb..381ab07 100644 --- a/src/core/move_generator.gd +++ b/src/core/move_generator.gd @@ -16,10 +16,12 @@ static func generate(hand: Array[Card], current_rank: int, config: RuleConfig) - results.append(pass_play) if hand.is_empty(): return results - var sorted := hand.duplicate(false) + var sorted: Array[Card] = [] + for item: Card in hand: + sorted.append(item) _sort(sorted) var seen_ranks := {} - for c in sorted: + for c: Card in sorted: var rk := c.rank() if seen_ranks.get(rk, 0) < 4: var ep := HandEvaluator.evaluate([c], current_rank, config) diff --git a/src/game/game_controller.gd b/src/game/game_controller.gd index 1faf97e..7d637d5 100644 --- a/src/game/game_controller.gd +++ b/src/game/game_controller.gd @@ -94,11 +94,11 @@ func _next_alive_player() -> void: return 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: return 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: _apply_play(player_idx, decision) else: diff --git a/src/ui/components/card_node.gd b/src/ui/components/card_node.gd index 4bcbad4..6039156 100644 --- a/src/ui/components/card_node.gd +++ b/src/ui/components/card_node.gd @@ -1,8 +1,8 @@ class_name CardNode extends Control -signal card_clicked(card_node) -signal card_double_clicked(card_node) +signal card_clicked(card_node: CardNode) +signal card_double_clicked(card_node: CardNode) var card_data: Card = null var is_selected: bool = false @@ -11,28 +11,28 @@ var is_selected: bool = false @onready var label: Label = $Label func setup(card: Card) -> void: - card_data = card - update_display() + card_data = card + update_display() func update_display() -> void: - if card_data == null: - return - 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 suit := card_data.suit() - var rank := card_data.rank() - if rank < ranks.size() and suit < suits.size(): - label.text = "%s %s" % [suits[suit], ranks[rank]] - modulate = Color.WHITE if not is_selected else Color(1.2, 1.2, 0.8) + if card_data == null: + return + 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 suit := card_data.suit() + var rank := card_data.rank() + if rank < ranks.size() and suit < suits.size(): + label.text = "%s %s" % [suits[suit], ranks[rank]] + modulate = Color.WHITE if not is_selected else Color(1.2, 1.2, 0.8) func set_selected(sel: bool) -> void: - is_selected = sel - update_display() + is_selected = sel + update_display() func _on_gui_input(event: InputEvent) -> void: - if event is InputEventMouseButton: - if event.button_index == MOUSE_BUTTON_LEFT and event.pressed: - if event.double_click: - card_double_clicked.emit(self) - else: - card_clicked.emit(self) + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + if event.double_click: + card_double_clicked.emit(self) + else: + card_clicked.emit(self) diff --git a/src/ui/components/hand_area.gd b/src/ui/components/hand_area.gd index 61848be..4f3fce3 100644 --- a/src/ui/components/hand_area.gd +++ b/src/ui/components/hand_area.gd @@ -18,7 +18,7 @@ func update_hand(hand: Array) -> void: card_nodes.clear() selected_cards.clear() for c in hand: - var node: CardNode = CARD_SCENE.instantiate() + var node := CARD_SCENE.instantiate() as CardNode node.setup(c) node.card_clicked.connect(_on_card_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() func _on_hint_pressed() -> void: - hint_requested.emit() + hint_requested.emit() func _on_play_pressed() -> void: - play_requested.emit() + play_requested.emit() func _on_pass_pressed() -> void: - pass_requested.emit() + pass_requested.emit() func disable_input() -> void: - for cn in card_nodes: - cn.mouse_filter = Control.MOUSE_FILTER_IGNORE + for cn in card_nodes: + cn.mouse_filter = Control.MOUSE_FILTER_IGNORE func enable_input() -> void: - for cn in card_nodes: - cn.mouse_filter = Control.MOUSE_FILTER_STOP + for cn in card_nodes: + cn.mouse_filter = Control.MOUSE_FILTER_STOP func clear_selection() -> void: - for cn in card_nodes: - cn.set_selected(false) - selected_cards.clear() + for cn in card_nodes: + cn.set_selected(false) + selected_cards.clear()