Files
seeding-planets/common/game_info/game_info.gd

74 lines
2.1 KiB
GDScript

extends Node
const SAVE_GAME_LOCATION = "res://stw_demo_save.tres"
const SAVE_SETTINGS_LOCATION = "res://stw_settings.tres"
var game_loaded = false
signal game_data_updated(g : GameData)
var game_data : GameData :
set(v):
game_data = v
game_data_updated.emit(v)
var settings_data : SettingsData
func load_game_data() -> GameData:
if ResourceLoader.exists(SAVE_GAME_LOCATION):
game_loaded = true
game_data = ResourceLoader.load(SAVE_GAME_LOCATION).duplicate_deep()
else :
game_data = GameData.new()
save_game_data()
return game_data
func save_game_data():
if game_data:
ResourceSaver.save(game_data, SAVE_GAME_LOCATION)
func load_settings_data() -> SettingsData:
if ResourceLoader.exists(SAVE_SETTINGS_LOCATION):
print("settings exists")
settings_data = ResourceLoader.load(SAVE_SETTINGS_LOCATION).duplicate_deep()
else :
settings_data = SettingsData.new()
save_settings()
return settings_data
func save_settings():
if settings_data:
ResourceSaver.save(settings_data, SAVE_SETTINGS_LOCATION)
func restart_game_data():
game_data = GameData.new()
save_game_data()
func _init():
load_game_data()
load_settings_data()
update_language_settings(settings_data)
update_video_settings(settings_data)
settings_data.language_changed.connect(_on_settings_language_changed)
settings_data.video_changed.connect(_on_settings_video_changed)
func _on_settings_video_changed(s : SettingsData):
update_video_settings(s)
func _on_settings_language_changed(s : SettingsData):
update_language_settings(s)
func update_language_settings(s : SettingsData):
TranslationServer.set_locale(s.language)
func update_video_settings(s : SettingsData):
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN if s.full_screen else DisplayServer.WINDOW_MODE_WINDOWED)
func update_input(action : String, old_event : InputEvent, event : InputEvent):
InputMap.action_erase_event(action, old_event)
InputMap.action_add_event(action, event)