Skip to content

Commit 53f5ff8

Browse files
authored
Merge pull request #93 from endlessm/wjt/pause-screen
Add pause screen with restart button
2 parents bcb904e + 268c224 commit 53f5ff8

6 files changed

Lines changed: 121 additions & 5 deletions

File tree

components/ui/pause_screen.tscn

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
[gd_scene format=3 uid="uid://n24yvet11xse"]
2+
3+
[ext_resource type="Script" uid="uid://bl1c57n0j768a" path="res://scripts/pause_screen.gd" id="1_y5lir"]
4+
[ext_resource type="Theme" uid="uid://b88jpx5kgv3j4" path="res://components/ui/theme.tres" id="2_34b7r"]
5+
6+
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r8yp4"]
7+
bg_color = Color(0.5019608, 0.5019608, 0.5019608, 0.7490196)
8+
9+
[node name="PauseScreen" type="Node2D" unique_id=1043235669]
10+
process_mode = 3
11+
script = ExtResource("1_y5lir")
12+
13+
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=127264615]
14+
unique_name_in_owner = true
15+
process_mode = 2
16+
layer = 2
17+
18+
[node name="Panel" type="Panel" parent="CanvasLayer" unique_id=1588442961]
19+
anchors_preset = 15
20+
anchor_right = 1.0
21+
anchor_bottom = 1.0
22+
grow_horizontal = 2
23+
grow_vertical = 2
24+
theme_override_styles/panel = SubResource("StyleBoxFlat_r8yp4")
25+
26+
[node name="CenterContainer" type="CenterContainer" parent="CanvasLayer" unique_id=886722388]
27+
offset_right = 1920.0
28+
offset_bottom = 1080.0
29+
theme = ExtResource("2_34b7r")
30+
31+
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/CenterContainer" unique_id=551811215]
32+
layout_mode = 2
33+
34+
[node name="Label" type="Label" parent="CanvasLayer/CenterContainer/VBoxContainer" unique_id=793104726]
35+
layout_mode = 2
36+
theme_type_variation = &"HeaderLarge"
37+
text = "Paused"
38+
horizontal_alignment = 1
39+
40+
[node name="Resume" type="Button" parent="CanvasLayer/CenterContainer/VBoxContainer" unique_id=310925443]
41+
unique_name_in_owner = true
42+
layout_mode = 2
43+
text = "Resume"
44+
45+
[node name="Restart" type="Button" parent="CanvasLayer/CenterContainer/VBoxContainer" unique_id=1651826743]
46+
unique_name_in_owner = true
47+
layout_mode = 2
48+
text = "Restart"
49+
50+
[node name="Quit" type="Button" parent="CanvasLayer/CenterContainer/VBoxContainer" unique_id=1166900506]
51+
unique_name_in_owner = true
52+
layout_mode = 2
53+
text = "Quit"

components/ui/theme.tres

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[gd_resource type="Theme" format=3 uid="uid://b88jpx5kgv3j4"]
2+
3+
[resource]
4+
default_font_size = 64
5+
VBoxContainer/constants/separation = 32

hud.tscn

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
[ext_resource type="Script" uid="uid://bi5370kgl6xcs" path="res://scripts/hud.gd" id="1_8msyy"]
44
[ext_resource type="Texture2D" uid="uid://dgoqexmguhjly" path="res://assets/input-prompts/steam-deck_sheet_default/steamdeck_dpad_left.tres" id="2_615i1"]
5+
[ext_resource type="Theme" uid="uid://b88jpx5kgv3j4" path="res://components/ui/theme.tres" id="2_o2hcl"]
56
[ext_resource type="Texture2D" uid="uid://d3um1i1lgu153" path="res://assets/heart.png" id="2_yyptq"]
67
[ext_resource type="Texture2D" uid="uid://c6ic03u2yvnk6" path="res://assets/controls/flatLightLeft.png" id="3_cxgb6"]
78
[ext_resource type="Texture2D" uid="uid://6m3x053rqyag" path="res://assets/input-prompts/steam-deck_sheet_default/steamdeck_button_a.tres" id="3_pw7dr"]
@@ -27,9 +28,6 @@
2728
[ext_resource type="Texture2D" uid="uid://b8qikt8t5p5bx" path="res://assets/input-prompts/keyboard-and-mouse_sheet_default/keyboard_shift.tres" id="18_d5hpo"]
2829
[ext_resource type="Texture2D" uid="uid://c10q4vbvv80br" path="res://assets/input-prompts/keyboard-and-mouse_sheet_default/keyboard_tab.tres" id="19_y8web"]
2930

30-
[sub_resource type="Theme" id="Theme_0yvta"]
31-
default_font_size = 64
32-
3331
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_b8smf"]
3432

3533
[node name="HUD" type="CanvasLayer" unique_id=724048136]
@@ -44,8 +42,7 @@ offset_left = -331.5
4442
offset_right = 331.5
4543
offset_bottom = 420.0
4644
grow_horizontal = 2
47-
theme = SubResource("Theme_0yvta")
48-
theme_override_constants/separation = 32
45+
theme = ExtResource("2_o2hcl")
4946

5047
[node name="Label" type="Label" parent="Start" unique_id=1432757565]
5148
layout_mode = 2

project.godot

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ config/icon="res://icon.svg"
2121
Global="*res://scripts/global.gd"
2222
Actions="*res://scripts/actions.gd"
2323
WebSceneSelector="uid://cag3i6auntfwn"
24+
PauseScreen="uid://n24yvet11xse"
2425

2526
[display]
2627

@@ -38,6 +39,14 @@ coins="Coins that must be collected to win the level"
3839

3940
[input]
4041

42+
ui_accept={
43+
"deadzone": 0.5,
44+
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
45+
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
46+
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
47+
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
48+
]
49+
}
4150
player_2_jump={
4251
"deadzone": 0.5,
4352
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
@@ -122,6 +131,13 @@ player_1_shrink={
122131
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":9,"pressure":0.0,"pressed":true,"script":null)
123132
]
124133
}
134+
pause={
135+
"deadzone": 0.2,
136+
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194313,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
137+
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":80,"key_label":0,"unicode":108,"location":0,"echo":false,"script":null)
138+
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null)
139+
]
140+
}
125141

126142
[layer_names]
127143

scripts/pause_screen.gd

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
extends Node
2+
3+
@onready var _canvas_layer: CanvasLayer = %CanvasLayer
4+
@onready var _tree := get_tree()
5+
@onready var _resume_button: Button = %Resume
6+
@onready var _restart_button: Button = %Restart
7+
@onready var _quit_button: Button = %Quit
8+
9+
10+
func _ready() -> void:
11+
_resume_button.pressed.connect(resume)
12+
_restart_button.pressed.connect(restart)
13+
14+
_quit_button.visible = OS.get_name() != "Web"
15+
_quit_button.pressed.connect(_tree.quit)
16+
17+
_canvas_layer.visible = false
18+
19+
20+
func _input(event: InputEvent) -> void:
21+
if not event.is_action_pressed(&"pause"):
22+
return
23+
24+
get_viewport().set_input_as_handled()
25+
if _tree.paused:
26+
resume()
27+
else:
28+
pause()
29+
30+
31+
func pause() -> void:
32+
_canvas_layer.visible = true
33+
_tree.paused = true
34+
_resume_button.grab_focus()
35+
36+
37+
func resume() -> void:
38+
_tree.paused = false
39+
_canvas_layer.visible = false
40+
41+
42+
func restart() -> void:
43+
resume()
44+
_tree.reload_current_scene()

scripts/pause_screen.gd.uid

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
uid://bl1c57n0j768a

0 commit comments

Comments
 (0)