Added title screen and onboarding prompt
This commit is contained in:
parent
89c811473b
commit
d1c4c1a35d
7 changed files with 99 additions and 2 deletions
|
|
@ -4,6 +4,7 @@ extends PanelContainer
|
|||
var current_floor := 10
|
||||
var saved_count := 0
|
||||
var doors_closing_flag := false
|
||||
var _onboarded := false
|
||||
|
||||
# Survivors per floor: more at top, fewer as you descend
|
||||
var base_survivors := 2
|
||||
|
|
@ -28,12 +29,14 @@ func _ready():
|
|||
screen.pulse_blocked.connect(_on_pulse_blocked)
|
||||
screen.doors_closing.connect(_on_doors_closing)
|
||||
|
||||
_start_floor()
|
||||
EventBus.game_started.connect(_start_floor)
|
||||
|
||||
func _unhandled_input(event):
|
||||
if event is InputEventKey and event.pressed and not event.echo:
|
||||
if event.keycode == KEY_SPACE:
|
||||
_on_block_pressed()
|
||||
elif event.keycode == KEY_R:
|
||||
get_tree().reload_current_scene()
|
||||
|
||||
# --- Floor lifecycle ---
|
||||
|
||||
|
|
@ -52,7 +55,18 @@ func _start_floor():
|
|||
|
||||
var screen = $PanelMargin/PanelColumn/Screen
|
||||
screen.start()
|
||||
screen.launch_pulse() # first survivor arrives
|
||||
|
||||
if not _onboarded:
|
||||
_onboarded = true
|
||||
screen.show_onboarding("BLOCK\nIN GREEN ZONE")
|
||||
get_tree().create_timer(3.0).timeout.connect(
|
||||
func():
|
||||
screen.end_onboarding()
|
||||
screen.launch_pulse(),
|
||||
CONNECT_ONE_SHOT
|
||||
)
|
||||
else:
|
||||
screen.launch_pulse() # first survivor arrives
|
||||
|
||||
# --- Input ---
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
[ext_resource type="AudioStream" uid="uid://dgqb1rovgwuan" path="res://audio/ElevatorClose1.wav" id="6_gee14"]
|
||||
[ext_resource type="PackedScene" path="res://scenes/component_spawn.tscn" id="9_0tnpc"]
|
||||
[ext_resource type="PackedScene" path="res://scenes/end_screen.tscn" id="10_endsc"]
|
||||
[ext_resource type="PackedScene" path="res://scenes/title_screen.tscn" id="11_title"]
|
||||
|
||||
[node name="Game" type="Node3D" unique_id=1456297160]
|
||||
script = ExtResource("1_lbhrr")
|
||||
|
|
@ -38,3 +39,5 @@ stream = ExtResource("6_gee14")
|
|||
[node name="ComponentSpawn" parent="." unique_id=649225939 instance=ExtResource("9_0tnpc")]
|
||||
|
||||
[node name="EndScreen" parent="." instance=ExtResource("10_endsc")]
|
||||
|
||||
[node name="TitleScreen" parent="." instance=ExtResource("11_title")]
|
||||
|
|
|
|||
|
|
@ -163,3 +163,12 @@ func show_loss(message: String):
|
|||
$TargetZone.visible = false
|
||||
$AIFace.text = message
|
||||
flash(Color.RED)
|
||||
|
||||
func show_onboarding(msg: String):
|
||||
$AIFace.add_theme_font_size_override("font_size", 18)
|
||||
$AIFace.size = Vector2(size.x, 60)
|
||||
$AIFace.text = msg
|
||||
|
||||
func end_onboarding():
|
||||
$AIFace.add_theme_font_size_override("font_size", 32)
|
||||
$AIFace.size = Vector2(size.x, 30)
|
||||
|
|
|
|||
14
scenes/title_screen.gd
Normal file
14
scenes/title_screen.gd
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
extends CanvasLayer
|
||||
|
||||
func _ready():
|
||||
get_tree().paused = true
|
||||
|
||||
func _unhandled_input(event):
|
||||
if event is InputEventKey and event.pressed and not event.echo:
|
||||
if event.keycode == KEY_SPACE or event.keycode == KEY_ENTER:
|
||||
_start()
|
||||
|
||||
func _start():
|
||||
get_tree().paused = false
|
||||
EventBus.game_started.emit()
|
||||
queue_free()
|
||||
1
scenes/title_screen.gd.uid
Normal file
1
scenes/title_screen.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://ba3of2ykdjqcl
|
||||
55
scenes/title_screen.tscn
Normal file
55
scenes/title_screen.tscn
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
[gd_scene load_steps=3 format=3]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/title_screen.gd" id="1"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="CardStyle"]
|
||||
bg_color = Color(0.05, 0.18, 0.05, 1)
|
||||
border_width_left = 3
|
||||
border_width_top = 3
|
||||
border_width_right = 3
|
||||
border_width_bottom = 3
|
||||
border_color = Color(0.2, 1, 0.2, 1)
|
||||
corner_radius_top_left = 6
|
||||
corner_radius_top_right = 6
|
||||
corner_radius_bottom_right = 6
|
||||
corner_radius_bottom_left = 6
|
||||
|
||||
[node name="TitleScreen" type="CanvasLayer"]
|
||||
layer = 20
|
||||
process_mode = 3
|
||||
script = ExtResource("1")
|
||||
|
||||
[node name="Dim" type="ColorRect" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
mouse_filter = 2
|
||||
color = Color(0, 0, 0, 0.85)
|
||||
|
||||
[node name="Center" type="CenterContainer" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
mouse_filter = 1
|
||||
|
||||
[node name="Card" type="PanelContainer" parent="Center"]
|
||||
theme_override_styles/panel = SubResource("CardStyle")
|
||||
|
||||
[node name="Margin" type="MarginContainer" parent="Center/Card"]
|
||||
theme_override_constants/margin_left = 64
|
||||
theme_override_constants/margin_right = 64
|
||||
theme_override_constants/margin_top = 48
|
||||
theme_override_constants/margin_bottom = 48
|
||||
|
||||
[node name="Column" type="VBoxContainer" parent="Center/Card/Margin"]
|
||||
theme_override_constants/separation = 24
|
||||
|
||||
[node name="Title" type="Label" parent="Center/Card/Margin/Column"]
|
||||
text = "ELEVATOR"
|
||||
horizontal_alignment = 1
|
||||
theme_override_colors/font_color = Color(0.2, 1, 0.2, 1)
|
||||
theme_override_font_sizes/font_size = 72
|
||||
|
||||
[node name="Prompt" type="Label" parent="Center/Card/Margin/Column"]
|
||||
text = "PRESS SPACE TO START"
|
||||
horizontal_alignment = 1
|
||||
theme_override_colors/font_color = Color(0.5, 1, 0.5, 1)
|
||||
theme_override_font_sizes/font_size = 28
|
||||
|
|
@ -6,6 +6,7 @@ signal floor_changed(floor_num: int)
|
|||
signal saved_changed(count: int)
|
||||
signal score_changed(new_score: int)
|
||||
signal people_changed(count: int, threshold: int)
|
||||
signal game_started
|
||||
signal game_won
|
||||
signal game_lost
|
||||
signal floor_started(survivor_count: int)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue