38 lines
769 B
GDScript
38 lines
769 B
GDScript
extends Object
|
|
class_name RdotStore
|
|
|
|
var _proxied_value = {}
|
|
var _property_list = []
|
|
|
|
func _init(initial_value: Dictionary={}):
|
|
_proxied_value = initial_value
|
|
|
|
_property_list = _proxied_value.keys().map(func(key):
|
|
return {
|
|
"name": key,
|
|
"type": typeof(_proxied_value[key])
|
|
}
|
|
)
|
|
|
|
func _get(property):
|
|
_access_property(property)
|
|
|
|
if _proxied_value[property] is RdotStore:
|
|
return _proxied_value[property]
|
|
|
|
return _proxied_value[property].value
|
|
|
|
func _set(property, value):
|
|
_access_property(property)
|
|
|
|
_proxied_value[property].value = value
|
|
|
|
return true
|
|
|
|
func _access_property(property):
|
|
if (_proxied_value[property] is R.State) == false:
|
|
_proxied_value[property] = R.state(_proxied_value[property])
|
|
|
|
func _get_property_list():
|
|
return _property_list
|