64 lines
1.5 KiB
GDScript
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
|