58 lines
1.3 KiB
GDScript
58 lines
1.3 KiB
GDScript
@tool
|
|
@icon("res://addons/yaml/icon.svg")
|
|
|
|
class_name YAMLResource extends Resource
|
|
# This is a lightweight wrapper around YAML text files
|
|
# It doesn't process the YAML content, just holds the raw text
|
|
|
|
var text_content: String = ""
|
|
var file_path: String = ""
|
|
|
|
func _init(path: String = "", content: String = "") -> void:
|
|
file_path = path
|
|
text_content = content
|
|
if not path.is_empty():
|
|
resource_path = path
|
|
|
|
func get_text() -> String:
|
|
return text_content
|
|
|
|
func set_text(new_text: String) -> void:
|
|
text_content = new_text
|
|
emit_changed()
|
|
|
|
func get_file_path() -> String:
|
|
return file_path
|
|
|
|
func load_from_file() -> Error:
|
|
if file_path.is_empty():
|
|
return ERR_FILE_NOT_FOUND
|
|
|
|
var file := FileAccess.open(file_path, FileAccess.READ)
|
|
if not file:
|
|
return FileAccess.get_open_error()
|
|
|
|
text_content = file.get_as_text()
|
|
file.close()
|
|
return OK
|
|
|
|
func save_to_file() -> Error:
|
|
if file_path.is_empty():
|
|
return ERR_FILE_NOT_FOUND
|
|
|
|
var file := FileAccess.open(file_path, FileAccess.WRITE)
|
|
if not file:
|
|
return FileAccess.get_open_error()
|
|
|
|
file.store_string(text_content)
|
|
file.close()
|
|
return OK
|
|
|
|
func serialize() -> Variant:
|
|
push_error("Child of YAMLResource needs to override serialize")
|
|
return null
|
|
|
|
static func deserialize(data: Variant) -> Variant:
|
|
push_error("Child of YAMLResource needs to override deserialize")
|
|
return null
|