class_name PlayerDisplay extends Control const PLAYER_INFO_SCENE = preload("uid://8sd8fkx3hua0") var reveal_tween: Tween #func _ready() -> void: #var player_1 = Player.new() #player_1.name = "Duncan" #player_1.color = Color.AQUA #var player_2 = Player.new() #player_2.name = "Tyler" #player_2.color = Color.CHARTREUSE #var player_3 = Player.new() #player_3.name = "Rob" #player_3.color = Color.DARK_MAGENTA #var player_4 = Player.new() #player_4.name = "Lucas" #player_4.color = Color.YELLOW #set_players([player_1, player_2, player_3, player_4]) func set_players(players: Array[Player]) -> void: for child in get_children(): child.free() for player in players: var player_info: PlayerInfo = PLAYER_INFO_SCENE.instantiate() add_child(player_info) player_info.set_player(player) player_info.modulate = Color(1, 1, 1, 0) get_child(0).modulate = Color(1, 1, 1, 1) await get_tree().process_frame var max_child_size: float = 0 for i in range(get_child_count() - 1): max_child_size = maxf(max_child_size, maxf(get_child(i).size.x, get_child(i + 1).size.x)) custom_minimum_size = Vector2(max_child_size, get_child(0).size.y) func _on_mouse_entered(): _reveal_players() func _on_mouse_exited(): _hide_players() func _reveal_players() -> void: if get_child_count() <= 1: return if is_instance_valid(reveal_tween): reveal_tween.kill() reveal_tween = create_tween() for i in range(1, get_child_count()): reveal_tween.parallel().tween_property(get_child(i), "modulate", Color(1, 1, 1, 1), 0.25) reveal_tween.parallel().tween_property(get_child(i), "position", Vector2(0, 40 * i), 0.25) func _hide_players() -> void: if get_child_count() <= 1: return if is_instance_valid(reveal_tween): reveal_tween.kill() reveal_tween = create_tween() for i in range(1, get_child_count()): reveal_tween.parallel().tween_property(get_child(i), "modulate", Color(1, 1, 1, 0), 0.25) reveal_tween.parallel().tween_property(get_child(i), "position", Vector2(0, 0), 0.25)