mirror of
https://github.com/thegatesbrowser/thegates.git
synced 2025-08-23 17:17:31 -04:00
67 lines
1.3 KiB
GDScript
67 lines
1.3 KiB
GDScript
extends Control
|
|
|
|
const SECTION = "onboarding"
|
|
const KEY = "shown"
|
|
|
|
const INITIAL_DELAY = 1.0
|
|
const SHOWN = Color(1, 1, 1, 1)
|
|
const HIDDEN = Color(1, 1, 1, 0)
|
|
|
|
@export var ui_events: UiEvents
|
|
@export var root: Control
|
|
@export var close: Button
|
|
@export var fade_in: float = 0.2
|
|
@export var fade_out: float = 0.2
|
|
|
|
@export_group("Debug")
|
|
@export var show_always: bool
|
|
|
|
var tween: Tween
|
|
|
|
|
|
func _ready() -> void:
|
|
close.pressed.connect(hide_onboarding)
|
|
|
|
visible = true
|
|
root.visible = false
|
|
root.modulate = HIDDEN
|
|
|
|
try_show_onboarding()
|
|
|
|
|
|
func try_show_onboarding() -> void:
|
|
var is_shown = DataSaver.get_value(SECTION, KEY, false)
|
|
if is_shown and not show_always: return
|
|
|
|
ui_events.onboarding_requested_emit()
|
|
|
|
await get_tree().create_timer(INITIAL_DELAY).timeout
|
|
show_onboarding()
|
|
|
|
|
|
func show_onboarding() -> void:
|
|
if root.visible: return
|
|
|
|
root.visible = true
|
|
|
|
if is_instance_valid(tween): tween.stop()
|
|
tween = create_tween()
|
|
tween.tween_property(root, "modulate", SHOWN, fade_in)
|
|
|
|
ui_events.onboarding_started_emit()
|
|
|
|
|
|
func hide_onboarding() -> void:
|
|
if not root.visible: return
|
|
|
|
if is_instance_valid(tween): tween.stop()
|
|
tween = create_tween()
|
|
tween.tween_property(root, "modulate", HIDDEN, fade_out)
|
|
|
|
await tween.finished
|
|
root.visible = false
|
|
|
|
DataSaver.set_value(SECTION, KEY, true)
|
|
DataSaver.save_data()
|
|
|
|
ui_events.onboarding_finished_emit()
|