extends Resource class_name SpriteData @export var anim_speed = 0 @export var clipped = false @export var costume_layers: Array[bool] = [true, true, true, true, true, true, true, true, true, true] @export var drag_speed = 0 @export var frames = 1 @export var ignore_bounce = false #@export_global_file var path = "" @export var image: Texture @export var offset = Vector2(0, 0) @export var pos = Vector2(0, 0) @export var r_limit_max = 180 @export var r_limit_min = -180 @export var rot_drag = 0 @export var show_blink = 0 @export var show_talk = 0 @export var stretch_amount = 0.0 @export var x_amp: float = 0 @export var x_frq: float = 0 @export var y_amp: float = 0 @export var y_frq: float = 0 @export var zindex = 0 @export var children: Array[SpriteData] = [] var legacy_id var legacy_parent_id static func from_legacy_dict(data: Dictionary) -> SpriteData: var sprite = new() sprite.anim_speed = data.get("animSpeed", sprite.anim_speed) sprite.clipped = data.get("clipped", sprite.clipped) if "costumeLayers" in data: var layers: Array[bool] = [] for l in str_to_var(data["costumeLayers"]): layers.append(l == 1) # .map doesn't result in a typed array :/ sprite.costume_layers = layers sprite.drag_speed = data.get("drag", sprite.drag_speed) sprite.frames = data.get("frames", sprite.frames) sprite.ignore_bounce = data.get("ignoreBounce", sprite.ignore_bounce) if "path" in data: sprite.image = Image.load_from_file(data["path"]) if sprite.image == null: if "imageData" not in data: return null var image = Image.new() var error = image.load_png_from_buffer(Marshalls.base64_to_raw(data["imageData"])) if error != OK: return null sprite.offset = legacy_get_from_string(data, "offset", sprite.offset) sprite.pos = legacy_get_from_string(data, "pos", sprite.pos) sprite.r_limit_max = data.get("rLimitMax", sprite.r_limit_max) sprite.r_limit_min = data.get("rLimitMin", sprite.r_limit_min) sprite.rot_drag = data.get("rotDrag", sprite.rot_drag) sprite.show_blink = data.get("showBlink", sprite.show_blink) sprite.show_talk = data.get("showTalk", sprite.show_talk) sprite.stretch_amount = data.get("stretchAmount", sprite.stretch_amount) sprite.x_amp = data.get("xAmp", sprite.x_amp) sprite.x_frq = data.get("xFrq", sprite.x_frq) sprite.y_amp = data.get("yAmp", sprite.y_amp) sprite.y_frq = data.get("yFrq", sprite.y_frq) sprite.zindex = data.get("zindex", sprite.zindex) sprite.legacy_id = data.get("identification") sprite.legacy_parent_id = data.get("parentId") return sprite static func legacy_get_from_string(data: Dictionary, index: String, default: Variant) -> Variant: if index in data: return str_to_var(data[index]) return default