122 lines
3.4 KiB
GDScript
122 lines
3.4 KiB
GDScript
extends AweSplashScreen
|
|
|
|
onready var title_node := $AspectNode/LogoContainer/TitleNode
|
|
onready var info_node := $AspectNode/LogoContainer/InfoNode
|
|
onready var logo := $AspectNode/LogoContainer/Logo
|
|
|
|
onready var background := $CanvasLayer/ColorRect
|
|
onready var logo_container := $AspectNode/LogoContainer
|
|
onready var sponges := $AspectNode/Sponges
|
|
|
|
onready var wave1 := $AspectNode/Wave1
|
|
onready var wave2 := $AspectNode/Wave2
|
|
|
|
export(String, FILE) var logo_path = "res://src/demo_collection/aqua/assets/logo.png"
|
|
export(String) var title := "GODOT"
|
|
export(String) var description := "Game engine"
|
|
|
|
export (float) var duration := 4.0
|
|
export (Color) var background_color := Color.white
|
|
|
|
export (Color) var font_color := Color.white
|
|
export (float) var title_font_size := 230
|
|
export (float) var description_font_size := 120
|
|
|
|
export (Color) var logo_color := Color8(255, 255, 255, 255)
|
|
export (Color) var color_wave1 := Color8(0, 132, 222, 255)
|
|
export (Color) var color_wave2 := Color8(255, 255, 255, 255)
|
|
|
|
|
|
var wave1_move_up_time = 2.0
|
|
var wave2_move_up_time = 2.0
|
|
|
|
const PREPARE_MOVE_OTHER_SCREEN = 0.2 # time prepare move to other screen after animation finished
|
|
|
|
const SPONGE_MOVE_X_RANGE = Vector2(-450, 450)
|
|
const SPONGE_MOVE_HORIZONTAL_TIME_RANGE = Vector2(5.0, 10.0)
|
|
const SPONGE_MOVE_UP_TIME_RANGE = Vector2(5.0, 10.0)
|
|
|
|
func get_name() -> String:
|
|
return "Aqua"
|
|
|
|
func _ready():
|
|
config()
|
|
|
|
func play():
|
|
start_main_animation()
|
|
|
|
|
|
func config():
|
|
wave1_move_up_time = duration * 0.5
|
|
wave2_move_up_time = duration * 0.4
|
|
|
|
|
|
var center_point = self.origin_size / 2.0
|
|
logo_container.position = center_point + Vector2(0, 300)
|
|
logo_container.scale = Vector2(1, 1)
|
|
logo_container.modulate = background_color
|
|
|
|
logo.texture = load_texture(logo_path)
|
|
logo.modulate = logo_color
|
|
|
|
background.color = background_color
|
|
wave1.modulate = color_wave1
|
|
wave2.modulate = color_wave2
|
|
|
|
sponges.position = Vector2(center_point.x, self.origin_size.y + 1500.0)
|
|
|
|
title_node.font.size = title_font_size
|
|
title_node.modulate = font_color
|
|
title_node.text = title
|
|
|
|
info_node.font.size = description_font_size
|
|
info_node.text = description
|
|
info_node.modulate = font_color
|
|
|
|
|
|
|
|
func start_main_animation():
|
|
# move up wave 1
|
|
gd.move_by(Vector2(1500, -6000), wave1_move_up_time).start(wave1)
|
|
|
|
|
|
# move up all sponges
|
|
for sponge in sponges.get_children():
|
|
spoges_move_up(sponge)
|
|
|
|
|
|
# wait and move up wave 2
|
|
gd.sequence([
|
|
gd.wait(wave1_move_up_time + 0.3),
|
|
gd.move_by(Vector2(1500, -6000), 2.0),
|
|
]).start(wave2)
|
|
|
|
|
|
# move up all logo and all sponges in wave2
|
|
var action_move_up = gd.move_by(Vector2(0, -3000), wave2_move_up_time).with_easing(0.8)
|
|
gd.sequence([
|
|
gd.wait(wave1_move_up_time + 0.7),
|
|
gd.group([
|
|
gd.run(action_move_up, sponges),
|
|
gd.scale_to(0.5, wave2_move_up_time * 0.85),
|
|
action_move_up,
|
|
])
|
|
]).start(logo_container)
|
|
|
|
gd.sequence([
|
|
gd.wait(wave1_move_up_time + wave2_move_up_time * 0.8 + PREPARE_MOVE_OTHER_SCREEN),
|
|
gd.perform("finished_animation", self)
|
|
]).start(self)
|
|
|
|
|
|
func spoges_move_up(sponge: Node2D):
|
|
var range_move = get_random_value(SPONGE_MOVE_X_RANGE)
|
|
var duration_move_sponge = get_random_value(SPONGE_MOVE_HORIZONTAL_TIME_RANGE)
|
|
var duration_up = get_random_value(SPONGE_MOVE_UP_TIME_RANGE)
|
|
|
|
gd.move_by_y(-4500, duration_up ).with_easing(0.4).start(sponge)
|
|
gd.move_by_x(range_move, duration_move_sponge).with_easing(0.3).start(sponge.get_child(0))
|
|
|
|
|
|
func get_random_value(ran: Vector2) -> float:
|
|
return (ran.y - ran.x) * randf() + ran.x
|