diff --git a/src/dev-util/steamworks.gd b/src/dev-util/steamworks.gd index 39926984..c5783202 100644 --- a/src/dev-util/steamworks.gd +++ b/src/dev-util/steamworks.gd @@ -1,10 +1,39 @@ extends Node -var has_initialized +var is_initialized: bool = false +var steam_cloud_on: bool = false +var save_list: Dictionary[String, SaveGame] func _ready() -> void: var initialize_response: Dictionary = Steam.steamInitEx() if State.disconnect_steam: Steam.steamShutdown() + elif initialize_response["status"] == Steam.STEAM_API_INIT_RESULT_OK: + steam_cloud_on = Steam.isCloudEnabledForAccount() && Steam.isCloudEnabledForApp() + + Steam.local_file_changed.connect(_on_steam_cloud_file_changed) + Steam.inputInit() + Steam.enableDeviceCallbacks() + SteamInputManager.init() + + is_initialized = true else: - has_initialized = initialize_response["status"] == 0 + SteamInputManager.process_mode = Node.PROCESS_MODE_DISABLED + +func _on_steam_cloud_file_changed() -> void: + if OS.has_feature("debug"): + print("Received Steam localFileChanged callback...") + + var paths_changed: PackedStringArray = [] + var paths_deleted: PackedStringArray = [] + + for i: int in Steam.getLocalFileChangeCount(): + var result: Dictionary = Steam.getLocalFileChange(i) + if result["path_type"] == Steam.FILE_PATH_TYPE_ABSOLUTE: + if result["file"].ends_with("png"): pass + if result["change_type"] == Steam.LOCAL_FILE_CHANGE_FILE_UPDATED: + paths_changed.append(result["file"]) + elif result["change_type"] == Steam.LOCAL_FILE_CHANGE_FILE_DELETED: + paths_deleted.append(result["file"]) + + Main.handle_save_update(paths_changed, paths_deleted)