init game files

This commit is contained in:
2026-01-24 16:29:11 -05:00
commit ea2028cf13
171 changed files with 191733 additions and 0 deletions

111
scripts/ui/PauseMenu.gd Normal file
View File

@@ -0,0 +1,111 @@
class_name PauseMenu
extends CanvasLayer
## PauseMenu - In-game pause/escape menu
signal resume_game
signal restart_game
signal return_to_menu
# UI Components
var panel: PanelContainer
var resume_button: Button
var restart_button: Button
var menu_button: Button
var menu_is_visible: bool = false
func _ready() -> void:
_create_menu()
hide_menu()
func _create_menu() -> void:
# Semi-transparent background
var bg = ColorRect.new()
add_child(bg)
bg.set_anchors_preset(Control.PRESET_FULL_RECT)
bg.color = Color(0, 0, 0, 0.7)
bg.mouse_filter = Control.MOUSE_FILTER_STOP
# Center container
var center = CenterContainer.new()
add_child(center)
center.set_anchors_preset(Control.PRESET_FULL_RECT)
# Panel
panel = PanelContainer.new()
center.add_child(panel)
var style = StyleBoxFlat.new()
style.bg_color = Color(0.15, 0.15, 0.2)
style.border_color = Color(0.3, 0.3, 0.4)
style.set_border_width_all(2)
style.set_corner_radius_all(10)
style.set_content_margin_all(30)
panel.add_theme_stylebox_override("panel", style)
var vbox = VBoxContainer.new()
panel.add_child(vbox)
vbox.add_theme_constant_override("separation", 15)
# Title
var title = Label.new()
title.text = "Game Paused"
title.add_theme_font_size_override("font_size", 28)
title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
vbox.add_child(title)
# Spacer
var spacer = Control.new()
spacer.custom_minimum_size = Vector2(0, 10)
vbox.add_child(spacer)
# Resume button
resume_button = _create_menu_button("Resume")
vbox.add_child(resume_button)
resume_button.pressed.connect(_on_resume_pressed)
# Restart button
restart_button = _create_menu_button("Restart Game")
vbox.add_child(restart_button)
restart_button.pressed.connect(_on_restart_pressed)
# Return to menu button
menu_button = _create_menu_button("Main Menu")
vbox.add_child(menu_button)
menu_button.pressed.connect(_on_menu_pressed)
func _create_menu_button(text: String) -> Button:
var button = Button.new()
button.text = text
button.custom_minimum_size = Vector2(180, 45)
button.add_theme_font_size_override("font_size", 18)
return button
func show_menu() -> void:
visible = true
menu_is_visible = true
get_tree().paused = true
func hide_menu() -> void:
visible = false
menu_is_visible = false
get_tree().paused = false
func toggle_menu() -> void:
if menu_is_visible:
hide_menu()
else:
show_menu()
func _on_resume_pressed() -> void:
hide_menu()
resume_game.emit()
func _on_restart_pressed() -> void:
hide_menu()
restart_game.emit()
func _on_menu_pressed() -> void:
hide_menu()
return_to_menu.emit()