示例#1
0
 public IEnumerable <IGameWithMetaInfo> GetAllGames(Func <IGameMetaInfo, bool> filter)
 {
     foreach (var t in Thumbnails.Where(t => filter == null || filter(t)))
     {
         yield return(GameSource.GetGame(t.ID));
     }
 }
示例#2
0
        public ListBoxItem CreatePriorityEntry(GameSource source)
        {
            Button buttonUp = new Button
            {
                Content = "▲",
                Margin  = new Thickness(0, 0, 3, 0),
                Width   = 20,
                Height  = 20,
                HorizontalContentAlignment = HorizontalAlignment.Center,
                VerticalContentAlignment   = VerticalAlignment.Center,
                ClipToBounds = false,
                Padding      = new Thickness(0, 0, 0, 0),
                Cursor       = Cursors.Arrow
            };

            buttonUp.Click += ButtonUp_Click;
            Button buttonDown = new Button
            {
                Content = "▼",
                Margin  = new Thickness(0, 0, 8, 0),
                Width   = 20,
                Height  = 20,
                HorizontalContentAlignment = HorizontalAlignment.Center,
                VerticalContentAlignment   = VerticalAlignment.Center,
                ClipToBounds = false,
                Padding      = new Thickness(0, 0, 0, 0),
                Cursor       = Cursors.Arrow
            };

            buttonDown.Click += ButtonDown_Click;
            Label label = new Label {
                Content = source != null ? source.Name : Constants.UNDEFINED_SOURCE
            };
            StackPanel stackPanel = new StackPanel {
                Orientation = Orientation.Horizontal
            };

            stackPanel.Children.Add(buttonUp);
            stackPanel.Children.Add(buttonDown);
            stackPanel.Children.Add(label);
            ListBoxItem item = new ListBoxItem {
                Content = stackPanel, Tag = source, AllowDrop = true
            };

            item.Drop            += Item_Drop;
            item.PreviewDragOver += Item_PreviewDragOver;
            // label.PreviewMouseLeftButtonDown += Label_PreviewMouseLeftButtonDown;
            item.PreviewMouseMove           += Item_PreviewMouseMove;
            item.PreviewMouseLeftButtonDown += Item_MouseLeftButtonDown;
            item.PreviewMouseLeftButtonUp   += Item_MouseLeftButtonUp;
            buttonUp.Tag   = item;
            buttonDown.Tag = item;
            label.Tag      = item;
            item.Cursor    = Cursors.SizeNS;
            return(item);
        }
示例#3
0
        public IGameWithMetaInfo GetRandomGame(Func <IGameMetaInfo, bool> filter)
        {
            var filteredGames = Thumbnails.Where(t => filter == null || filter(t));

            if (filteredGames.Count() == 0)
            {
                return(null);
            }

            var thumbnail = filteredGames.ElementAt(RandomNumberGenerator.Next(filteredGames.Count()));

            return(GameSource.GetGame(thumbnail.ID));
        }
示例#4
0
 public void OpenWorkshop(Texture2D texture, WorkshopItem item)
 {
     gameObject.SetActive(true);
     gameSource            = GameSource.Workshop;
     workshopItem          = item;
     descriptionField.text = $"<b>{workshopItem.Name}</b> - {GetWorkshopHeader(workshopItem)}\n{workshopItem.Description}";
     if (texture != null)
     {
         thumbnailImage.sprite = Sprite.Create(
             texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0, 0), 100F, 0, SpriteMeshType.FullRect);
     }
     playAction  = () => OnPlayTriggered(playOpts => LoadByWorkshopItem(workshopItem, playOpts));
     buildAction = () => popups.Show("Not implemented", "OK", () => { });
     subscribeButtonText.text = workshopItem.IsSubscribed ? UNSUBSCRIBE_TEXT : SUBSCRIBE_TEXT;
 }
示例#5
0
        public XboxLibraryHelper(IPlayniteAPI api)
        {
            PlayniteApi = api;
            client      = new HttpClient();
            pluginId    = BuiltinExtensions.GetIdFromExtension(BuiltinExtension.XboxLibrary);
            RefreshLibraryItems();

            var pcPlatform = PlayniteApi.Database.Platforms.Add("PC (Windows)");

            platformsList = new List <Guid> {
                pcPlatform.Id
            };
            gameExpiredTag = PlayniteApi.Database.Tags.Add("Game Pass (Formerly on)");
            gameAddedTag   = PlayniteApi.Database.Tags.Add("Game Pass");
            source         = PlayniteApi.Database.Sources.Add("Xbox Game Pass");
            sourceXbox     = PlayniteApi.Database.Sources.Add("Xbox");
        }
示例#6
0
    public void OpenSpecial(string descriptionText, Texture2D thumbnail, System.Action <GameBuilderApplication.PlayOptions> customLoadAction, bool bypassPlayOptsDialog)
    {
        gameObject.SetActive(true);
        gameSource            = GameSource.Special;
        descriptionField.text = descriptionText;

        SetThumbnail(thumbnail);

        if (bypassPlayOptsDialog)
        {
            playAction = () => customLoadAction(new GameBuilderApplication.PlayOptions());
        }
        else
        {
            playAction = () => OnPlayTriggered(playOpts => customLoadAction(playOpts));
        }
    }
示例#7
0
    public void OpenLocal(GameBundleLibrary.Entry entry)
    {
        gameObject.SetActive(true);
        gameSource = GameSource.Local;
        GameBundle.Metadata metadata = entry.bundle.GetMetadata();
        descriptionField.text = $"<b>{metadata.name}</b>\n{metadata.description}";

        Texture2D texture = entry.bundle.GetThumbnail();

        SetThumbnail(texture != null ? texture : placeholderThumbnailTexture);

        playAction = () => OnPlayTriggered(playOpts =>
        {
            LoadLibraryBundle(entry, playOpts);
        });
        buildAction = () => popups.Show("Not implemented", "OK", () => { });
    }
示例#8
0
 public bool DeleteExtraMetadataDir(GameSource source)
 {
     return(DeleteDirectory(Path.Combine(baseDirectory, "sources", source.Id.ToString())));
 }
        private void Add(Game Game, Guid?SourceId = null)
        {
            List <Counter> GameGenres           = new List <Counter>();
            List <Counter> GameSource           = new List <Counter>();
            List <Counter> GameFavorite         = new List <Counter>();
            List <Counter> GameIsInstalled      = new List <Counter>();
            List <Counter> GameIsNotLaunching   = new List <Counter>();
            List <Counter> GameHidden           = new List <Counter>();
            List <Counter> GameCompletionStatus = new List <Counter>();

            long Playtime = 0;
            bool IsFind   = false;

            // Initialization variables
            if (SourceId == null)
            {
                GameGenres           = Statistics.GameGenres;
                GameSource           = Statistics.GameSource;
                GameFavorite         = Statistics.GameFavorite;
                GameIsInstalled      = Statistics.GameIsInstalled;
                GameIsNotLaunching   = Statistics.GameIsNotLaunching;
                GameHidden           = Statistics.GameHidden;
                GameCompletionStatus = Statistics.GameCompletionStatus;

                Playtime = Statistics.Playtime;;
            }
            else
            {
                if (StatisticsSourceDatabase.TryGetValue((Guid)SourceId, out var item))
                {
                    GameGenres           = item.GameGenres;
                    GameSource           = item.GameSource;
                    GameFavorite         = item.GameFavorite;
                    GameIsInstalled      = item.GameIsInstalled;
                    GameIsNotLaunching   = item.GameIsNotLaunching;
                    GameHidden           = item.GameHidden;
                    GameCompletionStatus = item.GameCompletionStatus;

                    Playtime = item.Playtime;
                }
                else
                {
                    string SourceName = "";
                    if (ListEmulators.Contains((Guid)SourceId))
                    {
                        SourceName = PlayniteApiDatabase.Emulators.Get((Guid)SourceId).Name;
                    }
                    else
                    {
                        if (SourceId == Guid.Parse("00000000-0000-0000-0000-000000000000"))
                        {
                            SourceName = "Playnite";
                        }
                        else
                        {
                            SourceName = Game.Source.Name;
                        }
                    }

                    StatisticsClass StatisticsSource = new StatisticsClass
                    {
                        Name                 = SourceName,
                        GameGenres           = new List <Counter>(),
                        GameSource           = new List <Counter>(),
                        GameFavorite         = new List <Counter>(),
                        GameIsInstalled      = new List <Counter>(),
                        GameIsNotLaunching   = new List <Counter>(),
                        GameHidden           = new List <Counter>(),
                        GameCompletionStatus = new List <Counter>(),

                        Playtime = 0,
                        Total    = 0
                    };
                    StatisticsSourceDatabase.TryAdd((Guid)SourceId, StatisticsSource);

                    GameGenres           = new List <Counter>();
                    GameSource           = new List <Counter>();
                    GameFavorite         = new List <Counter>();
                    GameIsInstalled      = new List <Counter>();
                    GameIsNotLaunching   = new List <Counter>();
                    GameHidden           = new List <Counter>();
                    GameCompletionStatus = new List <Counter>();

                    Playtime = 0;
                }
            }

            if (Game.IsInstalled)
            {
                GameIsInstalled.Add(new Counter {
                    Id = Game.Id, Name = Game.Name
                });
            }

            if (Game.LastActivity == null)
            {
                GameIsNotLaunching.Add(new Counter {
                    Id = Game.Id, Name = Game.Name
                });
            }

            if (Game.Genres != null)
            {
                foreach (var item in Game.Genres)
                {
                    IsFind = false;
                    for (int i = 0; i < GameGenres.Count; i++)
                    {
                        if (item.Name == GameGenres[i].Name)
                        {
                            GameGenres[i].Count += 1;
                            IsFind = true;
                        }
                    }
                    if (IsFind == false)
                    {
                        GameGenres.Add(new Counter {
                            Id = item.Id, Name = item.Name, Count = 1
                        });
                    }
                }
            }

            if (SourceId == null)
            {
                IsFind = false;
                string SourceName = "";
                if (Game.SourceId == Guid.Parse("00000000-0000-0000-0000-000000000000"))
                {
                    SourceName = "Playnite";
                }
                else
                {
                    SourceName = Game.Source.Name;
                }

                for (int i = 0; i < GameSource.Count; i++)
                {
                    if (SourceName == GameSource[i].Name)
                    {
                        GameSource[i].Count += 1;
                        IsFind = true;
                    }
                }
                if (IsFind == false)
                {
                    GameSource.Add(new Counter {
                        Id = Game.SourceId, Name = SourceName, Count = 1
                    });
                }
            }
            else
            {
                string GameName = Game.Name;
                GameSource.Add(new Counter {
                    Id = Game.Id, Name = GameName, Count = Game.Playtime
                });
            }

            if (Game.Favorite)
            {
                GameFavorite.Add(new Counter {
                    Id = Game.Id, Name = Game.Name
                });
            }

            if (Game.Hidden)
            {
                GameHidden.Add(new Counter {
                    Id = Game.Id, Name = Game.Name
                });
            }

            IsFind = false;
            for (int i = 0; i < GameCompletionStatus.Count; i++)
            {
                if ("" + Game.CompletionStatus == GameCompletionStatus[i].Name)
                {
                    GameCompletionStatus[i].Count += 1;
                    IsFind = true;
                }
            }
            if (IsFind == false)
            {
                GameCompletionStatus.Add(new Counter {
                    Name = "" + Game.CompletionStatus, Count = 1
                });
            }

            Playtime += Game.Playtime;

            if (SourceId == null)
            {
                Statistics.GameGenres           = GameGenres;
                Statistics.GameSource           = GameSource;
                Statistics.GameFavorite         = GameFavorite;
                Statistics.GameIsInstalled      = GameIsInstalled;
                Statistics.GameIsNotLaunching   = GameIsNotLaunching;
                Statistics.GameHidden           = GameHidden;
                Statistics.GameCompletionStatus = GameCompletionStatus;
                Statistics.Playtime             = Playtime;
                Statistics.Total += 1;
            }
            else
            {
                StatisticsSourceDatabase[(Guid)SourceId].GameGenres           = GameGenres;
                StatisticsSourceDatabase[(Guid)SourceId].GameSource           = GameSource;
                StatisticsSourceDatabase[(Guid)SourceId].GameFavorite         = GameFavorite;
                StatisticsSourceDatabase[(Guid)SourceId].GameIsInstalled      = GameIsInstalled;
                StatisticsSourceDatabase[(Guid)SourceId].GameIsNotLaunching   = GameIsNotLaunching;
                StatisticsSourceDatabase[(Guid)SourceId].GameHidden           = GameHidden;
                StatisticsSourceDatabase[(Guid)SourceId].GameCompletionStatus = GameCompletionStatus;
                StatisticsSourceDatabase[(Guid)SourceId].Playtime             = Playtime;
                StatisticsSourceDatabase[(Guid)SourceId].Total += 1;
            }
        }
示例#10
0
 public bool TryGetValue(GameSource key, out ImageSource value)
 {
     return(((IReadOnlyDictionary <GameSource, ImageSource>)cache).TryGetValue(key, out value));
 }
示例#11
0
 public bool ContainsKey(GameSource key)
 {
     return(((IReadOnlyDictionary <GameSource, ImageSource>)cache).ContainsKey(key));
 }
示例#12
0
 public ImageSource this[GameSource key] => ((IReadOnlyDictionary <GameSource, ImageSource>)cache)[key];
示例#13
0
        public void ReloadGameTarget(bool lodUpdateAndLogging = true, bool forceLodUpdate = false)
        {
            if (Game != Mod.MEGame.Unknown && !IsCustomOption)
            {
                if (Directory.Exists(TargetPath))
                {
                    var oldTMOption = TextureModded;
                    var alotInfo    = GetInstalledALOTInfo();
                    if (alotInfo != null)
                    {
                        TextureModded = true;
                        ALOTVersion   = alotInfo.ToString();
                        if (alotInfo.MEUITMVER > 0)
                        {
                            MEUITMInstalled = true;
                            MEUITMVersion   = alotInfo.MEUITMVER;
                        }
                    }
                    else
                    {
                        TextureModded   = false;
                        ALOTVersion     = null;
                        MEUITMInstalled = false;
                        MEUITMVersion   = 0;
                    }

                    CLog.Information(@"Getting game source for target " + TargetPath, lodUpdateAndLogging);
                    var hashCheckResult = VanillaDatabaseService.GetGameSource(this);

                    GameSource     = hashCheckResult.result;
                    ExecutableHash = hashCheckResult.hash;
                    if (GameSource == null)
                    {
                        CLog.Error(@"Unknown source or illegitimate installation: " + hashCheckResult.hash, lodUpdateAndLogging);
                    }
                    else
                    {
                        if (GameSource.Contains(@"Origin") && Game == Mod.MEGame.ME3)
                        {
                            // Check for steam
                            if (Directory.Exists(Path.Combine(TargetPath, @"__overlay")))
                            {
                                GameSource += @" (Steam version)";
                            }
                        }
                        CLog.Information(@"Source: " + GameSource, lodUpdateAndLogging);
                    }

                    IsPolishME1 = Game == Mod.MEGame.ME1 && File.Exists(Path.Combine(TargetPath, @"BioGame", @"CookedPC", @"Movies", @"niebieska_pl.bik"));
                    if (IsPolishME1)
                    {
                        CLog.Information(@"ME1 Polish Edition detected", lodUpdateAndLogging);
                    }

                    if (RegistryActive && (Settings.AutoUpdateLODs2K || Settings.AutoUpdateLODs4K) && oldTMOption != TextureModded && (lodUpdateAndLogging || forceLodUpdate))
                    {
                        UpdateLODs(Settings.AutoUpdateLODs2K);
                    }
                }
                else
                {
                    Log.Error($@"Target is invalid: {TargetPath} does not exist (or is not accessible)");
                    IsValid = false; //set to false if target becomes invalid
                }
            }
        }
示例#14
0
 public IGameWithMetaInfo GetSpecificGame(int ID)
 {
     return(GameSource.GetGame(ID));
 }