feat: route resources through typed content

This commit is contained in:
Rijad Zuzo
2026-08-12 20:51:01 +02:00
parent 4e4ae1a969
commit dc0f59fcf0
31 changed files with 1071 additions and 10 deletions
@@ -7,7 +7,10 @@ extends Resource
@export var required_handler_ids: Array[StringName] = []
@export var actions: Array[ActionDefinition] = []
@export var professions: Array[ProfessionDefinition] = []
@export var capability_tags: Array[CapabilityTagDefinition] = []
@export var items: Array[ItemDefinition] = []
@export var resources: Array[ResourceDefinition] = []
@export var storages: Array[StorageDefinition] = []
@export var enemies: Array[EnemyDefinition] = []
@@ -23,7 +26,10 @@ func validate() -> Array[String]:
errors.append("pack '%s' cannot require itself" % pack_id)
_validate_actions(errors)
_validate_professions(errors)
_validate_capability_tags(errors)
_validate_items(errors)
_validate_resources(errors)
_validate_storages(errors)
_validate_enemies(errors)
return errors
@@ -55,6 +61,33 @@ func _validate_items(errors: Array[String]) -> void:
errors.append("ItemDefinition: " + error)
func _validate_capability_tags(errors: Array[String]) -> void:
for definition in capability_tags:
if definition == null:
errors.append("capability_tags contains a null definition")
continue
for error in definition.validate():
errors.append("CapabilityTagDefinition: " + error)
func _validate_resources(errors: Array[String]) -> void:
for definition in resources:
if definition == null:
errors.append("resources contains a null definition")
continue
for error in definition.validate():
errors.append("ResourceDefinition: " + error)
func _validate_storages(errors: Array[String]) -> void:
for definition in storages:
if definition == null:
errors.append("storages contains a null definition")
continue
for error in definition.validate():
errors.append("StorageDefinition: " + error)
func _validate_enemies(errors: Array[String]) -> void:
for definition in enemies:
if definition == null: