diff --git a/README.md b/README.md index d7f2759..f666f7c 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Legend: ✅ Confirmed working, ❔ Unconfirmed, - Not available in the store | Final Fantasy XV | ✅ | - | | Atomic Heart | ✅ | - | | Chorus | ✅ | ❔ | +| SnowRunner | ❔ | ❔ | ## Running ⚠️ **NOTE**: If the save file extraction fails, wait for a bit and try again. The Xbox cloud save sync can take some time and produce invalid files while syncing is in progress. diff --git a/main.py b/main.py index 3f360b9..674ec04 100644 --- a/main.py +++ b/main.py @@ -31,7 +31,8 @@ "A Plague Tale: Requiem": "FocusHomeInteractiveSA.APlagueTaleRequiem-Windows_4hny5m903y3g0", "High on Life": "2637SquanchGamesInc.HighonLife_mh7dg3tfmz2cj", "Lies of P": "Neowiz.3616725F496B_r4z3116tdh636", - "Totally Accurate Battle Simulator": "LandfallGames.TotallyAccurateBattleSimulator_r2vq7k2y0v9ct" + "Totally Accurate Battle Simulator": "LandfallGames.TotallyAccurateBattleSimulator_r2vq7k2y0v9ct", + "SnowRunner": "FocusHomeInteractiveSA.SnowRunnerWindows10_4hny5m903y3g0" } filetime_epoch = datetime(1601, 1, 1, tzinfo=timezone.utc) @@ -267,6 +268,15 @@ def get_save_paths(store_pkg_name, containers, temp_dir): for c_file in container["files"]: save_meta.append((c_file["name"] + '.sav', c_file["path"])) + elif store_pkg_name in [supported_xgp_apps["SnowRunner"]]: + # Handle SnowRunner saves just as Chorus above, but with different extension. + # All of these games use containers in a "1 container, n files" manner (1cnf), where there exists only one + # container that contains all the savefiles. + # The save files seem to be the same as in the Steam version. + container = containers[0] + for c_file in container["files"]: + save_meta.append((c_file["name"] + '.cfg', c_file["path"])) + elif store_pkg_name == supported_xgp_apps["Control"]: # Handle Control saves # Control uses container in a "n containers, n files" manner (ncnf),