Files
Decked-Out-Defense/UI/CardSelectionBox/card_selection_box.gd

72 lines
2.4 KiB
GDScript

class_name CardSelectionBox
extends Control
@export var icon: TextureRect
@export var tags: VBoxContainer
@export var cost_label: Label
@export var lifetime_label: Label
@export var unselected_style_box: StyleBoxFlat
@export var selected_style_box: StyleBoxFlat
func set_card(card: Card) -> void:
icon.texture = card.icon
cost_label.text = str(card.rarity + 1)
lifetime_label.text = str(card.duration)
for i: int in tags.get_child_count():
tags.get_child(i).queue_free()
for tag: Data.CardTags in card.tags:
var tag_icon: TextureRect = icon.duplicate()
if tag == Data.CardTags.DAMAGE:
tag_icon.texture = load("res://Assets/Textures/damage_icon.png")
if tag == Data.CardTags.UTILITY:
tag_icon.texture = load("res://Assets/Textures/utility_icon.png")
if tag == Data.CardTags.TARGETS_FLYING:
tag_icon.modulate = Color.FIREBRICK
tag_icon.texture = load("res://Assets/Textures/flight_icon.png")
tags.add_child(tag_icon)
func set_key(slot: int) -> void:
match(slot):
0:
$Label.text = parse_action_tag("#Select 1st Card#")
1:
$Label.text = parse_action_tag("#Select 2nd Card#")
2:
$Label.text = parse_action_tag("#Select 3rd Card#")
3:
$Label.text = parse_action_tag("#Select 4th Card#")
44:
$Label.text = parse_action_tag("#Select 5th Card#")
func parse_action_tag(text: String) -> String:
var string_array: PackedStringArray = text.split("#")
var output: Array[String] = []
if string_array.size() > 1:
for i: int in InputMap.action_get_events(string_array[1]).size():
var event: InputEvent = InputMap.action_get_events(string_array[1])[i]
if InputMap.action_get_events(string_array[1]).size() > 1:
var last: bool = true if i == InputMap.action_get_events(string_array[1]).size() - 1 else false
var first: bool = true if i == 0 else false
if last:
output.append(" or ")
elif !first:
output.append(", ")
if event is InputEventKey:
output.append("[img=top,50]%s[/img]" % KeyIconMap.keys[str(event.physical_keycode)])
if event is InputEventMouseButton:
output.append("[img=top,50]%s[/img]" % KeyIconMap.mouse_buttons[str(event.button_index)])
string_array[1] = "".join(output)
text = "".join(string_array)
return text
func select() -> void:
$PanelContainer.add_theme_stylebox_override("panel", selected_style_box)
func deselect() -> void:
$PanelContainer.add_theme_stylebox_override("panel", unselected_style_box)