Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions scenes/game/upgrades_card.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,27 @@ grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_oaoa1")

[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -48.0
offset_bottom = 27.0
grow_horizontal = 0
theme_override_constants/margin_left = 2
theme_override_constants/margin_top = 6
theme_override_constants/margin_right = 6
theme_override_constants/margin_bottom = 2

[node name="UpgradeInfoLabel" type="Label" parent="MarginContainer"]
layout_mode = 2
size_flags_horizontal = 4
theme_override_colors/font_color = Color(0.27450982, 1, 0, 1)
text = "New!"
horizontal_alignment = 2
vertical_alignment = 1

[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
Expand Down
22 changes: 22 additions & 0 deletions scripts/game/upgrades_card.gd
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ extends Panel
@export var title := ""
@export var icon: Texture2D

@onready var upgrade_info_label: Label = $MarginContainer/UpgradeInfoLabel
@onready var texture_rect: TextureRect = $VBoxContainer/MarginContainer/TextureRect
@onready var label: Label = $VBoxContainer/MarginContainer2/Label

Expand Down Expand Up @@ -37,6 +38,7 @@ func _refresh() -> void:
label.text = title if title != "" else _set_name_for(upgrade)
if is_instance_valid(texture_rect):
texture_rect.texture = _set_image_for(upgrade)
_refresh_badge()


## Retorna o nome descritivo do upgrade conforme o tipo especificado.
Expand Down Expand Up @@ -72,3 +74,23 @@ func _gui_input(event: InputEvent) -> void:
if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT:
PlayerUpgrades.apply_upgrade(upgrade)
chosen.emit(upgrade)


## Atualiza o badge informativo da carta de upgrade.
func _refresh_badge() -> void:
if not is_instance_valid(upgrade_info_label):
return
if not get_tree().root.has_node("PlayerUpgrades"):
upgrade_info_label.visible = false
return
var current_level := PlayerUpgrades.get_level_for_track(upgrade)
upgrade_info_label.visible = true
if current_level >= PlayerUpgrades.MAX_LEVEL:
upgrade_info_label.text = "MAX!"
upgrade_info_label.add_theme_color_override("font_color", Color("#FF1E1E"))
elif current_level <= 0:
upgrade_info_label.text = "New!"
upgrade_info_label.add_theme_color_override("font_color", Color("#00FF4A"))
else:
upgrade_info_label.text = "Level UP!"
upgrade_info_label.add_theme_color_override("font_color", Color("#FF7A00"))
21 changes: 21 additions & 0 deletions scripts/player/player_upgrades.gd
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,24 @@ func reset() -> void:
passive_shield_level = 0
passive_speed_level = 0
stats_updated.emit()


## Retorna o nível atual (0..MAX_LEVEL) da trilha de upgrade informada.
## permitir que a UI (cartas/badges) e outras regras do jogo
## consultem rapidamente se um upgrade é novo, está evoluindo ou já atingiu o máximo.
func get_level_for_track(track: int) -> int:
match track:
UpgradeTrack.ACTIVE_WEAPON_1:
return active_weapon_1_level
UpgradeTrack.ACTIVE_WEAPON_2:
return active_weapon_2_level
UpgradeTrack.ACTIVE_WEAPON_3:
return active_weapon_3_level
UpgradeTrack.ACTIVE_WEAPON_4:
return active_weapon_4_level
UpgradeTrack.PASSIVE_SHIELD:
return passive_shield_level
UpgradeTrack.PASSIVE_SPEED:
return passive_speed_level
_:
return 0