feat: add emergent world foundations

This commit is contained in:
Rijad Zuzo
2026-08-12 20:06:51 +02:00
parent fa04137a04
commit ea00f60165
44 changed files with 2665 additions and 7 deletions
+52
View File
@@ -0,0 +1,52 @@
class_name WorldTargetCapability
extends RefCounted
var _capability_id: StringName
var _attributes: Dictionary
func _init(capability_id: StringName = &"", attributes: Dictionary = {}) -> void:
_capability_id = capability_id
_attributes = attributes.duplicate(true)
func is_valid() -> bool:
return not _capability_id.is_empty() and not _contains_object(_attributes)
func get_capability_id() -> StringName:
return _capability_id
func get_attributes() -> Dictionary:
return _attributes.duplicate(true)
func get_attribute(attribute_id: StringName, default_value: Variant = null) -> Variant:
var value: Variant = _attributes.get(String(attribute_id), default_value)
return value.duplicate(true) if value is Array or value is Dictionary else value
func to_dictionary() -> Dictionary:
return {
"capability_id": String(_capability_id),
"attributes": _attributes.duplicate(true),
}
func copy() -> WorldTargetCapability:
return WorldTargetCapability.new(_capability_id, _attributes)
static func _contains_object(value: Variant) -> bool:
if value is Object:
return true
if value is Array:
for item in value:
if _contains_object(item):
return true
elif value is Dictionary:
for key in value:
if _contains_object(key) or _contains_object(value[key]):
return true
return false