platformer-game-test/src/Singletons/GameState.gd

97 lines
1.8 KiB
GDScript

extends Node
enum States{
INTRO,
MAIN_MENU,
GAME_OVER,
CONTROLS,
GAME,
PUSE,
STATS,
CUT_SCENE,
}
var _SAVE_FILE_PATH = "user://data"
# Change key in release
var _ENCRYPTION_KEY = "fas3uyf076HJsiUDs24dfI9"
var _SCENES := {
States.MAIN_MENU: "res://src/Menu/MainMenu.tscn",
States.GAME: "res://src/Levels/LevelTemplate/LevelTemplate.tscn",
}
var _data := {
"statistics": {
"deaths": 0,
"clears": 0,
"runs": 0,
"total_time_played": 0,
"orbs": 0,
"coins": 0,
},
"heigh_score": {
"deaths": 0,
"score": 0,
"cleard": false,
"coins": 0,
"orbs": 0,
"time": 0,
}
}
var _run_data:= {
"deaths": 0,
"coins": 0,
"orbs": 0,
"time": 0,
"score": 0
}
var _state = States.INTRO
func _ready() -> void:
load_data()
print(get_statistics())
func load_data():
var data_file = File.new()
var e = data_file.open_encrypted_with_pass(_SAVE_FILE_PATH, File.READ, _ENCRYPTION_KEY)
if e != 0:
data_file.close()
save_data()
else:
_data = data_file.get_var()
data_file.close()
pass
func save_data():
var data_file = File.new()
print(data_file.open_encrypted_with_pass(_SAVE_FILE_PATH, File.WRITE, _ENCRYPTION_KEY))
print(data_file.store_var(_data))
data_file.close()
pass
func start_new_game():
for key in _run_data.keys():
_run_data[key] = 0
_state = States.GAME
_data.statistics.runs += 1
save_data()
get_tree().change_scene_to(load(_SCENES[_state]))
func get_heigh_score():
return _data.heigh_score.duplicate()
func get_statistics():
return _data.statistics.duplicate()
func get_run_data():
return _run_data.duplicate()
func go_to_main_menu():
_state = States.MAIN_MENU
save_data()
get_tree().change_scene_to(load(_SCENES[_state]))
func player_died():
_run_data.deaths += 1
_data.statistics.deaths += 1
func coin_collected():
_run_data.coins += 10
_data.statistics.coins += 10