From 20fbd468862dbea4cb6162e1e7fc1ec430d449cb Mon Sep 17 00:00:00 2001 From: obligaron Date: Sun, 28 Nov 2021 19:14:27 +0100 Subject: [PATCH] Add OptionEntryFlags::NeedDiabloMpq/NeedHellfireMpq --- Source/DiabloUI/settingsmenu.cpp | 7 ++++++- Source/options.h | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/DiabloUI/settingsmenu.cpp b/Source/DiabloUI/settingsmenu.cpp index bef5fe7d7..4f22131ab 100644 --- a/Source/DiabloUI/settingsmenu.cpp +++ b/Source/DiabloUI/settingsmenu.cpp @@ -32,7 +32,12 @@ enum class SpecialMenuEntry { bool IsValidEntry(OptionEntryBase *pOptionEntry) { - return HasNoneOf(pOptionEntry->GetFlags(), OptionEntryFlags::Invisible | (gbIsHellfire ? OptionEntryFlags::OnlyDiablo : OptionEntryFlags::OnlyHellfire)); + auto flags = pOptionEntry->GetFlags(); + if (HasAnyOf(flags, OptionEntryFlags::NeedDiabloMpq) && !diabdat_mpq) + return false; + if (HasAnyOf(flags, OptionEntryFlags::NeedHellfireMpq) && !hellfire_mpq) + return false; + return HasNoneOf(flags, OptionEntryFlags::Invisible | (gbIsHellfire ? OptionEntryFlags::OnlyDiablo : OptionEntryFlags::OnlyHellfire)); } std::vector CreateDrawStringFormatArgForEntry(OptionEntryBase *pEntry) diff --git a/Source/options.h b/Source/options.h index dce6fc052..d2d1a273f 100644 --- a/Source/options.h +++ b/Source/options.h @@ -58,6 +58,10 @@ enum class OptionEntryFlags { OnlyDiablo = 1 << 4, /** @brief After option is changed the UI needs to be recreated. */ RecreateUI = 1 << 5, + /** @brief diablo.mpq must be present. */ + NeedDiabloMpq = 1 << 6, + /** @brief hellfire.mpq must be present. */ + NeedHellfireMpq = 1 << 7, }; use_enum_as_flags(OptionEntryFlags);