Clean Up
Published on December 10, 2025Code Snippets
viewport_background.gd
extends Node
func _ready():
RenderingServer.set_default_clear_color(Color('#000'))
level_manager.gd
extends Node
## A list of all level scene file names
const LEVELS := [
'Level_0.scn',
'Level_1.scn',
]
## the base path to all ldtk generated level scenes
const LEVEL_PATH := 'res://ldtk/levels'
## Currently loaded level Node reference
var _current_level: Node2D
## References the current level's index in the LEVELS array.
## Starts at -1 so we can use `load_next_level()` at the start of the game.
var _current_level_index: int = -1
## The root node that contains all levels
var _level_root: Node2D:
get:
var level_roots = get_tree().get_nodes_in_group('level_root')
assert(level_roots.size() == 1, 'Level root count not met: %d' % level_roots.size())
return level_roots[0]
func load_next_level():
_current_level_index = _current_level_index + 1
if _current_level_index >= LEVELS.size():
_current_level_index = 0
var next_level = LEVELS[_current_level_index]
_load_level(next_level)
func _load_level(level_name: String):
_unload_level()
var next_level_name = '{LEVEL_PATH}/{level_name}'.format({
'LEVEL_PATH': LEVEL_PATH,
'level_name': level_name
})
var next_level: PackedScene = load(next_level_name)
_current_level = next_level.instantiate()
_level_root.add_child(_current_level)
func _unload_level():
if is_instance_valid(_current_level):
_current_level.queue_free()
exit.gd
extends Node
## A list of all level scene file names
const LEVELS := [
'Level_0.scn',
'Level_1.scn',
]
## the base path to all ldtk generated level scenes
const LEVEL_PATH := 'res://ldtk/levels'
## Currently loaded level Node reference
var _current_level: Node2D
## References the current level's index in the LEVELS array.
## Starts at -1 so we can use `load_next_level()` at the start of the game.
var _current_level_index: int = -1
## The root node that contains all levels
var _level_root: Node2D:
get:
var level_roots = get_tree().get_nodes_in_group('level_root')
assert(level_roots.size() == 1, 'Level root count not met: %d' % level_roots.size())
return level_roots[0]
func load_next_level():
_current_level_index = _current_level_index + 1
if _current_level_index >= LEVELS.size():
_current_level_index = 0
var next_level = LEVELS[_current_level_index]
_load_level(next_level)
func _load_level(level_name: String):
_unload_level()
var next_level_name = '{LEVEL_PATH}/{level_name}'.format({
'LEVEL_PATH': LEVEL_PATH,
'level_name': level_name
})
var next_level: PackedScene = load(next_level_name)
_current_level = next_level.instantiate()
_level_root.add_child(_current_level)
func _unload_level():
if is_instance_valid(_current_level):
_current_level.queue_free()