Browse Source

Move Game Mode to own category

pull/7574/head
Eric Robinson 2 years ago committed by Anders Jenbo
parent
commit
8d1fb2bd63
  1. 2
      Source/DiabloUI/selstart.cpp
  2. 6
      Source/diablo.cpp
  3. 27
      Source/options.cpp
  4. 12
      Source/options.h

2
Source/DiabloUI/selstart.cpp

@ -18,7 +18,7 @@ std::vector<std::unique_ptr<UiItemBase>> vecDialog;
void ItemSelected(size_t value)
{
auto option = static_cast<StartUpGameMode>(vecDialogItems[value]->m_value);
sgOptions.StartUp.gameMode.SetValue(option);
sgOptions.GameMode.gameMode.SetValue(option);
SaveOptions();
endMenu = true;
}

6
Source/diablo.cpp

@ -1176,9 +1176,9 @@ void ApplicationInit()
void DiabloInit()
{
if (forceSpawn || *sgOptions.StartUp.shareware)
if (forceSpawn || *sgOptions.GameMode.shareware)
gbIsSpawn = true;
if (forceDiablo || *sgOptions.StartUp.gameMode == StartUpGameMode::Diablo)
if (forceDiablo || *sgOptions.GameMode.gameMode == StartUpGameMode::Diablo)
gbIsHellfire = false;
if (forceHellfire)
gbIsHellfire = true;
@ -1199,7 +1199,7 @@ void DiabloInit()
UiInitialize();
was_ui_init = true;
if (gbIsHellfire && !forceHellfire && *sgOptions.StartUp.gameMode == StartUpGameMode::Ask) {
if (gbIsHellfire && !forceHellfire && *sgOptions.GameMode.gameMode == StartUpGameMode::Ask) {
UiSelStartUpGameOption();
if (!gbIsHellfire) {
// Reinitialize the UI Elements because we changed the game

27
Source/options.cpp

@ -194,13 +194,13 @@ void OptionLanguageCodeChanged()
void OptionGameModeChanged()
{
gbIsHellfire = *sgOptions.StartUp.gameMode == StartUpGameMode::Hellfire;
gbIsHellfire = *sgOptions.GameMode.gameMode == StartUpGameMode::Hellfire;
discord_manager::UpdateMenu(true);
}
void OptionSharewareChanged()
{
gbIsSpawn = *sgOptions.StartUp.shareware;
gbIsSpawn = *sgOptions.GameMode.shareware;
}
void OptionAudioChanged()
@ -450,8 +450,8 @@ std::string_view OptionCategoryBase::GetDescription() const
return _(description);
}
StartUpOptions::StartUpOptions()
: OptionCategoryBase("StartUp", N_("Start Up"), N_("Start Up Settings"))
GameModeOptions::GameModeOptions()
: OptionCategoryBase("GameMode", N_("Game Mode"), N_("Game Mode Settings"))
, gameMode("Game", OptionEntryFlags::NeedHellfireMpq | OptionEntryFlags::RecreateUI, N_("Game Mode"), N_("Play Diablo or Hellfire."), StartUpGameMode::Ask,
{
{ StartUpGameMode::Diablo, N_("Diablo") },
@ -459,6 +459,21 @@ StartUpOptions::StartUpOptions()
{ StartUpGameMode::Hellfire, N_("Hellfire") },
})
, shareware("Shareware", OptionEntryFlags::NeedDiabloMpq | OptionEntryFlags::RecreateUI, N_("Restrict to Shareware"), N_("Makes the game compatible with the demo. Enables multiplayer with friends who don't own a full copy of Diablo."), false)
{
gameMode.SetValueChangedCallback(OptionGameModeChanged);
shareware.SetValueChangedCallback(OptionSharewareChanged);
}
std::vector<OptionEntryBase *> GameModeOptions::GetEntries()
{
return {
&gameMode,
&shareware,
};
}
StartUpOptions::StartUpOptions()
: OptionCategoryBase("StartUp", N_("Start Up"), N_("Start Up Settings"))
, diabloIntro("Diablo Intro", OptionEntryFlags::OnlyDiablo, N_("Intro"), N_("Shown Intro cinematic."), StartUpIntro::Once,
{
{ StartUpIntro::Off, N_("OFF") },
@ -478,14 +493,10 @@ StartUpOptions::StartUpOptions()
{ StartUpSplash::None, N_("None") },
})
{
gameMode.SetValueChangedCallback(OptionGameModeChanged);
shareware.SetValueChangedCallback(OptionSharewareChanged);
}
std::vector<OptionEntryBase *> StartUpOptions::GetEntries()
{
return {
&gameMode,
&shareware,
&diabloIntro,
&hellfireIntro,
&splash,

12
Source/options.h

@ -412,12 +412,18 @@ protected:
const char *description;
};
struct StartUpOptions : OptionCategoryBase {
StartUpOptions();
struct GameModeOptions : OptionCategoryBase {
GameModeOptions();
std::vector<OptionEntryBase *> GetEntries() override;
OptionEntryEnum<StartUpGameMode> gameMode;
OptionEntryBoolean shareware;
};
struct StartUpOptions : OptionCategoryBase {
StartUpOptions();
std::vector<OptionEntryBase *> GetEntries() override;
/** @brief Play game intro video on diablo startup. */
OptionEntryEnum<StartUpIntro> diabloIntro;
/** @brief Play game intro video on hellfire startup. */
@ -798,6 +804,7 @@ private:
};
struct Options {
GameModeOptions GameMode;
StartUpOptions StartUp;
DiabloOptions Diablo;
HellfireOptions Hellfire;
@ -815,6 +822,7 @@ struct Options {
{
return {
&Language,
&GameMode,
&StartUp,
&Graphics,
&Audio,

Loading…
Cancel
Save