From bcc20a2c9008eee6e7f4c03be2041d588dcce54f Mon Sep 17 00:00:00 2001 From: obligaron Date: Thu, 21 Oct 2021 17:59:00 +0200 Subject: [PATCH] Allow to customize shown splash in diablo.ini --- Source/diablo.cpp | 6 ++++-- Source/options.cpp | 17 +++++++++++++++++ Source/options.h | 19 +++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/Source/diablo.cpp b/Source/diablo.cpp index a16d44d89..8f931552a 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -970,7 +970,8 @@ void DiabloSplash() if (!gbShowIntro) return; - play_movie("gendata\\logo.smk", true); + if (*sgOptions.StartUp.splash == StartUpSplash::LogoAndTitleDialog) + play_movie("gendata\\logo.smk", true); if (gbIsHellfire && *sgOptions.Hellfire.intro) { play_movie("gendata\\Hellfire.smk", true); @@ -979,7 +980,8 @@ void DiabloSplash() play_movie("gendata\\diablo1.smk", true); } - UiTitleDialog(); + if (IsAnyOf(*sgOptions.StartUp.splash, StartUpSplash::TitleDialog, StartUpSplash::LogoAndTitleDialog)) + UiTitleDialog(); } void DiabloDeinit() diff --git a/Source/options.cpp b/Source/options.cpp index a2436be17..6ee9e46dc 100644 --- a/Source/options.cpp +++ b/Source/options.cpp @@ -558,6 +558,23 @@ string_view OptionCategoryBase::GetDescription() const return _(description.data()); } +StartUpOptions::StartUpOptions() + : OptionCategoryBase("StartUp", N_("Start Up"), N_("Start Up Settings")) + , splash("Splash", OptionEntryFlags::None, N_("Splash"), N_("Shown splash screen."), StartUpSplash::LogoAndTitleDialog, + { + { StartUpSplash::LogoAndTitleDialog, N_("Logo and Title Screen") }, + { StartUpSplash::TitleDialog, N_("Title Screen") }, + { StartUpSplash::None, N_("None") }, + }) +{ +} +std::vector StartUpOptions::GetEntries() +{ + return { + &splash, + }; +} + DiabloOptions::DiabloOptions() : OptionCategoryBase("Diablo", N_("Diablo"), N_("Diablo specific Settings")) , intro("Intro", OptionEntryFlags::OnlyDiablo, N_("Intro"), N_("Enable/disable Intro cinematic."), true) diff --git a/Source/options.h b/Source/options.h index 802d00cd5..78b546f66 100644 --- a/Source/options.h +++ b/Source/options.h @@ -16,6 +16,16 @@ enum class StartUpGameOption { Diablo, }; +/** @brief Defines what splash screen should be shown at startup. */ +enum class StartUpSplash { + /** @brief Show no splash screen. */ + None = 0, + /** @brief Show only TitleDialog. */ + TitleDialog = 1, + /** @brief Show Logo and TitleDialog. */ + LogoAndTitleDialog = 2, +}; + enum class ScalingQuality { NearestPixel, BilinearFiltering, @@ -178,6 +188,13 @@ protected: string_view description; }; +struct StartUpOptions : OptionCategoryBase { + StartUpOptions(); + std::vector GetEntries() override; + + OptionEntryEnum splash; +}; + struct DiabloOptions : OptionCategoryBase { DiabloOptions(); std::vector GetEntries() override; @@ -366,6 +383,7 @@ struct LanguageOptions : OptionCategoryBase { }; struct Options { + StartUpOptions StartUp; DiabloOptions Diablo; HellfireOptions Hellfire; AudioOptions Audio; @@ -379,6 +397,7 @@ struct Options { [[nodiscard]] std::vector GetCategories() { return { + &StartUp, &Diablo, &Hellfire, &Audio,