Name popups *Popup and give scripts, scenes and classes matching names
Every popup is now called *Popup instead of *Window in its file, root node, node name, class and variable, and PopupWindow becomes BasePopup. Player is PlayerRow, SongListObject is SongRow and Character is CharacterCard. Script files are snake_case and scene files PascalCase, each matching its class or root node, and LightGrayTheme.tres is light_gray_theme.tres.
This commit is contained in:
1 parent
b7d67b573e
commit
390da577d7
78 files changed
+281
-258
No files matched your search
@@ -0,0 +1,59 @@
|
||||
class_name WinnerPopup
|
||||
extends BasePopup
|
||||
|
||||
@onready
|
||||
var winner_panel: Panel = %WinnerPanel
|
||||
|
||||
@onready
|
||||
var winner_picture: TextureRect = %WinnerPicture
|
||||
|
||||
@onready
|
||||
var winner_label: Label = %WinnerLabel
|
||||
|
||||
@onready
|
||||
var players_list: VBoxContainer = %PlayersList
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
visible = false
|
||||
|
||||
|
||||
func show_winner(winner: PlayerObject) -> void:
|
||||
visible = true
|
||||
# Set winner info
|
||||
winner_label.text = winner.player_name + " won with " + str(winner.player_score) + \
|
||||
" points!!"
|
||||
winner_picture.texture = winner.character
|
||||
# The "no character" placeholder is pixel art, which blurs when scaled up smoothly
|
||||
if winner.character.resource_path == PlayerObject.NO_CHARACTER_PATH:
|
||||
winner_picture.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
|
||||
else:
|
||||
winner_picture.texture_filter = CanvasItem.TEXTURE_FILTER_LINEAR
|
||||
winner_picture.custom_minimum_size = Vector2(480, 200)
|
||||
winner_picture.expand_mode = TextureRect.EXPAND_FIT_WIDTH_PROPORTIONAL
|
||||
winner_picture.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
||||
|
||||
# Clear previous player list entries
|
||||
for child: Node in players_list.get_children():
|
||||
child.queue_free()
|
||||
|
||||
# Sort players by score (descending) and add to list
|
||||
var sorted_players: Array = Settings.player_array.duplicate()
|
||||
sorted_players.sort_custom(
|
||||
func(a: PlayerObject, b: PlayerObject) -> bool:
|
||||
return a.player_score > b.player_score
|
||||
)
|
||||
|
||||
var placing: int = 2
|
||||
for player: PlayerObject in sorted_players:
|
||||
if player == winner:
|
||||
continue # Skip the winner, already shown above
|
||||
var label: Label = Label.new()
|
||||
label.text = str(placing) + ". " + player.player_name + " - " + \
|
||||
str(player.player_score) + " points"
|
||||
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
players_list.add_child(label)
|
||||
placing += 1
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user