RPGH_Engine/data_management/storable.gd
2021-05-19 16:22:05 +02:00

45 lines
905 B
GDScript

extends RPGH_DataManager
# Just keeps a value that is stored over multiple
# maps and sessions.
var value setget _set_value, _get_value
var _key = ""
var _value = null
var map_key = ""
var event_key = ""
var _initial_value = null
var data
func _init(key: String, initial_value = null, map = null, event = null):
data = RPGH.get_node("DataManager").global_data
_initial_value = initial_value
if map != null:
yield(map, "ready")
map_key = map.name + "_"
if event != null:
event_key = event.name + "_"
_key = map_key + event_key + key
_value = initial_value
if !data.has(_key):
RPGH.get_node("DataManager").write_in_dictionary(_key, initial_value)
return
else:
return
func _set_value(new_value):
_value = new_value
if new_value == _initial_value:
data.erase(_key)
else:
RPGH.get_node("DataManager").write_in_dictionary(_key, _value)
func _get_value():
return _value