RPGH_Engine/data_management/storable.gd

36 lines
782 B
GDScript3
Raw Normal View History

2021-05-19 16:22:05 +02:00
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 _initial_value = null
2021-05-20 15:59:04 +02:00
var _data
2021-05-19 16:22:05 +02:00
func _init(key: String, initial_value = null, map = null, event = null):
2021-05-20 15:59:04 +02:00
_data = RPGH.get_node("DataManager").global_data
2021-05-19 16:22:05 +02:00
_initial_value = initial_value
2021-05-20 15:59:04 +02:00
var map_key = ""
var event_key = ""
2021-05-19 16:22:05 +02:00
if map != null:
yield(map, "ready")
map_key = map.name + "_"
if event != null:
event_key = event.name + "_"
_key = map_key + event_key + key
func _set_value(new_value):
if new_value == _initial_value:
2021-05-20 15:59:04 +02:00
_data.erase(_key)
2021-05-19 16:22:05 +02:00
else:
2021-05-20 15:59:04 +02:00
RPGH.get_node("DataManager").write_in_dictionary(_key, new_value)
2021-05-19 16:22:05 +02:00
func _get_value():
2021-05-20 15:59:04 +02:00
if _key in _data:
return _data[_key]
else:
return _initial_value