class_name VillageStateRecord extends RefCounted const SCHEMA_VERSION := 1 var data: Dictionary func _init(record_data: Dictionary = {}) -> void: data = record_data.duplicate(true) static func capture(village: SimVillage) -> VillageStateRecord: return VillageStateRecord.new({ "schema_version": SCHEMA_VERSION, "food": village.food, "wood": village.wood, "safety": village.safety, "knowledge": village.knowledge }) static func from_dictionary(record_data: Dictionary) -> VillageStateRecord: if int(record_data.get("schema_version", -1)) != SCHEMA_VERSION: return null if not record_data.has_all(["food", "wood", "safety", "knowledge"]): return null return VillageStateRecord.new(record_data) func restore(debug_logs: bool) -> SimVillage: var village := SimVillage.new() village.debug_logs = debug_logs village.food = float(data["food"]) village.wood = float(data["wood"]) village.safety = float(data["safety"]) village.knowledge = float(data["knowledge"]) village.update_modifiers() village.update_priorities() return village func to_dictionary() -> Dictionary: return data.duplicate(true)