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
+63
View File
@@ -0,0 +1,63 @@
class_name WorldEntityRef
extends RefCounted
const SCHEMA_VERSION := 1
var _entity_type: StringName
var _entity_id: StringName
func _init(entity_type: StringName = &"", entity_id: StringName = &"") -> void:
_entity_type = entity_type
_entity_id = entity_id
static func create(entity_type: StringName, entity_id: StringName) -> WorldEntityRef:
var entity_ref := WorldEntityRef.new(entity_type, entity_id)
return entity_ref if entity_ref.is_valid() else null
static func from_dictionary(record_data: Dictionary) -> WorldEntityRef:
if int(record_data.get("schema_version", -1)) != SCHEMA_VERSION:
return null
if not record_data.has_all(["entity_type", "entity_id"]):
return null
return create(StringName(record_data["entity_type"]), StringName(record_data["entity_id"]))
func is_valid() -> bool:
return not _entity_type.is_empty() and not _entity_id.is_empty()
func get_entity_type() -> StringName:
return _entity_type
func get_entity_id() -> StringName:
return _entity_id
func index_key() -> String:
var type_text := String(_entity_type)
var id_text := String(_entity_id)
return "%d:%s%d:%s" % [type_text.length(), type_text, id_text.length(), id_text]
func equals(other: WorldEntityRef) -> bool:
return (
other != null
and _entity_type == other.get_entity_type()
and _entity_id == other.get_entity_id()
)
func duplicate_ref() -> WorldEntityRef:
return WorldEntityRef.new(_entity_type, _entity_id)
func to_dictionary() -> Dictionary:
return {
"schema_version": SCHEMA_VERSION,
"entity_type": String(_entity_type),
"entity_id": String(_entity_id),
}