#9 #32 #33 : New winner screen, new setting for hide beginning and fixed bug
Build / build (push) Successful in 1m25s

This commit is contained in:
2026-05-16 17:46:09 +02:00
parent acd8d65b95
commit 899e99864f
12 changed files with 239 additions and 158 deletions
+63
View File
@@ -0,0 +1,63 @@
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