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)); } }
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); }
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)); }
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; }
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"); }
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)); } }
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", () => { }); }
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; } }
public bool TryGetValue(GameSource key, out ImageSource value) { return(((IReadOnlyDictionary <GameSource, ImageSource>)cache).TryGetValue(key, out value)); }
public bool ContainsKey(GameSource key) { return(((IReadOnlyDictionary <GameSource, ImageSource>)cache).ContainsKey(key)); }
public ImageSource this[GameSource key] => ((IReadOnlyDictionary <GameSource, ImageSource>)cache)[key];
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 } } }
public IGameWithMetaInfo GetSpecificGame(int ID) { return(GameSource.GetGame(ID)); }