Files

46 lines
1.3 KiB
GDScript

class_name Folder
extends RefCounted
## Папка секции. Хранит только id файлов; сами файлы — в FileRegistry.
##
## `reserved` — счётчик слотов, зарезервированных под ещё не завершённые
## загрузки. В save не пишется: после перезапуска незавершённых загрузок нет.
var id: String = ""
var section: String = ""
var name: String = ""
var file_ids: Array[String] = []
## Служебное: зарезервированные слоты (в файл сохранения не попадает).
var reserved: int = 0
func count() -> int:
return file_ids.size()
## Свободно ли место с учётом резерваций.
func has_free_slot(capacity: int = 16) -> bool:
return count() + reserved < capacity
func to_dict() -> Dictionary:
return {
"id": id,
"section": section,
"name": name,
"file_ids": file_ids.duplicate(),
}
static func from_dict(d: Dictionary):
var f = new()
f.id = str(d.get("id", ""))
f.section = str(d.get("section", ""))
f.name = str(d.get("name", ""))
var raw = d.get("file_ids", [])
if raw is Array:
for value in raw:
f.file_ids.append(str(value))
f.reserved = 0
return f