62 lines
1.9 KiB
C#
62 lines
1.9 KiB
C#
using LANCommander.SDK;
|
|
using Playnite.SDK;
|
|
using Playnite.SDK.Models;
|
|
using Playnite.SDK.Plugins;
|
|
|
|
namespace LANCommander.PlaynitePlugin
|
|
{
|
|
public class LANCommanderSaveController : ControllerBase
|
|
{
|
|
private static readonly ILogger Logger;
|
|
|
|
private LANCommanderLibraryPlugin Plugin;
|
|
|
|
public LANCommanderSaveController(LANCommanderLibraryPlugin plugin, Game game) : base(game)
|
|
{
|
|
Name = "Download save using LANCommander";
|
|
Plugin = plugin;
|
|
}
|
|
|
|
public void Download(Game game)
|
|
{
|
|
if (game != null)
|
|
{
|
|
Plugin.PlayniteApi.Dialogs.ActivateGlobalProgress(progress =>
|
|
{
|
|
progress.ProgressMaxValue = 100;
|
|
progress.CurrentProgressValue = 0;
|
|
|
|
var saveManager = new GameSaveManager(Plugin.LANCommanderClient);
|
|
|
|
saveManager.OnDownloadProgress += (downloadProgress) =>
|
|
{
|
|
progress.CurrentProgressValue = downloadProgress.ProgressPercentage;
|
|
};
|
|
|
|
saveManager.OnDownloadComplete += (downloadComplete) =>
|
|
{
|
|
progress.CurrentProgressValue = 100;
|
|
};
|
|
|
|
saveManager.Download(game.InstallDirectory);
|
|
|
|
// Lock the thread until the download is done
|
|
while (progress.CurrentProgressValue != 100) { }
|
|
},
|
|
new GlobalProgressOptions("Downloading latest save...")
|
|
{
|
|
IsIndeterminate = false,
|
|
Cancelable = false
|
|
});
|
|
}
|
|
}
|
|
|
|
public void Upload(Game game)
|
|
{
|
|
var saveManager = new GameSaveManager(Plugin.LANCommanderClient);
|
|
|
|
saveManager.Upload(game.InstallDirectory);
|
|
}
|
|
}
|
|
}
|