25 lines
783 B
GDScript
25 lines
783 B
GDScript
class_name GlobalStateData
|
|
extends Resource
|
|
|
|
@export var first_version_opened : String
|
|
@export var last_version_opened : String
|
|
@export var last_unix_time_opened : int
|
|
@export var states : Dictionary
|
|
|
|
func get_state(key_name : String, state_type_path : String) -> Resource:
|
|
var new_state : Resource
|
|
var new_state_script = load(state_type_path)
|
|
if new_state_script is GDScript:
|
|
new_state = new_state_script.new()
|
|
if key_name in states:
|
|
var saved_state : Resource = states[key_name]
|
|
var saved_script = saved_state.get_script()
|
|
var new_script = new_state.get_script()
|
|
if saved_script and new_script and saved_script == new_script:
|
|
return saved_state
|
|
states[key_name] = new_state
|
|
return new_state
|
|
|
|
func has_state(key_name : String) -> bool:
|
|
return key_name in states
|