Files

59 lines
2.4 KiB
GDScript
Raw Permalink Normal View History

2021-05-08 13:44:51 +02:00
extends Control
@export var template: PackedScene = load("res://scenes/UI/choose_scenes/parts/Template.tscn")
2021-05-13 23:15:05 +02:00
func _ready() -> void:
for level in Global.database.levels:
_apply_scene(level)
2021-05-13 23:15:05 +02:00
## PRIVATE
func _apply_scene(level: LevelEntry) -> void:
$MarginContainer.add_child(_load_scene(level.name))
var node := _build_path(level.name)
2021-06-06 16:54:38 +02:00
_configure_select(level, node)
configure_reset(level, node, false)
2021-06-06 16:54:38 +02:00
configure_counter(level, node)
2021-05-15 01:20:47 +02:00
func _load_scene(p_name: String) -> Node:
var template_instance := template.instantiate()
2026-05-16 21:28:22 +02:00
template_instance.set_name(p_name)
2021-05-15 12:08:43 +02:00
return template_instance
2021-05-13 23:15:05 +02:00
func _build_path(p_name: String) -> String:
2026-05-16 21:28:22 +02:00
return "MarginContainer/" + p_name
2021-06-06 16:54:38 +02:00
func _configure_select(level: LevelEntry, node: String) -> void:
var selector := get_node(node + "/MarginContainer/CenterAlign/MainButton")
var thumbnail: TextureRect = get_node(node + "/MarginContainer/CenterAlign/MainButton/MarginStich/ThumbnailLevel")
thumbnail.texture = load(level.thumb)
var handler := Event.level_pressed(level.name)
if handler.is_valid():
selector.pressed.connect(handler)
2021-05-13 23:15:05 +02:00
func configure_reset(level: LevelEntry, node: String, animate: bool) -> void:
var reset: BaseButton = get_node(node + "/MarginContainer/CenterAlign/MainButton/TabAlign/ButtonReset")
var animation: AnimationPlayer = get_node(node + "/AnimationPlayer")
2021-05-29 21:09:10 +02:00
if int(level.object_finding()) == 0:
2021-06-06 16:54:38 +02:00
_configure_reset_disable(animation, reset, animate)
2021-05-29 21:09:10 +02:00
else:
_configure_reset_enable(animation, reset, level, node)
2021-06-06 16:54:38 +02:00
func _configure_reset_disable(animation: AnimationPlayer, reset: BaseButton, animate: bool = false) -> void:
2021-06-06 16:54:38 +02:00
animation.play("SlideReset")
if not animate:
2021-06-06 16:54:38 +02:00
animation.seek(1, false)
reset.set_disabled(true)
reset.mouse_default_cursor_shape = CURSOR_ARROW
for c in reset.pressed.get_connections():
reset.pressed.disconnect(c["callable"])
2021-06-06 16:54:38 +02:00
func _configure_reset_enable(animation: AnimationPlayer, reset: BaseButton, level: LevelEntry, node: String) -> void:
2021-06-06 16:54:38 +02:00
animation.play_backwards("SlideReset")
reset.set_disabled(false)
reset.mouse_default_cursor_shape = CURSOR_POINTING_HAND
reset.pressed.connect(Event._on_reset_level.bind(level, node, level.index, self))
func configure_counter(level: LevelEntry, node: String) -> void:
var count: Label = get_node(node + "/MarginContainer/CenterAlign/MainButton/TabAlign/ButtonCount/MarginBottom/Label")
count.text = level.object_finding() + " / " + level.object_to_find()