public UplayMetadataProvider()
 {
     try
     {
         productInfo = Uplay.GetLocalProductCache();
     }
     catch (Exception e)
     {
         logger.Error(e, "Failed to get Uplay product info from cache.");
     }
 }
예제 #2
0
        public List <GameInfo> GetLibraryGames()
        {
            var games        = new List <GameInfo>();
            var dlcsToIgnore = new List <uint>();

            foreach (var item in Uplay.GetLocalProductCache())
            {
                if (item.root.addons.HasItems())
                {
                    foreach (var dlc in item.root.addons.Select(a => a.id))
                    {
                        dlcsToIgnore.AddMissing(dlc);
                    }
                }

                if (item.root.third_party_platform != null)
                {
                    continue;
                }

                if (item.root.is_ulc)
                {
                    dlcsToIgnore.AddMissing(item.uplay_id);
                    continue;
                }

                if (dlcsToIgnore.Contains(item.uplay_id))
                {
                    continue;
                }

                if (item.root.start_game == null)
                {
                    continue;
                }

                var newGame = new GameInfo
                {
                    Name            = item.root.name.RemoveTrademarks(),
                    GameId          = item.uplay_id.ToString(),
                    BackgroundImage = item.root.background_image,
                    Icon            = item.root.icon_image,
                    CoverImage      = item.root.thumb_image,
                    Source          = "Uplay",
                    Platform        = "PC"
                };

                games.Add(newGame);
            }

            return(games);
        }