grunk/src/world/world.gd

39 lines
822 B
GDScript3
Raw Normal View History

2025-03-22 17:16:17 -06:00
class_name World extends Node
## Access and flow control for the game world.
@export var initial_level: PackedScene
@export var pause_scene: PackedScene
@onready var level_root: Node3D = %LevelRoot
@onready var ui_root: Control = %UIRoot
static var instance: World
func _ready() -> void:
World.instance = self
load_level(initial_level)
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("pause"):
pause()
func pause() -> void:
get_tree().paused = true
var pause_menu: Control = pause_scene.instantiate()
ui_root.add_child(pause_menu)
pause_menu.tree_exited.connect(unpause)
func unpause() -> void:
get_tree().paused = false
func load_level(level: PackedScene) -> void:
for c: Node in level_root.get_children():
c.queue_free()
level_root.add_child(level.instantiate())