extends Control signal play_card(card: Card) signal rps_move(move: String) @export var player_id: int @export var deck: Container @export var monster_name_label: Label @export var monster_health_label: Label @export var incoming_damage_label: Label @export var energy_label: Label var match_manager: MatchManager func attach(match_manager: MatchManager): self.match_manager = match_manager match_manager.state_transitioned.connect(_on_update) func _on_update(transition): for child in deck.get_children(): child.queue_free() var player: MatchPlayer = match_manager.players.get(player_id) as MatchPlayer if not player: return energy_label.text = "Energy: " + str(player.energy) var monster = player.monster if monster: monster_name_label.text = "Name: " + monster.card.id monster_health_label.text = "Health: " + str(monster.health) incoming_damage_label.text = "Incoming Damage: " + str(monster.health_delta) if match_manager.phase in [Match.Phase.SUMMON, Match.Phase.SUPPORT_1, Match.Phase.SUPPORT_2]: for card: Card in player.hand: if match_manager.phase == Match.Phase.SUMMON and card is not MonsterCard: continue if (match_manager.phase == Match.Phase.SUPPORT_1 or match_manager.phase == Match.Phase.SUPPORT_2) and card is not SupportCard: continue if match_manager.phase == Match.Phase.SUPPORT_1 and card.type == "red": continue var btn = Button.new() btn.text = card.id btn.button_up.connect(func (): play_card.emit(card)) btn.disabled = ( card is MonsterCard and match_manager.phase != Match.Phase.SUMMON ) or ( card is SupportCard and match_manager.phase != Match.Phase.SUPPORT_1 and match_manager.phase != Match.Phase.SUPPORT_2 ) or ( card is SupportCard and card.type == "red" and match_manager.phase != Match.Phase.SUPPORT_2 ) deck.add_child(btn) if match_manager.phase == Match.Phase.RPS: for move in ["rock", "paper", "scissors"]: var btn = Button.new() btn.text = move btn.button_up.connect(func (): rps_move.emit(move)) deck.add_child(btn)