Exemplo n.º 1
0
 public MetadataSource(MetadataPlugin plugin)
 {
     if (plugin is null)
     {
         throw new ArgumentNullException(nameof(plugin));
     }
     metadataPlugin = plugin;
 }
Exemplo n.º 2
0
        public void DownloadPluginData(MetadataPlugin plugin)
        {
            var res = dialogs.ActivateGlobalProgress((args) =>
            {
                var provider = plugin.GetMetadataProvider(new MetadataRequestOptions(EditingGame, false));
                if (provider != null)
                {
                    try
                    {
                        var fieldArgs = new GetMetadataFieldArgs {
                            CancelToken = args.CancelToken
                        };
                        var metadata = new GameMetadata
                        {
                            Name            = provider.GetName(fieldArgs),
                            Genres          = provider.GetGenres(fieldArgs)?.Where(a => a != null).ToHashSet(),
                            ReleaseDate     = provider.GetReleaseDate(fieldArgs),
                            Developers      = provider.GetDevelopers(fieldArgs)?.Where(a => a != null).ToHashSet(),
                            Publishers      = provider.GetPublishers(fieldArgs)?.Where(a => a != null).ToHashSet(),
                            Tags            = provider.GetTags(fieldArgs)?.Where(a => a != null).ToHashSet(),
                            Features        = provider.GetFeatures(fieldArgs)?.Where(a => a != null).ToHashSet(),
                            Description     = provider.GetDescription(fieldArgs),
                            Links           = provider.GetLinks(fieldArgs)?.Where(a => a != null).ToList(),
                            CriticScore     = provider.GetCriticScore(fieldArgs),
                            CommunityScore  = provider.GetCommunityScore(fieldArgs),
                            AgeRatings      = provider.GetAgeRatings(fieldArgs)?.Where(a => a != null).ToHashSet(),
                            Series          = provider.GetSeries(fieldArgs)?.Where(a => a != null).ToHashSet(),
                            Regions         = provider.GetRegions(fieldArgs)?.Where(a => a != null).ToHashSet(),
                            Platforms       = provider.GetPlatforms(fieldArgs)?.Where(a => a != null).ToHashSet(),
                            Icon            = provider.GetIcon(fieldArgs),
                            CoverImage      = provider.GetCoverImage(fieldArgs),
                            BackgroundImage = provider.GetBackgroundImage(fieldArgs)
                        };

                        Application.Current.Dispatcher.Invoke(() => PreviewGameData(ConvertGameInfo(metadata)));
                    }
                    finally
                    {
                        provider.Dispose();
                    }
                }
            }, new GlobalProgressOptions(LOC.DownloadingLabel)
            {
                IsIndeterminate = true,
                Cancelable      = true
            });

            if (res.Error != null)
            {
                logger.Error(res.Error, string.Format("Failed to download metadata, {0}, {1}", Game.PluginId, Game.GameId));
                dialogs.ShowMessage(
                    string.Format(resources.GetString("LOCMetadataDownloadError"), res.Error.Message),
                    resources.GetString("LOCDownloadError"),
                    MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Exemplo n.º 3
0
        public MetadataSession Start()
        {
            MetadataHooks  hooks  = new MetadataHooks();
            MetadataPlugin plugin = new MetadataPlugin(hooks);

            CoordinatorService coordinator =
                new CoordinatorBuilder()
                .WithHash(FileHash.Random())
                .WithPipeline(pipeline)
                .WithPlugin(plugin)
                .Build();

            return(new MetadataSession(coordinator, plugin));
        }
Exemplo n.º 4
0
        public MenuGenerator(IAppContext context, MetadataPlugin plugin)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            // if (pluginManager == null) throw new ArgumentNullException("pluginManager");

            _plugin  = plugin;
            _context = context;

            _menuManager     = _context.MainView.RibbonManager;
            _commands        = new YutaiCommands(_context, plugin.Identity);
            _commands.Plugin = plugin;
            InitMenus();
        }
        public async void DownloadPluginData(MetadataPlugin plugin)
        {
            ProgressVisible = true;

            await Task.Run(() =>
            {
                try
                {
                    var provider = plugin.GetMetadataProvider(new MetadataRequestOptions(EditingGame, false));
                    if (provider != null)
                    {
                        try
                        {
                            var gameInfo = new GameInfo
                            {
                                Name           = provider.GetName(),
                                Genres         = provider.GetGenres(),
                                ReleaseDate    = provider.GetReleaseDate(),
                                Developers     = provider.GetDevelopers(),
                                Publishers     = provider.GetPublishers(),
                                Tags           = provider.GetTags(),
                                Features       = provider.GetFeatures(),
                                Description    = provider.GetDescription(),
                                Links          = provider.GetLinks(),
                                CriticScore    = provider.GetCriticScore(),
                                CommunityScore = provider.GetCommunityScore(),
                                AgeRating      = provider.GetAgeRating(),
                                Series         = provider.GetSeries(),
                                Region         = provider.GetRegion(),
                                Platform       = provider.GetPlatform()
                            };

                            var metadata = new GameMetadata
                            {
                                GameInfo        = gameInfo,
                                Icon            = provider.GetIcon(),
                                CoverImage      = provider.GetCoverImage(),
                                BackgroundImage = provider.GetBackgroundImage()
                            };

                            Application.Current.Dispatcher.Invoke(() => PreviewGameData(metadata));
                        }
                        finally
                        {
                            provider.Dispose();
                        }
                    }
                }
                catch (Exception exc) when(!PlayniteEnvironment.ThrowAllErrors)
                {
                    logger.Error(exc, string.Format("Failed to download metadata, {0}, {1}", Game.PluginId, Game.GameId));
                    dialogs.ShowMessage(
                        string.Format(resources.GetString("LOCMetadataDownloadError"), exc.Message),
                        resources.GetString("LOCDownloadError"),
                        MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    ProgressVisible = false;
                }
            });
        }
Exemplo n.º 6
0
 public MetadataSession(CoordinatorService coordinator, MetadataPlugin plugin)
 {
     this.coordinator = coordinator;
     this.plugin      = plugin;
 }