Refine movement, water recovery, and UI baseline
This commit is contained in:
parent
d2fe367891
commit
e2067e3bf4
23 changed files with 905 additions and 146 deletions
65
ui/screen_fade.gd
Normal file
65
ui/screen_fade.gd
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
class_name ScreenFade
|
||||
extends ColorRect
|
||||
|
||||
signal transition_completed(generation: int, faded_to_black: bool)
|
||||
|
||||
@export_range(0.01, 3.0, 0.01) var fade_out_duration: float = 0.4
|
||||
@export_range(0.01, 3.0, 0.01) var fade_in_duration: float = 0.45
|
||||
|
||||
var _fade_tween: Tween
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
modulate.a = 0.0
|
||||
visible = false
|
||||
|
||||
|
||||
func fade_to_black(generation: int) -> void:
|
||||
_start_fade(1.0, fade_out_duration, generation, true)
|
||||
|
||||
|
||||
func fade_from_black(generation: int) -> void:
|
||||
visible = true
|
||||
modulate.a = 1.0
|
||||
_start_fade(0.0, fade_in_duration, generation, false)
|
||||
|
||||
|
||||
func reset_immediately() -> void:
|
||||
if _fade_tween != null and _fade_tween.is_valid():
|
||||
_fade_tween.kill()
|
||||
_fade_tween = null
|
||||
modulate.a = 0.0
|
||||
visible = false
|
||||
|
||||
|
||||
func _start_fade(
|
||||
target_alpha: float,
|
||||
duration: float,
|
||||
generation: int,
|
||||
faded_to_black: bool,
|
||||
) -> void:
|
||||
if _fade_tween != null and _fade_tween.is_valid():
|
||||
_fade_tween.kill()
|
||||
visible = true
|
||||
_fade_tween = create_tween()
|
||||
_fade_tween.set_trans(Tween.TRANS_QUAD)
|
||||
_fade_tween.set_ease(
|
||||
Tween.EASE_IN if faded_to_black else Tween.EASE_OUT
|
||||
)
|
||||
_fade_tween.tween_property(
|
||||
self,
|
||||
"modulate:a",
|
||||
target_alpha,
|
||||
maxf(duration, 0.01)
|
||||
)
|
||||
_fade_tween.finished.connect(
|
||||
_on_fade_finished.bind(generation, faded_to_black),
|
||||
CONNECT_ONE_SHOT
|
||||
)
|
||||
|
||||
|
||||
func _on_fade_finished(generation: int, faded_to_black: bool) -> void:
|
||||
_fade_tween = null
|
||||
if not faded_to_black:
|
||||
visible = false
|
||||
transition_completed.emit(generation, faded_to_black)
|
||||
Loading…
Add table
Add a link
Reference in a new issue