clockwork-city/prefabs/ui/player_display.gd

67 lines
1.9 KiB
GDScript3
Raw Permalink Normal View History

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)