From 1d6b5c35ca782d5f3a2256a3ce67e41caca9393f Mon Sep 17 00:00:00 2001 From: Jennie Robinson Faber Date: Sun, 10 May 2026 19:41:03 +0100 Subject: [PATCH] Add escape-to-pause --- scenes/game.tscn | 3 +++ scenes/pause_menu.gd | 22 ++++++++++++++++++++++ scenes/pause_menu.gd.uid | 1 + scenes/pause_menu.tscn | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 scenes/pause_menu.gd create mode 100644 scenes/pause_menu.gd.uid create mode 100644 scenes/pause_menu.tscn diff --git a/scenes/game.tscn b/scenes/game.tscn index 75d323d..ae9db23 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -10,6 +10,7 @@ [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"] +[ext_resource type="PackedScene" path="res://scenes/pause_menu.tscn" id="12_pause"] [node name="Game" type="Node3D" unique_id=1456297160] script = ExtResource("1_lbhrr") @@ -41,3 +42,5 @@ stream = ExtResource("6_gee14") [node name="EndScreen" parent="." instance=ExtResource("10_endsc")] [node name="TitleScreen" parent="." instance=ExtResource("11_title")] + +[node name="PauseMenu" parent="." instance=ExtResource("12_pause")] diff --git a/scenes/pause_menu.gd b/scenes/pause_menu.gd new file mode 100644 index 0000000..b3259d7 --- /dev/null +++ b/scenes/pause_menu.gd @@ -0,0 +1,22 @@ +extends CanvasLayer + +var _enabled := false + +func _ready(): + visible = false + EventBus.game_started.connect(_on_game_started) + +func _on_game_started(): + _enabled = true + +func _unhandled_input(event): + if not _enabled: + return + if event is InputEventKey and event.pressed and not event.echo and event.keycode == KEY_ESCAPE: + _toggle() + get_viewport().set_input_as_handled() + +func _toggle(): + var paused := not get_tree().paused + get_tree().paused = paused + visible = paused diff --git a/scenes/pause_menu.gd.uid b/scenes/pause_menu.gd.uid new file mode 100644 index 0000000..afa6e8f --- /dev/null +++ b/scenes/pause_menu.gd.uid @@ -0,0 +1 @@ +uid://chssreaybnwn8 diff --git a/scenes/pause_menu.tscn b/scenes/pause_menu.tscn new file mode 100644 index 0000000..cb4d344 --- /dev/null +++ b/scenes/pause_menu.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://scenes/pause_menu.gd" id="1"] + +[node name="PauseMenu" type="CanvasLayer"] +layer = 25 +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.7) + +[node name="Center" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 1 + +[node name="Column" type="VBoxContainer" parent="Center"] +theme_override_constants/separation = 16 + +[node name="Title" type="Label" parent="Center/Column"] +text = "PAUSED" +horizontal_alignment = 1 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 64 + +[node name="Prompt" type="Label" parent="Center/Column"] +text = "ESC TO RESUME" +horizontal_alignment = 1 +theme_override_colors/font_color = Color(0.7, 0.7, 0.7, 1) +theme_override_font_sizes/font_size = 24