PNGTuber-Plus/scripts/avatar_data.gd

23 lines
751 B
GDScript3
Raw Normal View History

2025-04-30 21:31:31 +02:00
extends Resource
class_name AvatarData
@export var sprites: Array[SpriteData] = []
2025-04-30 23:39:00 +02:00
static func from_legacy_json(data: String) -> AvatarData:
var sprites: Array[SpriteData] = []
var json_data = JSON.parse_string(data)
if json_data is not Dictionary: return null
for sprite_data in json_data.values():
if sprite_data is not Dictionary: return null
var sprite = SpriteData.from_legacy_dict(sprite_data)
sprites.append(sprite)
var avatar = new()
for sprite in sprites:
if sprite.legacy_parent_id != null:
var parent_index = sprites.find_custom(func(x): return x.legacy_id == sprite.legacy_parent_id)
if parent_index != -1:
sprites[parent_index].children.append(sprite)
continue
avatar.sprites.append(sprite)
return avatar