start of level system

This commit is contained in:
Haze Weathers 2025-02-28 03:37:26 -05:00
parent c18a7746f7
commit ab2d42ccd9
11 changed files with 342 additions and 4 deletions

View file

@ -1,2 +1,47 @@
@tool
class_name LevelSet
extends Resource
@export var title: String
@export_tool_button("Update Levels") var _update_action = update_level_info
@export_dir var levels_dir: String:
set(value):
levels_dir = value
if Engine.is_editor_hint():
update_level_info()
@export var levels: Array[LevelEntry] = []
func update_level_info():
levels.clear()
if levels_dir.is_empty() or not DirAccess.dir_exists_absolute(levels_dir):
notify_property_list_changed()
return
var dir = DirAccess.open(levels_dir)
var files = Array(dir.get_files()).filter(
func(path: String):
return path.ends_with(".tscn") or path.ends_with(".scn")
) as Array[String]
for file in files:
var packed_scene = load(levels_dir + "/" + file) as PackedScene
if packed_scene:
var level = packed_scene.instantiate()
if level is Level:
var entry = LevelEntry.new()
entry.resource_name = level.info.title
entry.info = level.info
entry.scene = packed_scene
levels.append(entry)
level.free()
notify_property_list_changed()
if Engine.is_editor_hint():
ResourceSaver.save(self, resource_path)
class LevelEntry extends Resource:
@export var info: LevelInfo
@export var scene: PackedScene