diff --git a/gaseous-server/Classes/ImportGames.cs b/gaseous-server/Classes/ImportGames.cs index dfbfb68..87009cb 100644 --- a/gaseous-server/Classes/ImportGames.cs +++ b/gaseous-server/Classes/ImportGames.cs @@ -267,7 +267,7 @@ namespace gaseous_server.Classes if (games.Length == 1) { // exact match! - determinedGame = Metadata.Games.GetGame((long)games[0].Id, false, false); + determinedGame = Metadata.Games.GetGame((long)games[0].Id, false, false, false); Logging.Log(Logging.LogType.Information, "Import Game", " IGDB game: " + determinedGame.Name); GameFound = true; break; @@ -425,7 +425,7 @@ namespace gaseous_server.Classes // get metadata IGDB.Models.Platform platform = gaseous_server.Classes.Metadata.Platforms.GetPlatform(rom.PlatformId); - IGDB.Models.Game game = gaseous_server.Classes.Metadata.Games.GetGame(rom.GameId, false, false); + IGDB.Models.Game game = gaseous_server.Classes.Metadata.Games.GetGame(rom.GameId, false, false, false); // build path string platformSlug = "Unknown Platform"; diff --git a/gaseous-server/Classes/Metadata/Games.cs b/gaseous-server/Classes/Metadata/Games.cs index 9a11be1..169cb7a 100644 --- a/gaseous-server/Classes/Metadata/Games.cs +++ b/gaseous-server/Classes/Metadata/Games.cs @@ -21,7 +21,7 @@ namespace gaseous_server.Classes.Metadata Config.IGDB.Secret ); - public static Game? GetGame(long Id, bool followSubGames, bool forceRefresh) + public static Game? GetGame(long Id, bool getAllMetadata, bool followSubGames, bool forceRefresh) { if (Id == 0) { @@ -45,14 +45,14 @@ namespace gaseous_server.Classes.Metadata } else { - Task RetVal = _GetGame(SearchUsing.id, Id, followSubGames, forceRefresh); + Task RetVal = _GetGame(SearchUsing.id, Id, getAllMetadata, followSubGames, forceRefresh); return RetVal.Result; } } - public static Game GetGame(string Slug, bool followSubGames, bool forceRefresh) + public static Game GetGame(string Slug, bool getAllMetadata, bool followSubGames, bool forceRefresh) { - Task RetVal = _GetGame(SearchUsing.slug, Slug, followSubGames, forceRefresh); + Task RetVal = _GetGame(SearchUsing.slug, Slug, getAllMetadata, followSubGames, forceRefresh); return RetVal.Result; } @@ -61,7 +61,7 @@ namespace gaseous_server.Classes.Metadata return Storage.BuildCacheObject(new Game(), dataRow); } - private static async Task _GetGame(SearchUsing searchUsing, object searchValue, bool followSubGames = false, bool forceRefresh = false) + private static async Task _GetGame(SearchUsing searchUsing, object searchValue, bool getAllMetadata = true, bool followSubGames = false, bool forceRefresh = false) { // check database first Storage.CacheStatus? cacheStatus = new Storage.CacheStatus(); @@ -99,12 +99,12 @@ namespace gaseous_server.Classes.Metadata case Storage.CacheStatus.NotPresent: returnValue = await GetObjectFromServer(WhereClause); Storage.NewCacheValue(returnValue); - UpdateSubClasses(returnValue, followSubGames); + UpdateSubClasses(returnValue, getAllMetadata, followSubGames); return returnValue; case Storage.CacheStatus.Expired: returnValue = await GetObjectFromServer(WhereClause); Storage.NewCacheValue(returnValue, true); - UpdateSubClasses(returnValue, followSubGames); + UpdateSubClasses(returnValue, getAllMetadata, followSubGames); return returnValue; case Storage.CacheStatus.Current: return Storage.GetCacheValue(returnValue, "id", (long)searchValue); @@ -113,117 +113,120 @@ namespace gaseous_server.Classes.Metadata } } - private static void UpdateSubClasses(Game Game, bool followSubGames) + private static void UpdateSubClasses(Game Game, bool getAllMetadata, bool followSubGames) { - if (Game.AgeRatings != null) - { - foreach (long AgeRatingId in Game.AgeRatings.Ids) - { - AgeRating GameAgeRating = AgeRatings.GetAgeRatings(AgeRatingId); - } - } - - if (Game.AlternativeNames != null) - { - foreach (long AlternativeNameId in Game.AlternativeNames.Ids) - { - AlternativeName GameAlternativeName = AlternativeNames.GetAlternativeNames(AlternativeNameId); - } - } - - if (Game.Artworks != null) - { - foreach (long ArtworkId in Game.Artworks.Ids) - { - Artwork GameArtwork = Artworks.GetArtwork(ArtworkId, Config.LibraryConfiguration.LibraryMetadataDirectory_Game(Game)); - } - } - - if (followSubGames) - { - List gamesToFetch = new List(); - if (Game.Bundles != null) { gamesToFetch.AddRange(Game.Bundles.Ids); } - if (Game.Dlcs != null) { gamesToFetch.AddRange(Game.Dlcs.Ids); } - if (Game.Expansions != null) { gamesToFetch.AddRange(Game.Expansions.Ids); } - if (Game.ParentGame != null) { gamesToFetch.Add((long)Game.ParentGame.Id); } - //if (Game.SimilarGames != null) { gamesToFetch.AddRange(Game.SimilarGames.Ids); } - if (Game.StandaloneExpansions != null) { gamesToFetch.AddRange(Game.StandaloneExpansions.Ids); } - if (Game.VersionParent != null) { gamesToFetch.Add((long)Game.VersionParent.Id); } - - foreach (long gameId in gamesToFetch) - { - Game relatedGame = GetGame(gameId, false, false); - } - } - - if (Game.Collection != null) - { - Collection GameCollection = Collections.GetCollections(Game.Collection.Id); - } - if (Game.Cover != null) { Cover GameCover = Covers.GetCover(Game.Cover.Id, Config.LibraryConfiguration.LibraryMetadataDirectory_Game(Game)); } - if (Game.ExternalGames != null) + if (getAllMetadata == true) { - foreach (long ExternalGameId in Game.ExternalGames.Ids) + if (Game.AgeRatings != null) { - ExternalGame GameExternalGame = ExternalGames.GetExternalGames(ExternalGameId); + foreach (long AgeRatingId in Game.AgeRatings.Ids) + { + AgeRating GameAgeRating = AgeRatings.GetAgeRatings(AgeRatingId); + } } - } - if (Game.Franchise != null) - { - Franchise GameFranchise = Franchises.GetFranchises(Game.Franchise.Id); - } - - if (Game.Franchises != null) - { - foreach (long FranchiseId in Game.Franchises.Ids) + if (Game.AlternativeNames != null) { - Franchise GameFranchise = Franchises.GetFranchises(FranchiseId); + foreach (long AlternativeNameId in Game.AlternativeNames.Ids) + { + AlternativeName GameAlternativeName = AlternativeNames.GetAlternativeNames(AlternativeNameId); + } } - } - if (Game.Genres != null) - { - foreach (long GenreId in Game.Genres.Ids) + if (Game.Artworks != null) { - Genre GameGenre = Genres.GetGenres(GenreId); + foreach (long ArtworkId in Game.Artworks.Ids) + { + Artwork GameArtwork = Artworks.GetArtwork(ArtworkId, Config.LibraryConfiguration.LibraryMetadataDirectory_Game(Game)); + } } - } - if (Game.InvolvedCompanies != null) - { - foreach (long involvedCompanyId in Game.InvolvedCompanies.Ids) + if (followSubGames) { - InvolvedCompany involvedCompany = InvolvedCompanies.GetInvolvedCompanies(involvedCompanyId); + List gamesToFetch = new List(); + if (Game.Bundles != null) { gamesToFetch.AddRange(Game.Bundles.Ids); } + if (Game.Dlcs != null) { gamesToFetch.AddRange(Game.Dlcs.Ids); } + if (Game.Expansions != null) { gamesToFetch.AddRange(Game.Expansions.Ids); } + if (Game.ParentGame != null) { gamesToFetch.Add((long)Game.ParentGame.Id); } + //if (Game.SimilarGames != null) { gamesToFetch.AddRange(Game.SimilarGames.Ids); } + if (Game.StandaloneExpansions != null) { gamesToFetch.AddRange(Game.StandaloneExpansions.Ids); } + if (Game.VersionParent != null) { gamesToFetch.Add((long)Game.VersionParent.Id); } + + foreach (long gameId in gamesToFetch) + { + Game relatedGame = GetGame(gameId, false, true, false); + } } - } - if (Game.Platforms != null) - { - foreach (long PlatformId in Game.Platforms.Ids) + if (Game.Collection != null) { - Platform GamePlatform = Platforms.GetPlatform(PlatformId); + Collection GameCollection = Collections.GetCollections(Game.Collection.Id); } - } - if (Game.Screenshots != null) - { - foreach (long ScreenshotId in Game.Screenshots.Ids) + if (Game.ExternalGames != null) { - Screenshot GameScreenshot = Screenshots.GetScreenshot(ScreenshotId, Config.LibraryConfiguration.LibraryMetadataDirectory_Game(Game)); + foreach (long ExternalGameId in Game.ExternalGames.Ids) + { + ExternalGame GameExternalGame = ExternalGames.GetExternalGames(ExternalGameId); + } } - } - if (Game.Videos != null) - { - foreach (long GameVideoId in Game.Videos.Ids) + if (Game.Franchise != null) { - GameVideo gameVideo = GamesVideos.GetGame_Videos(GameVideoId); + Franchise GameFranchise = Franchises.GetFranchises(Game.Franchise.Id); + } + + if (Game.Franchises != null) + { + foreach (long FranchiseId in Game.Franchises.Ids) + { + Franchise GameFranchise = Franchises.GetFranchises(FranchiseId); + } + } + + if (Game.Genres != null) + { + foreach (long GenreId in Game.Genres.Ids) + { + Genre GameGenre = Genres.GetGenres(GenreId); + } + } + + if (Game.InvolvedCompanies != null) + { + foreach (long involvedCompanyId in Game.InvolvedCompanies.Ids) + { + InvolvedCompany involvedCompany = InvolvedCompanies.GetInvolvedCompanies(involvedCompanyId); + } + } + + if (Game.Platforms != null) + { + foreach (long PlatformId in Game.Platforms.Ids) + { + Platform GamePlatform = Platforms.GetPlatform(PlatformId); + } + } + + if (Game.Screenshots != null) + { + foreach (long ScreenshotId in Game.Screenshots.Ids) + { + Screenshot GameScreenshot = Screenshots.GetScreenshot(ScreenshotId, Config.LibraryConfiguration.LibraryMetadataDirectory_Game(Game)); + } + } + + if (Game.Videos != null) + { + foreach (long GameVideoId in Game.Videos.Ids) + { + GameVideo gameVideo = GamesVideos.GetGame_Videos(GameVideoId); + } } } } diff --git a/gaseous-server/Classes/MetadataManagement.cs b/gaseous-server/Classes/MetadataManagement.cs index 62e66f7..7f6e151 100644 --- a/gaseous-server/Classes/MetadataManagement.cs +++ b/gaseous-server/Classes/MetadataManagement.cs @@ -17,7 +17,7 @@ namespace gaseous_server.Classes try { Logging.Log(Logging.LogType.Information, "Metadata Refresh", "Refreshing metadata for game " + dr["name"] + " (" + dr["id"] + ")"); - Metadata.Games.GetGame((long)dr["id"], true, forceRefresh); + Metadata.Games.GetGame((long)dr["id"], true, true, forceRefresh); } catch (Exception ex) { diff --git a/gaseous-server/Classes/Roms.cs b/gaseous-server/Classes/Roms.cs index c32e314..35b5f89 100644 --- a/gaseous-server/Classes/Roms.cs +++ b/gaseous-server/Classes/Roms.cs @@ -56,7 +56,7 @@ namespace gaseous_server.Classes IGDB.Models.Platform platform = Classes.Metadata.Platforms.GetPlatform(PlatformId); // ensure metadata for gameid is present - IGDB.Models.Game game = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game game = Classes.Metadata.Games.GetGame(GameId, false, false, false); Database db = new gaseous_tools.Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); string sql = "UPDATE Games_Roms SET PlatformId=@platformid, GameId=@gameid WHERE Id = @id"; diff --git a/gaseous-server/Controllers/GamesController.cs b/gaseous-server/Controllers/GamesController.cs index 260a79a..8d2c0b9 100644 --- a/gaseous-server/Controllers/GamesController.cs +++ b/gaseous-server/Controllers/GamesController.cs @@ -136,7 +136,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, forceRefresh); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, forceRefresh, false, forceRefresh); if (gameObject != null) { @@ -162,7 +162,7 @@ namespace gaseous_server.Controllers { try { - Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); if (gameObject.AlternativeNames != null) { @@ -193,7 +193,7 @@ namespace gaseous_server.Controllers { try { - Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); if (gameObject.AgeRatings != null) { @@ -303,7 +303,7 @@ namespace gaseous_server.Controllers { try { - Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); List artworks = new List(); if (gameObject.Artworks != null) @@ -332,7 +332,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); try { @@ -365,7 +365,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); try { @@ -420,7 +420,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); if (gameObject != null) { IGDB.Models.Cover coverObject = Covers.GetCover(gameObject.Cover.Id, Config.LibraryConfiguration.LibraryMetadataDirectory_Game(gameObject)); @@ -452,7 +452,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); string coverFilePath = Path.Combine(Config.LibraryConfiguration.LibraryMetadataDirectory_Game(gameObject), "Cover.png"); if (System.IO.File.Exists(coverFilePath)) { @@ -492,7 +492,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); if (gameObject != null) { List genreObjects = new List(); @@ -528,7 +528,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); if (gameObject != null) { List> icObjects = new List>(); @@ -571,7 +571,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); if (gameObject != null) { List> icObjects = new List>(); @@ -611,7 +611,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); InvolvedCompany involvedCompany = Classes.Metadata.InvolvedCompanies.GetInvolvedCompanies(CompanyId); Company company = Classes.Metadata.Companies.GetCompanies(involvedCompany.Company.Id); @@ -655,7 +655,7 @@ namespace gaseous_server.Controllers { try { - Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); List roms = Classes.Roms.GetRoms(GameId); @@ -676,7 +676,7 @@ namespace gaseous_server.Controllers { try { - Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); Classes.Roms.GameRomItem rom = Classes.Roms.GetRom(RomId); if (rom.GameId == GameId) @@ -702,7 +702,7 @@ namespace gaseous_server.Controllers { try { - Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); Classes.Roms.GameRomItem rom = Classes.Roms.GetRom(RomId); if (rom.GameId == GameId) @@ -729,7 +729,7 @@ namespace gaseous_server.Controllers { try { - Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); Classes.Roms.GameRomItem rom = Classes.Roms.GetRom(RomId); if (rom.GameId == GameId) @@ -757,7 +757,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); Classes.Roms.GameRomItem rom = Classes.Roms.GetRom(RomId); if (rom.GameId != GameId) @@ -792,7 +792,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); Classes.Roms.GameRomItem rom = Classes.Roms.GetRom(RomId); if (rom.GameId != GameId || rom.Name != FileName) @@ -864,7 +864,7 @@ namespace gaseous_server.Controllers { try { - Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); List screenshots = new List(); if (gameObject.Screenshots != null) @@ -893,7 +893,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); if (gameObject != null) { IGDB.Models.Screenshot screenshotObject = Screenshots.GetScreenshot(ScreenshotId, Config.LibraryConfiguration.LibraryMetadataDirectory_Game(gameObject)); if (screenshotObject != null) @@ -924,7 +924,7 @@ namespace gaseous_server.Controllers { try { - IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + IGDB.Models.Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); IGDB.Models.Screenshot screenshotObject = Screenshots.GetScreenshot(ScreenshotId, Config.LibraryConfiguration.LibraryMetadataDirectory_Game(gameObject)); @@ -967,7 +967,7 @@ namespace gaseous_server.Controllers { try { - Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false); + Game gameObject = Classes.Metadata.Games.GetGame(GameId, false, false, false); List videos = new List(); if (gameObject.Videos != null) diff --git a/gaseous-server/Program.cs b/gaseous-server/Program.cs index 9fb189e..9349454 100644 --- a/gaseous-server/Program.cs +++ b/gaseous-server/Program.cs @@ -114,7 +114,7 @@ app.MapControllers(); Config.LibraryConfiguration.InitLibrary(); // insert unknown platform and game if not present -gaseous_server.Classes.Metadata.Games.GetGame(0, false, false); +gaseous_server.Classes.Metadata.Games.GetGame(0, false, false, false); gaseous_server.Classes.Metadata.Platforms.GetPlatform(0); // organise library diff --git a/gaseous-server/gaseous-server.csproj b/gaseous-server/gaseous-server.csproj index a5f4215..3e376f7 100644 --- a/gaseous-server/gaseous-server.csproj +++ b/gaseous-server/gaseous-server.csproj @@ -121,6 +121,9 @@ + + + diff --git a/gaseous-server/wwwroot/emulators/EmulatorJS b/gaseous-server/wwwroot/emulators/EmulatorJS index 328a02b..8c5def7 160000 --- a/gaseous-server/wwwroot/emulators/EmulatorJS +++ b/gaseous-server/wwwroot/emulators/EmulatorJS @@ -1 +1 @@ -Subproject commit 328a02bbb613a754b97c19f937d930735d3bca1c +Subproject commit 8c5def77a094dd2fc38f3d17dd7c909c140eb2f4 diff --git a/gaseous-server/wwwroot/pages/game.html b/gaseous-server/wwwroot/pages/game.html index 5f862a1..e641bdf 100644 --- a/gaseous-server/wwwroot/pages/game.html +++ b/gaseous-server/wwwroot/pages/game.html @@ -2,6 +2,19 @@
+ + +

@@ -60,10 +73,9 @@
- + - \ No newline at end of file + + function showProgress() { + // Get the modal + var submodal = document.getElementById("myModalProgress"); + + // When the user clicks on the button, open the modal + submodal.style.display = "block"; + } + + function closeProgress() { + // Get the modal + var submodal = document.getElementById("myModalProgress"); + + submodal.style.display = "none"; + } + \ No newline at end of file diff --git a/gaseous-server/wwwroot/scripts/main.js b/gaseous-server/wwwroot/scripts/main.js index a46d9e6..7403a40 100644 --- a/gaseous-server/wwwroot/scripts/main.js +++ b/gaseous-server/wwwroot/scripts/main.js @@ -1,4 +1,4 @@ -function ajaxCall(endpoint, method, successFunction) { +function ajaxCall(endpoint, method, successFunction, errorFunction) { $.ajax({ // Our sample url to make request @@ -11,14 +11,18 @@ // Function to call when to // request is ok success: function (data) { - var x = JSON.stringify(data); - console.log(x); + //var x = JSON.stringify(data); + //console.log(x); successFunction(data); }, // Error handling error: function (error) { console.log(`Error ${error}`); + + if (errorFunction) { + errorFunction(error); + } } }); } @@ -210,4 +214,8 @@ function DropDownRenderGameOption(state) { ); } return response; +} + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); } \ No newline at end of file diff --git a/gaseous-server/wwwroot/styles/style.css b/gaseous-server/wwwroot/styles/style.css index 47997a8..3fb8a1d 100644 --- a/gaseous-server/wwwroot/styles/style.css +++ b/gaseous-server/wwwroot/styles/style.css @@ -770,4 +770,16 @@ button:disabled { box-shadow: 5px 5px 19px 0px rgba(0,0,0,0.44); -webkit-box-shadow: 5px 5px 19px 0px rgba(0,0,0,0.44); -moz-box-shadow: 5px 5px 19px 0px rgba(0,0,0,0.44); +} + +#rom_edit_progressbar { + width: 100%; + height: 10px; + background-color: lightgray; + margin-top: 10px; +} + +#rom_edit_progressbar_progress { + height: 10px; + background-color: cyan; } \ No newline at end of file