You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.6 KiB
56 lines
1.6 KiB
6 months ago
|
@tool
|
||
|
extends ResourceFormatLoader
|
||
|
|
||
|
# Needed by godot
|
||
|
class_name DialogicCharacterFormatLoader
|
||
|
|
||
|
|
||
|
# returns all excepted extenstions
|
||
|
func _get_recognized_extensions() -> PackedStringArray:
|
||
|
return PackedStringArray(["dch"])
|
||
|
|
||
|
|
||
|
# Returns "Rrsource" if this file can/should be loaded by this script
|
||
|
func _get_resource_type(path: String) -> String:
|
||
|
var ext = path.get_extension().to_lower()
|
||
|
if ext == "dch":
|
||
|
return "Resource"
|
||
|
|
||
|
return ""
|
||
|
|
||
|
|
||
|
# Return true if this type is handled
|
||
|
func _handles_type(typename: StringName) -> bool:
|
||
|
return ClassDB.is_parent_class(typename, "Resource")
|
||
|
|
||
|
|
||
|
# parse the file and return a resource
|
||
|
func _load(path: String, original_path: String, use_sub_threads: bool, cache_mode: int):
|
||
|
# print('[Dialogic] Reimporting character "' , path, '"')
|
||
|
var file := FileAccess.open(path, FileAccess.READ)
|
||
|
|
||
|
if not file:
|
||
|
# For now, just let editor know that for some reason you can't
|
||
|
# read the file.
|
||
|
print("[Dialogic] Error opening file:", FileAccess.get_open_error())
|
||
|
return FileAccess.get_open_error()
|
||
|
|
||
|
return dict_to_inst(str_to_var(file.get_as_text()))
|
||
|
|
||
|
|
||
|
func _get_dependencies(path:String, add_type:bool):
|
||
|
var depends_on : PackedStringArray
|
||
|
var character:DialogicCharacter = load(path)
|
||
|
for p in character.portraits.values():
|
||
|
if 'path' in p and p.path:
|
||
|
depends_on.append(p.path)
|
||
|
return depends_on
|
||
|
|
||
|
func _rename_dependencies(path: String, renames: Dictionary):
|
||
|
var character:DialogicCharacter = load(path)
|
||
|
for p in character.portraits:
|
||
|
if 'path' in character.portraits[p] and character.portraits[p].path in renames:
|
||
|
character.portraits[p].path = renames[character.portraits[p].path]
|
||
|
ResourceSaver.save(character, path)
|
||
|
return OK
|