public void Update() { Logger.Info("Checking for update"); LastUpdateCheck = DateTimeOffset.Now; var hasUpdated = gameRepository.HasUpdated(game) || Filesystem.GetSaveFileLastWrite(game, Settings.Default.HotSeatFolder) < gameRepository.GetSaveGameLastModifiedTime(game); if (hasUpdated) { var remoteSavefileLastModified = gameRepository.GetSaveGameLastModifiedTime(game); var remoteFileIsNewer = SaveGameTime < remoteSavefileLastModified; if (remoteFileIsNewer) { Logger.Info($"Detected newer remote save file for {game}"); saveFileWatcher.EnableRaisingEvents = false; var fullSavefileName = Filesystem.GetHotSeatSaveFileFullName(Settings.Default.HotSeatFolder, Filesystem.GetSaveFileName(game)); game = gameRepository.UpdateGameAndSaveFile(game, fullSavefileName); FirePropertiesChanged(nameof(SaveGameTime), nameof(CurrentPlayer), nameof(Players), nameof(Name), nameof(IsMyTurn), nameof(LastUpdateCheck)); saveFileWatcher.EnableRaisingEvents = true; } } }
public void UploadSaveFile(Game game, string directory) { var fullSaveName = Filesystem.GetHotSeatSaveFileFullName(directory, game.SavefileName); if (!File.Exists(fullSaveName)) { throw new FileNotFoundException(null, fullSaveName); } var blobClient = CreateBlobClientForGame(game); blobClient.DeleteIfExistsAsync().GetAwaiter().GetResult(); blobClient.UploadAsync(fullSaveName).GetAwaiter().GetResult(); }
private void SetupSavefileWatcher() { if (saveFileWatcher != null) { saveFileWatcher.Dispose(); saveFileWatcher = null; } var filePath = Filesystem.GetHotSeatSaveFileFullName(Settings.Default.HotSeatFolder, game.SavefileName); if (!File.Exists(filePath)) { return; } saveFileWatcher = new FileSystemWatcher(Path.GetDirectoryName(filePath), "*.Civ6Save"); saveFileWatcher.EnableRaisingEvents = true; saveFileWatcher.NotifyFilter = NotifyFilters.LastWrite; saveFileWatcher.Changed += SaveFileWatcher_Changed; }
private bool ValidateSaveFile(string fileName = null) { fileName = fileName ?? Filesystem.GetHotSeatSaveFileFullName(Settings.Default.HotSeatFolder, Filesystem.GetSaveFileName(game)); return(File.Exists(fileName)); }