fix(levels): ScenePath must be a string, not a PackedScene

slice 7 regression. level_village_2..5.tscn each reference their own
LevelResource for the death screen label, so pointing the resource back
at the scene forms a cycle Godot cannot resolve - "Parse Error: Busy"
and the level fails to load entirely.

ScenePath was a string for exactly this reason. Reverted, and the rot it
allowed (forest_1 aimed at a nonexistent scene) is now caught by
LevelCatalogue.Validate checking every path resolves, plus a repo-level
structural check - fixed by validation rather than by typing.

project.godot: restores the C# feature flag and dialogue_manager
uses_dotnet, which `godot --headless --import` strips on every run.
This commit is contained in:
2026-07-28 19:40:02 +02:00
parent 7a69292066
commit f85c16c641
12 changed files with 74 additions and 43 deletions

View File

@@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="LevelResource" load_steps=3 format=3 uid="uid://dsq0y2iw7tfmk"]
[gd_resource type="Resource" script_class="LevelResource" load_steps=2 format=3 uid="uid://dsq0y2iw7tfmk"]
[ext_resource type="Script" uid="uid://c2h0pqhxiqswe" path="res://scripts/Resources/LevelResource.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://cq4glvuewsno5" path="res://scenes/level_forest_1.tscn" id="2_scene"]
[resource]
script = ExtResource("1_script")
Id = "forest_1"
LevelName = "LEVEL_FOREST_1_NAME"
Scene = ExtResource("2_scene")
ScenePath = "res://scenes/level_forest_1.tscn"
metadata/_custom_type_script = "uid://cp68km8bykymb"

View File

@@ -1,6 +1,6 @@
[gd_resource type="Resource" script_class="LevelCatalogue" load_steps=8 format=3]
[ext_resource type="Script" path="res://scripts/Resources/LevelCatalogue.cs" id="1_script"]
[ext_resource type="Script" uid="uid://cxryfiktqs7s1" path="res://scripts/Resources/LevelCatalogue.cs" id="1_script"]
[ext_resource type="Resource" path="res://resources/levels/tutorial_1.tres" id="2_tutorial_1"]
[ext_resource type="Resource" uid="uid://cqtalsov2bkpo" path="res://resources/levels/village/village_1.tres" id="3_village_1"]
[ext_resource type="Resource" uid="uid://dlwkbjw1l33uq" path="res://resources/levels/village/village_2.tres" id="4_village_2"]

View File

@@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="LevelResource" load_steps=3 format=3]
[gd_resource type="Resource" script_class="LevelResource" load_steps=2 format=3]
[ext_resource type="Script" uid="uid://c2h0pqhxiqswe" path="res://scripts/Resources/LevelResource.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://dwr3avefuwnpy" path="res://scenes/level_tutorial_1.tscn" id="2_scene"]
[resource]
script = ExtResource("1_script")
Id = "tutorial_1"
LevelName = "LEVEL_TUTORIAL_1_NAME"
Scene = ExtResource("2_scene")
ScenePath = "res://scenes/level_tutorial_1.tscn"
metadata/_custom_type_script = "uid://cp68km8bykymb"

View File

@@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="LevelResource" load_steps=3 format=3 uid="uid://cqtalsov2bkpo"]
[gd_resource type="Resource" script_class="LevelResource" load_steps=2 format=3 uid="uid://cqtalsov2bkpo"]
[ext_resource type="Script" uid="uid://c2h0pqhxiqswe" path="res://scripts/Resources/LevelResource.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://bol7g83v2accs" path="res://scenes/level_village_1.tscn" id="2_scene"]
[resource]
script = ExtResource("1_script")
Id = "village_1"
LevelName = "LEVEL_1_NAME"
Scene = ExtResource("2_scene")
ScenePath = "res://scenes/level_village_1.tscn"
metadata/_custom_type_script = "uid://cp68km8bykymb"

View File

@@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="LevelResource" load_steps=3 format=3 uid="uid://dlwkbjw1l33uq"]
[gd_resource type="Resource" script_class="LevelResource" load_steps=2 format=3 uid="uid://dlwkbjw1l33uq"]
[ext_resource type="Script" uid="uid://c2h0pqhxiqswe" path="res://scripts/Resources/LevelResource.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://chqb11pfoqmeb" path="res://scenes/level_village_2.tscn" id="2_scene"]
[resource]
script = ExtResource("1_script")
Id = "village_2"
LevelName = "LEVEL_2_NAME"
Scene = ExtResource("2_scene")
ScenePath = "res://scenes/level_village_2.tscn"
metadata/_custom_type_script = "uid://cp68km8bykymb"

View File

@@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="LevelResource" load_steps=3 format=3 uid="uid://b63u5qfp8p7pv"]
[gd_resource type="Resource" script_class="LevelResource" load_steps=2 format=3 uid="uid://b63u5qfp8p7pv"]
[ext_resource type="Script" uid="uid://c2h0pqhxiqswe" path="res://scripts/Resources/LevelResource.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://h60obxmju6mo" path="res://scenes/level_village_3.tscn" id="2_scene"]
[resource]
script = ExtResource("1_script")
Id = "village_3"
LevelName = "LEVEL_3_NAME"
Scene = ExtResource("2_scene")
ScenePath = "res://scenes/level_village_3.tscn"
metadata/_custom_type_script = "uid://cp68km8bykymb"

View File

@@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="LevelResource" load_steps=3 format=3 uid="uid://cxfei28yu3buh"]
[gd_resource type="Resource" script_class="LevelResource" load_steps=2 format=3 uid="uid://cxfei28yu3buh"]
[ext_resource type="Script" uid="uid://c2h0pqhxiqswe" path="res://scripts/Resources/LevelResource.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://bhad760x3vvco" path="res://scenes/level_village_4.tscn" id="2_scene"]
[resource]
script = ExtResource("1_script")
Id = "village_4"
LevelName = "LEVEL_4_NAME"
Scene = ExtResource("2_scene")
ScenePath = "res://scenes/level_village_4.tscn"
metadata/_custom_type_script = "uid://cp68km8bykymb"

View File

@@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="LevelResource" load_steps=3 format=3 uid="uid://qld841xv5ui0"]
[gd_resource type="Resource" script_class="LevelResource" load_steps=2 format=3 uid="uid://qld841xv5ui0"]
[ext_resource type="Script" uid="uid://c2h0pqhxiqswe" path="res://scripts/Resources/LevelResource.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://bbwef3n2gjkt8" path="res://scenes/level_village_5.tscn" id="2_scene"]
[resource]
script = ExtResource("1_script")
Id = "village_5"
LevelName = "LEVEL_5_NAME"
Scene = ExtResource("2_scene")
ScenePath = "res://scenes/level_village_5.tscn"
metadata/_custom_type_script = "uid://cp68km8bykymb"

View File

@@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="LevelResource" load_steps=3 format=3]
[gd_resource type="Resource" script_class="LevelResource" load_steps=2 format=3]
[ext_resource type="Script" uid="uid://c2h0pqhxiqswe" path="res://scripts/Resources/LevelResource.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://dqekccjkwev4y" path="res://scenes/level_village_6.tscn" id="2_scene"]
[resource]
script = ExtResource("1_script")
Id = "village_6"
LevelName = "LEVEL_6_NAME"
Scene = ExtResource("2_scene")
ScenePath = "res://scenes/level_village_6.tscn"
metadata/_custom_type_script = "uid://cp68km8bykymb"