From d7a0cf8dbeba0d318ae423cb7ae8c6c5244199b3 Mon Sep 17 00:00:00 2001 From: obligaron Date: Mon, 8 Nov 2021 00:13:50 +0100 Subject: [PATCH] Add OptionEntry Intro --- Source/diablo.cpp | 6 ++---- Source/options.cpp | 14 ++++++++------ Source/options.h | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Source/diablo.cpp b/Source/diablo.cpp index 1b508ce9e..d7e2ae4aa 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -971,13 +971,11 @@ void DiabloSplash() play_movie("gendata\\logo.smk", true); - if (gbIsHellfire && sgOptions.Hellfire.bIntro) { + if (gbIsHellfire && *sgOptions.Hellfire.intro) { play_movie("gendata\\Hellfire.smk", true); - sgOptions.Hellfire.bIntro = false; } - if (!gbIsHellfire && !gbIsSpawn && sgOptions.Diablo.bIntro) { + if (!gbIsHellfire && !gbIsSpawn && *sgOptions.Diablo.intro) { play_movie("gendata\\diablo1.smk", true); - sgOptions.Diablo.bIntro = false; } UiTitleDialog(); diff --git a/Source/options.cpp b/Source/options.cpp index 724dc7a4a..8c2a4a2ee 100644 --- a/Source/options.cpp +++ b/Source/options.cpp @@ -242,10 +242,8 @@ void LoadOptions() } } - sgOptions.Diablo.bIntro = GetIniBool("Diablo", "Intro", true); sgOptions.Diablo.lastSinglePlayerHero = GetIniInt("Diablo", "LastSinglePlayerHero", 0); sgOptions.Diablo.lastMultiplayerHero = GetIniInt("Diablo", "LastMultiplayerHero", 0); - sgOptions.Hellfire.bIntro = GetIniBool("Hellfire", "Intro", true); sgOptions.Hellfire.lastSinglePlayerHero = GetIniInt("Hellfire", "LastSinglePlayerHero", 0); sgOptions.Hellfire.lastMultiplayerHero = GetIniInt("Hellfire", "LastMultiplayerHero", 0); sgOptions.Hellfire.startUpGameOption = static_cast(GetIniInt("Hellfire", "StartUpGameOption", static_cast(StartUpGameOption::None))); @@ -394,10 +392,8 @@ void SaveOptions() } } - SetIniValue("Diablo", "Intro", sgOptions.Diablo.bIntro); SetIniValue("Diablo", "LastSinglePlayerHero", sgOptions.Diablo.lastSinglePlayerHero); SetIniValue("Diablo", "LastMultiplayerHero", sgOptions.Diablo.lastMultiplayerHero); - SetIniValue("Hellfire", "Intro", sgOptions.Hellfire.bIntro); SetIniValue("Hellfire", "SItem", sgOptions.Hellfire.szItem); SetIniValue("Hellfire", "LastSinglePlayerHero", sgOptions.Hellfire.lastSinglePlayerHero); SetIniValue("Hellfire", "LastMultiplayerHero", sgOptions.Hellfire.lastMultiplayerHero); @@ -584,20 +580,26 @@ string_view OptionCategoryBase::GetDescription() const DiabloOptions::DiabloOptions() : OptionCategoryBase("Diablo", N_("Diablo"), N_("Diablo specific Settings")) + , intro("Intro", OptionEntryFlags::OnlyDiablo, N_("Intro"), N_("Enable/disable Intro cinematic."), true) { } std::vector DiabloOptions::GetEntries() { - return {}; + return { + &intro, + }; } HellfireOptions::HellfireOptions() : OptionCategoryBase("Hellfire", N_("Hellfire"), N_("Hellfire specific Settings")) + , intro("Intro", OptionEntryFlags::OnlyHellfire, N_("Intro"), N_("Enable/disable Intro cinematic."), true) { } std::vector HellfireOptions::GetEntries() { - return {}; + return { + &intro, + }; } AudioOptions::AudioOptions() diff --git a/Source/options.h b/Source/options.h index bd2e7b291..b588b79c3 100644 --- a/Source/options.h +++ b/Source/options.h @@ -177,7 +177,7 @@ struct DiabloOptions : OptionCategoryBase { std::vector GetEntries() override; /** @brief Play game intro video on startup. */ - bool bIntro; + OptionEntryBoolean intro; /** @brief Remembers what singleplayer hero/save was last used. */ std::uint32_t lastSinglePlayerHero; /** @brief Remembers what multiplayer hero/save was last used. */ @@ -189,7 +189,7 @@ struct HellfireOptions : OptionCategoryBase { std::vector GetEntries() override; /** @brief Play game intro video on startup. */ - bool bIntro; + OptionEntryBoolean intro; /** @brief Cornerstone of the world item. */ char szItem[sizeof(ItemPack) * 2 + 1]; /** @brief Remembers what singleplayer hero/save was last used. */