diff --git a/src/Addons/Addons.csproj b/src/Addons/Addons.csproj index 4bd0850b..528342e3 100644 --- a/src/Addons/Addons.csproj +++ b/src/Addons/Addons.csproj @@ -12,6 +12,7 @@ + diff --git a/src/Addons/Assets/Duke3D/dukezh.jpg b/src/Addons/Assets/Duke3D/dukezh.jpg new file mode 100644 index 00000000..524cb8eb Binary files /dev/null and b/src/Addons/Assets/Duke3D/dukezh.jpg differ diff --git a/src/Addons/Providers/OriginalCampaignsProvider.cs b/src/Addons/Providers/OriginalCampaignsProvider.cs index 015e1f68..70dd16e7 100644 --- a/src/Addons/Providers/OriginalCampaignsProvider.cs +++ b/src/Addons/Providers/OriginalCampaignsProvider.cs @@ -274,7 +274,6 @@ Duke Nukem must travel to the North Pole in order to stop the brainwashed Santa Description = """ **Duke Nukem 64** is the Nintendo 64 port of the first-person shooter MS-DOS/PC game Duke Nukem 3D. The Nintendo 64 port features significant changes from the PC version, including modified and expanded levels and a different set of weapons. - The port also includes a four-player deathmatch mode and a two-player co-op mode via split-screen. The game's mature themes have been minimized to satisfy Nintendo's adult content standards. """, SupportedGame = new(GameEnum.Duke64), @@ -296,6 +295,45 @@ The game's mature themes have been minimized to satisfy Nintendo's adult content }); } + if (dGame.IsDukeZHInstalled) + { + var duke64Id = nameof(GameEnum.DukeZeroHour).ToLower(); + AddonId version = new(duke64Id, null); + + campaigns.Add(version, new DukeCampaign() + { + AddonId = version, + Type = AddonTypeEnum.Official, + Title = "Duke Nukem Zero Hour", + GridImageHash = GameEnum.DukeZeroHour.GetUniqueHash(), + Author = "Eurocom", + ReleaseDate = new(1999, 08, 31), + Description = """ + **Duke Nukem: Zero Hour** is a 1999 third-person shooter game in the Duke Nukem series, + developed by Eurocom and published by GT Interactive for the Nintendo 64. + + The plot revolves around time traveling aliens attempting to alter the course of history + by eliminating Duke's ancestors. + """, + SupportedGame = new(GameEnum.DukeZeroHour), + RequiredFeatures = null, + PathToFile = null, + DependentAddons = null, + IncompatibleAddons = null, + MainCon = null, + AdditionalCons = null, + MainDef = null, + AdditionalDefs = null, + RTS = null, + StartMap = null, + PreviewImageHash = null, + IsUnpacked = false, + Executables = null, + IsFavorite = _config.FavoriteAddons.Contains(version), + Options = null + }); + } + return campaigns; } diff --git a/src/Avalonia.Desktop/Controls/CampaignsControl.axaml.cs b/src/Avalonia.Desktop/Controls/CampaignsControl.axaml.cs index 6812b080..0b9cb1f9 100644 --- a/src/Avalonia.Desktop/Controls/CampaignsControl.axaml.cs +++ b/src/Avalonia.Desktop/Controls/CampaignsControl.axaml.cs @@ -47,6 +47,13 @@ BitmapsCache bitmapsCache InitializeComponent(); _supportedPorts = portsProvider.GetPortsThatSupportGame(viewModel.Game.GameEnum); + + if (viewModel.Game.GameEnum is GameEnum.Duke3D) + { + var zhPorts = portsProvider.GetPortsThatSupportGame(GameEnum.DukeZeroHour); + _supportedPorts = [.. _supportedPorts, .. zhPorts]; + } + _portsProvider = portsProvider; _viewModel = viewModel; _bitmapsCache = bitmapsCache; diff --git a/src/Avalonia.Desktop/Misc/BitmapsCache.cs b/src/Avalonia.Desktop/Misc/BitmapsCache.cs index 4bc0f1d1..a5030f20 100644 --- a/src/Avalonia.Desktop/Misc/BitmapsCache.cs +++ b/src/Avalonia.Desktop/Misc/BitmapsCache.cs @@ -102,6 +102,9 @@ private void InitOfficialCampaignsCache() using var duke64 = ImageHelper.FileNameToStream("Duke3D.duke64.jpg", addonsAss); _ = TryAddGridToCache(GameEnum.Duke64.GetUniqueHash(), duke64); + using var dukeZH = ImageHelper.FileNameToStream("Duke3D.dukezh.jpg", addonsAss); + _ = TryAddGridToCache(GameEnum.DukeZeroHour.GetUniqueHash(), dukeZH); + using var dukeDc = ImageHelper.FileNameToStream("Duke3D.dukedc.jpg", addonsAss); _ = TryAddGridToCache(DukeAddonEnum.DukeDC.GetUniqueHash(), dukeDc); diff --git a/src/Avalonia.Desktop/Pages/SettingsPage.axaml b/src/Avalonia.Desktop/Pages/SettingsPage.axaml index 3fc191ba..c4a57c1e 100644 --- a/src/Avalonia.Desktop/Pages/SettingsPage.axaml +++ b/src/Avalonia.Desktop/Pages/SettingsPage.axaml @@ -50,7 +50,7 @@ - + - + Path to Duke Nukem ZH ROM: + + + + + + + + Path to Blood install: - -