extends Control @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(winning_player_id: int) -> void: visible = true # Set winner info var winner: PlayerObject = Settings.player_array[winning_player_id] winner_label.text = winner.player_name + " won with " + str(winner.player_score) + \ " points!!" winner_picture.texture = winner.character 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.id == winning_player_id: 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 func hide_window() -> void: visible = false func _input(event: InputEvent) -> void: if visible: if event is InputEventMouseButton and event.is_pressed(): var ev_local: InputEvent = make_input_local(event) if !Rect2(Vector2(0, 0), winner_panel.size).has_point(ev_local.position): visible = false