146 lines
4.1 KiB
GDScript
146 lines
4.1 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()
|
|
|
|
func was_level_touched(levelName: String) -> bool:
|
|
if OS.is_debug_build():
|
|
return true
|
|
if !gsr.progress_dict.has(levelName) || !gsr.progress_dict[levelName].has("touched"):
|
|
return false
|
|
return gsr.progress_dict[levelName]["touched"]
|
|
|
|
func touch_level(levelName: String) -> void:
|
|
if !gsr.progress_dict.has(levelName):
|
|
gsr.progress_dict[levelName] = {}
|
|
gsr.progress_dict[levelName]["touched"] = true
|
|
|
|
|
|
# TODO This is permanent immediatly
|
|
func set_wallet(value) -> void:
|
|
gsr.wallet = value
|
|
SaveManager.save_default()
|
|
|
|
func get_wallet() -> int:
|
|
return gsr.wallet
|
|
|
|
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)
|