gd: added menu template
This commit is contained in:
50
addons/maaacks_game_template/base/scripts/global_state.gd
Normal file
50
addons/maaacks_game_template/base/scripts/global_state.gd
Normal file
@ -0,0 +1,50 @@
|
||||
class_name GlobalState
|
||||
extends Node
|
||||
|
||||
const SAVE_STATE_PATH = "user://global_state.tres"
|
||||
const NO_VERSION_NAME = "0.0.0"
|
||||
|
||||
static var current : GlobalStateData
|
||||
static var current_version : String
|
||||
|
||||
static func _log_opened() -> void:
|
||||
if current is GlobalStateData:
|
||||
current.last_unix_time_opened = int(Time.get_unix_time_from_system())
|
||||
|
||||
static func _log_version() -> void:
|
||||
if current is GlobalStateData:
|
||||
current_version = ProjectSettings.get_setting("application/config/version", NO_VERSION_NAME)
|
||||
if current_version.is_empty():
|
||||
current_version = NO_VERSION_NAME
|
||||
if not current.first_version_opened:
|
||||
current.first_version_opened = current_version
|
||||
current.last_version_opened = current_version
|
||||
|
||||
static func _load_current_state() -> void:
|
||||
if FileAccess.file_exists(SAVE_STATE_PATH):
|
||||
current = ResourceLoader.load(SAVE_STATE_PATH)
|
||||
if not current:
|
||||
current = GlobalStateData.new()
|
||||
|
||||
static func open() -> void:
|
||||
_load_current_state()
|
||||
_log_opened()
|
||||
_log_version()
|
||||
save()
|
||||
|
||||
static func save() -> void:
|
||||
if current is GlobalStateData:
|
||||
ResourceSaver.save(current, SAVE_STATE_PATH)
|
||||
|
||||
static func has_state(state_key : String) -> bool:
|
||||
if current is not GlobalStateData: return false
|
||||
return current.has_state(state_key)
|
||||
|
||||
static func get_state(state_key : String, state_type_path : String) -> Resource:
|
||||
if current is not GlobalStateData: return
|
||||
return current.get_state(state_key, state_type_path)
|
||||
|
||||
static func reset() -> void:
|
||||
if current is not GlobalStateData: return
|
||||
current.states.clear()
|
||||
save()
|
Reference in New Issue
Block a user