generated from krampus/template-godot4
67 lines
1.9 KiB
GDScript3
67 lines
1.9 KiB
GDScript3
|
|
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)
|