50 lines
1.5 KiB
GDScript3
50 lines
1.5 KiB
GDScript3
|
|
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()
|