grunk/src/world/world.gd

44 lines
949 B
GDScript

class_name World extends Node
## Access and flow control for the game world.
@export var pause_enabled := true
@export var spook_manager: SpookManager
@export_category("Game Scenes")
@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") and pause_enabled:
pause()
func pause() -> void:
get_tree().paused = true
var pause_menu: Control = pause_scene.instantiate()
ui_root.add_child(pause_menu)
pause_menu.tree_exiting.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())