Explosion_der_Spiele/scripts/levels/title_screen.gd

50 lines
1.5 KiB
GDScript3
Raw Normal View History

extends Control
## Title screen with placeholder rain + loud music.
## TODO: Real title art (Mario/Sonic/Burger rain, disturbed human).
@onready var subtitle: Label = $Subtitle
@onready var bubble: Label = $Bubble
@onready var start_btn: Button = $StartButton
@onready var rain: Node2D = $Rain
var _rain_sprites: Array[Sprite2D] = []
func _ready() -> void:
GameState.current_scene_id = "title_screen"
AudioDirector.burger_cham_enabled = true
AudioDirector.play_title_music()
_refresh()
Locale.locale_changed.connect(_refresh)
_spawn_rain()
func _refresh() -> void:
subtitle.text = Locale.tr_key("title_subtitle")
bubble.text = Locale.tr_key("title_bubble")
start_btn.text = Locale.tr_key("menu_start")
func _spawn_rain() -> void:
var paths = [
"res://assets/sprites/placeholders/mario.png",
"res://assets/sprites/placeholders/sonic.png",
"res://assets/sprites/placeholders/burger.png",
]
for i in range(24):
var s := Sprite2D.new()
s.texture = load(paths[i % paths.size()])
s.position = Vector2(randf() * 1280.0, randf() * -720.0)
s.scale = Vector2(3, 3)
s.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
rain.add_child(s)
_rain_sprites.append(s)
func _process(delta: float) -> void:
for s in _rain_sprites:
s.position.y += (80.0 + s.get_index() * 3.0) * delta
if s.position.y > 760.0:
s.position.y = -40.0
s.position.x = randf() * 1280.0
func _on_start_pressed() -> void:
AudioDirector.burger_cham_enabled = false
GameState.start_new_game()