Ejemplo n.º 1
0
        public void UpdateOwnedGames(Provider provider)
        {
            List <IGame> importedGames = null;

            switch (provider)
            {
            case Provider.Custom:
                return;

            case Provider.GOG:
                importedGames = gogLibrary.GetLibraryGames();
                break;

            case Provider.Origin:
                importedGames = originLibrary.GetLibraryGames();
                break;

            case Provider.Steam:
                importedGames = steamLibrary.GetLibraryGames(SteamUserName);
                break;

            case Provider.Uplay:
                return;

            default:
                return;
            }

            foreach (var game in importedGames)
            {
                var existingGame = GamesCollection.FindOne(a => a.ProviderId == game.ProviderId && a.Provider == provider);
                if (existingGame == null)
                {
                    logger.Info("Adding new game {0} into library from {1} provider", game.ProviderId, game.Provider);
                    AssignPcPlatform(game);
                    AddGame(game);
                }
            }

            // Delete games that are no longer in library
            foreach (IGame dbGame in GamesCollection.Find(a => a.Provider == provider))
            {
                if (importedGames.FirstOrDefault(a => a.ProviderId == dbGame.ProviderId) == null)
                {
                    // Except games that are installed, in case that game is part of free weekend, beta or similar events
                    if (dbGame.IsInstalled)
                    {
                        continue;
                    }

                    logger.Info("Removing game {0} which is no longer in {1} library", dbGame.ProviderId, dbGame.Provider);
                    DeleteGame(dbGame);
                }
            }
        }
Ejemplo n.º 2
0
        public void ImportCategories(List <IGame> sourceGames)
        {
            foreach (var game in sourceGames)
            {
                var dbGame = GamesCollection.FindOne(a => a.Provider == game.Provider && a.ProviderId == game.ProviderId);
                if (dbGame == null)
                {
                    continue;
                }

                dbGame.Categories = game.Categories;
                UpdateGameInDatabase(dbGame);
            }
        }
Ejemplo n.º 3
0
        public List <IGame> UpdateOwnedGames(Provider provider)
        {
            List <IGame> importedGames = null;
            List <IGame> newGames      = new List <IGame>();

            switch (provider)
            {
            case Provider.Custom:
                return(newGames);

            case Provider.GOG:
                importedGames = gogLibrary.GetLibraryGames();
                break;

            case Provider.Origin:
                importedGames = originLibrary.GetLibraryGames();
                break;

            case Provider.Steam:
                importedGames = steamLibrary.GetLibraryGames(AppSettings.SteamSettings);
                break;

            case Provider.Uplay:
                return(newGames);

            case Provider.BattleNet:
                importedGames = battleNetLibrary.GetLibraryGames();
                break;

            default:
                return(newGames);
            }

            foreach (var game in importedGames)
            {
                var existingGame = GamesCollection.FindOne(a => a.ProviderId == game.ProviderId && a.Provider == provider);
                if (existingGame == null)
                {
                    logger.Info("Adding new game {0} into library from {1} provider", game.ProviderId, game.Provider);
                    AssignPcPlatform(game);
                    AddGame(game);
                    newGames.Add(game);
                }
            }

            return(newGames);
        }
Ejemplo n.º 4
0
        public List <IGame> UpdateInstalledGames(Provider provider)
        {
            List <IGame> installedGames = null;
            List <IGame> newGames       = new List <IGame>();

            switch (provider)
            {
            case Provider.Custom:
                return(newGames);

            case Provider.GOG:
                var source = InstalledGamesSource.Registry;
                if (AppSettings.GOGSettings.RunViaGalaxy)
                {
                    source = InstalledGamesSource.Galaxy;
                }

                installedGames = gogLibrary.GetInstalledGames(source);
                break;

            case Provider.Origin:
                installedGames = originLibrary.GetInstalledGames(true);
                break;

            case Provider.Steam:
                installedGames = steamLibrary.GetInstalledGames();
                break;

            case Provider.Uplay:
                installedGames = uplayLibrary.GetInstalledGames();
                break;

            case Provider.BattleNet:
                installedGames = battleNetLibrary.GetInstalledGames();
                break;

            default:
                return(newGames);
            }

            foreach (var newGame in installedGames)
            {
                var existingGame = GamesCollection.FindOne(a => a.ProviderId == newGame.ProviderId && a.Provider == provider);
                if (existingGame == null)
                {
                    logger.Info("Adding new installed game {0} from {1} provider", newGame.ProviderId, newGame.Provider);
                    AssignPcPlatform(newGame);
                    AddGame(newGame);
                    newGames.Add(newGame);
                }
                else
                {
                    existingGame.PlayTask         = newGame.PlayTask;
                    existingGame.InstallDirectory = newGame.InstallDirectory;

                    // Don't import custom action if imported already (user may changed them manually and this would overwrite it)
                    if (existingGame.OtherTasks?.FirstOrDefault(a => a.IsBuiltIn) == null && newGame.OtherTasks != null)
                    {
                        if (existingGame.OtherTasks == null)
                        {
                            existingGame.OtherTasks = new ObservableCollection <GameTask>();
                        }
                        else
                        {
                            existingGame.OtherTasks = new ObservableCollection <GameTask>(existingGame.OtherTasks.Where(a => !a.IsBuiltIn));
                        }

                        foreach (var task in newGame.OtherTasks.Reverse())
                        {
                            existingGame.OtherTasks.Insert(0, task);
                        }

                        if (provider == Provider.Steam)
                        {
                            foreach (var task in existingGame.OtherTasks.Where(a => a.Type == GameTaskType.File && a.IsBuiltIn))
                            {
                                task.WorkingDir = newGame.InstallDirectory;
                            }
                        }
                    }

                    UpdateGameInDatabase(existingGame);
                }
            }

            foreach (var game in GamesCollection.Find(a => a.Provider == provider))
            {
                if (installedGames.FirstOrDefault(a => a.ProviderId == game.ProviderId) == null)
                {
                    game.PlayTask         = null;
                    game.InstallDirectory = string.Empty;
                    UpdateGameInDatabase(game);
                }
            }

            return(newGames);
        }