55 lines
2 KiB
GDScript
55 lines
2 KiB
GDScript
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.damage_incoming)
|
|
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)
|
|
|