SessionZero-Client/sessionzero-client/scripts/models/datapack_model.gd
2025-10-21 18:37:33 -05:00

64 lines
1.5 KiB
GDScript

extends RefCounted
class_name DatapackModel
var guid: Guid
var name: String
var version: String
var author: String
var license: String
var description: String
var icon: String
var created_at: DateTime
var session_zero_version: String
var dependencies: Array[DatapackDependency]
func _init() -> void:
guid = Guid.new_guid()
created_at = DateTime.now()
func to_dict() -> Dictionary:
var deps_arr: Array = []
for d in dependencies:
deps_arr.append(d.to_dict())
return {
"guid": guid.to_string(),
"name": name,
"version": version,
"author": author,
"license": license,
"description": description,
"icon": icon,
"created_at": created_at.to_string(),
"session_zero_version": session_zero_version,
"dependencies": deps_arr
}
# TODO: Implement this
static func from_dict(dict: Dictionary) -> DatapackModel:
var dp: DatapackModel = DatapackModel.new()
dp.name = dict.get("name", "")
dp.version = dict.get("version", "")
dp.author = dict.get("author", "")
dp.license = dict.get("license", "")
dp.description = dict.get("description", "")
dp.icon = dict.get("icon", "")
dp.session_zero_version = dict.get("session_zero_version", "")
if dict.has("guid"):
dp.guid = Guid.from_string(dict["guid"])
else:
return null
dp.dependencies.clear()
if dict.has("dependencies"):
var deps_arr: Array = dict["dependencies"]
for d_dict in deps_arr:
var dependency: DatapackDependency = DatapackDependency.from_dict(d_dict)
dp.dependencies.append(dependency)
return dp