From 831c412ecf8ad5e259f1293ed4655b3a1b2997db Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Sep 2013 18:42:21 -0400 Subject: [PATCH] Added IsInstalledOnClient to Game --- MediaBrowser.Api/GamesService.cs | 4 ++- MediaBrowser.Controller/Entities/Game.cs | 6 ++++ .../Providers/BaseItemXmlParser.cs | 36 +++++++++++++++++++ MediaBrowser.Model/Dto/GameSystemSummary.cs | 6 ++++ 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Api/GamesService.cs b/MediaBrowser.Api/GamesService.cs index a34f68f35a..14f5ba3da9 100644 --- a/MediaBrowser.Api/GamesService.cs +++ b/MediaBrowser.Api/GamesService.cs @@ -118,9 +118,11 @@ namespace MediaBrowser.Api var games = items.OfType().ToList(); + summary.ClientInstalledGameCount = games.Count(i => !i.IsInstalledOnClient); + summary.GameCount = games.Count; - summary.GameFileExtensions = games.Select(i => Path.GetExtension(i.Path)) + summary.GameFileExtensions = games.Where(i => !i.IsInstalledOnClient).Select(i => Path.GetExtension(i.Path)) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs index ef115c691b..6c15e73038 100644 --- a/MediaBrowser.Controller/Entities/Game.cs +++ b/MediaBrowser.Controller/Entities/Game.cs @@ -24,6 +24,12 @@ namespace MediaBrowser.Controller.Entities /// The players supported. public int? PlayersSupported { get; set; } + /// + /// Gets or sets a value indicating whether this instance is installed on client. + /// + /// true if this instance is installed on client; otherwise, false. + public bool IsInstalledOnClient { get; set; } + /// /// Gets or sets the game system. /// diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index a7c38408fc..d7336e6a1d 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -139,6 +139,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "CriticRating": { var text = reader.ReadElementContentAsString(); @@ -150,6 +151,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "Budget": { var text = reader.ReadElementContentAsString(); @@ -161,6 +163,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "Revenue": { var text = reader.ReadElementContentAsString(); @@ -172,6 +175,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "SortTitle": { var val = reader.ReadElementContentAsString(); @@ -466,6 +470,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "ReleaseYear": case "ProductionYear": { var val = reader.ReadElementContentAsString(); @@ -555,6 +560,37 @@ namespace MediaBrowser.Controller.Providers } break; + case "Players": + { + var val = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(val)) + { + int num; + // All external meta is saving this as '.' for decimal I believe...but just to be sure + if (int.TryParse(val, NumberStyles.Integer, _usCulture, out num)) + { + var game = item as Game; + if (game != null) + { + game.PlayersSupported = num; + } + } + } + break; + } + case "GameSystem": + { + var val = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(val)) + { + var game = item as Game; + if (game != null) + { + game.GameSystem = val; + } + } + break; + } case "MusicbrainzId": { var mbz = reader.ReadElementContentAsString(); diff --git a/MediaBrowser.Model/Dto/GameSystemSummary.cs b/MediaBrowser.Model/Dto/GameSystemSummary.cs index a9931417ae..1da3bb0acd 100644 --- a/MediaBrowser.Model/Dto/GameSystemSummary.cs +++ b/MediaBrowser.Model/Dto/GameSystemSummary.cs @@ -31,6 +31,12 @@ namespace MediaBrowser.Model.Dto /// The game extensions. public List GameFileExtensions { get; set; } + /// + /// Gets or sets the client installed game count. + /// + /// The client installed game count. + public int ClientInstalledGameCount { get; set; } + /// /// Initializes a new instance of the class. ///