Blobby/src/Autoload/GlobalState.gd

132 lines
3.6 KiB
GDScript

extends Node
#export(Dictionary) var progress_dict := {} setget set_progress, get_progress
#export(int) var wallet := 0 setget set_wallet
#export(Dictionary) var input_map
#export(bool) var show_tutorial
export(Resource) var gsr
var sound_library = {}
func _ready():
load_sounds()
func load_sounds() -> void:
var paths = ["res://assets/sounds", "res://assets/music"]
for path in paths:
var dir = Directory.new()
dir.open(path)
dir.list_dir_begin()
while true:
var file_name = dir.get_next()
if file_name == "":
break
var sound_file
if file_name.ends_with(".import"):
sound_file = load(path + "/" + file_name.split(".import")[0])
sound_library[sound_file.resource_path] = sound_file
dir.list_dir_end()
func set_progress(value) -> void:
gsr.progress_dict = value
SaveManager.save_default()
func get_progress() -> Dictionary:
return gsr.progress_dict
func save() -> void:
SaveManager.save_default()
func get_level_completed(levelName: String) -> bool:
if gsr.progress_dict.has(levelName) && gsr.progress_dict[levelName].has("levelcompleted"):
return gsr.progress_dict[levelName]["levelcompleted"]
else:
return false
func set_level_completed(levelName: String, state: bool) -> void:
if !gsr.progress_dict.has(levelName):
gsr.progress_dict[levelName] = {}
gsr.progress_dict[levelName]["levelcompleted"] = state
SaveManager.save_default()
func set_leveltime(levelName: String, time: float) -> void:
if !gsr.progress_dict.has(levelName):
gsr.progress_dict[levelName] = {}
gsr.progress_dict[levelName]["leveltime"] = time
SaveManager.save_default()
func get_level_time(levelName: String) -> float:
if gsr.progress_dict.has(levelName) && gsr.progress_dict[levelName].has("leveltime"):
return gsr.progress_dict[levelName]["leveltime"]
else:
return INF
func set_uncompleted_level_time(levelName: String, time: float) -> void:
if !gsr.progress_dict.has(levelName):
gsr.progress_dict[levelName] = {}
gsr.progress_dict[levelName]["uncompletedleveltime"] = time
SaveManager.save_default()
func get_uncompleted_level_time(levelName: String) -> float:
if gsr.progress_dict.has(levelName) && gsr.progress_dict[levelName].has("uncompletedleveltime"):
return gsr.progress_dict[levelName]["uncompletedleveltime"]
else:
return INF
func set_savepoint(levelName: String, position: Vector2) -> void:
#TODO You can free a frog, go to the checkpoint and it will be
# saved as freed forever
if !gsr.progress_dict.has(levelName):
gsr.progress_dict[levelName] = {}
gsr.progress_dict[levelName]["savepoint"] = position
SaveManager.save_default()
func remove_savepoint(levelName: String) -> void:
if !gsr.progress_dict.has(levelName):
return
gsr.progress_dict[levelName].erase(levelName)
SaveManager.save_default()
func get_property_value(levelName: String, propertyName: String) -> int:
if gsr.progress_dict.has(levelName) && gsr.progress_dict[levelName].has(propertyName):
return gsr.progress_dict[levelName][propertyName]
else:
return 0
func get_savepoint(levelName: String) -> Vector2:
if gsr.progress_dict.has(levelName) && gsr.progress_dict[levelName].has("savepoint"):
return gsr.progress_dict[levelName]["savepoint"]
else:
return Vector2()
# TODO This is permanent immediatly
func set_wallet(value) -> void:
gsr.wallet = value
SaveManager.save_default()
func reinstate() -> void:
if gsr.input_map.size() <= 1:
InputMap.load_from_globals()
return
for action in gsr.input_map:
InputMap.action_erase_events(action)
# if(gsr.input_map[action].size() > 0 && gsr.input_map[action].size() < 2):
# InputMap.load_from_globals()
for input_event in gsr.input_map[action]:
InputMap.action_add_event(action, input_event)