mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-19 04:53:12 +01:00
Make the OpenRCT2 theme song the default
This commit is contained in:
@@ -1349,34 +1349,22 @@ private:
|
||||
break;
|
||||
case WIDX_TITLE_MUSIC_DROPDOWN:
|
||||
{
|
||||
if (!IsRCT1TitleMusicAvailable())
|
||||
const bool rct1MusicThemeIsAvailable = IsRCT1TitleMusicAvailable();
|
||||
int32_t numItems{};
|
||||
int32_t checkedIndex{};
|
||||
for (auto theme : TitleThemeOptions)
|
||||
{
|
||||
// Only show None and RCT2
|
||||
int32_t numItems{};
|
||||
if (theme.Kind == TitleMusicKind::RCT1 && !rct1MusicThemeIsAvailable)
|
||||
continue;
|
||||
|
||||
if (gConfigSound.TitleMusic == theme.Kind)
|
||||
checkedIndex = numItems;
|
||||
|
||||
gDropdownItems[numItems].Format = STR_DROPDOWN_MENU_LABEL;
|
||||
gDropdownItems[numItems++].Args = TitleMusicNames[0];
|
||||
gDropdownItems[numItems].Format = STR_DROPDOWN_MENU_LABEL;
|
||||
gDropdownItems[numItems++].Args = TitleMusicNames[2];
|
||||
gDropdownItems[numItems].Format = STR_DROPDOWN_MENU_LABEL;
|
||||
gDropdownItems[numItems++].Args = TitleMusicNames[3];
|
||||
ShowDropdown(widget, numItems);
|
||||
if (gConfigSound.TitleMusic == TitleMusicKind::None)
|
||||
Dropdown::SetChecked(0, true);
|
||||
else if (gConfigSound.TitleMusic == TitleMusicKind::RCT2)
|
||||
Dropdown::SetChecked(1, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Show None, RCT1, RCT2 and random
|
||||
int32_t numItems{};
|
||||
for (auto musicName : TitleMusicNames)
|
||||
{
|
||||
gDropdownItems[numItems].Format = STR_DROPDOWN_MENU_LABEL;
|
||||
gDropdownItems[numItems++].Args = musicName;
|
||||
}
|
||||
ShowDropdown(widget, numItems);
|
||||
Dropdown::SetChecked(EnumValue(gConfigSound.TitleMusic), true);
|
||||
gDropdownItems[numItems++].Args = theme.Name;
|
||||
}
|
||||
ShowDropdown(widget, numItems);
|
||||
Dropdown::SetChecked(checkedIndex, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1409,18 +1397,12 @@ private:
|
||||
break;
|
||||
case WIDX_TITLE_MUSIC_DROPDOWN:
|
||||
{
|
||||
auto titleMusic = static_cast<TitleMusicKind>(dropdownIndex);
|
||||
if (!IsRCT1TitleMusicAvailable() && dropdownIndex >= EnumValue(TitleMusicKind::RCT1))
|
||||
{
|
||||
titleMusic = static_cast<TitleMusicKind>(EnumValue(titleMusic) + 1);
|
||||
}
|
||||
|
||||
gConfigSound.TitleMusic = titleMusic;
|
||||
gConfigSound.TitleMusic = TitleThemeOptions[dropdownIndex].Kind;
|
||||
ConfigSaveDefault();
|
||||
Invalidate();
|
||||
|
||||
OpenRCT2::Audio::StopTitleMusic();
|
||||
if (titleMusic != TitleMusicKind::None)
|
||||
if (gConfigSound.TitleMusic != TitleMusicKind::None)
|
||||
{
|
||||
OpenRCT2::Audio::PlayTitleMusic();
|
||||
}
|
||||
@@ -1467,14 +1449,14 @@ private:
|
||||
return { 500, 0 };
|
||||
}
|
||||
|
||||
StringId GetTitleMusicName()
|
||||
StringId GetTitleMusicName() const
|
||||
{
|
||||
auto index = EnumValue(gConfigSound.TitleMusic);
|
||||
if (index < 0 || static_cast<size_t>(index) >= std::size(TitleMusicNames))
|
||||
{
|
||||
index = EnumValue(TitleMusicKind::None);
|
||||
}
|
||||
return TitleMusicNames[index];
|
||||
auto theme = std::find_if(std::begin(TitleThemeOptions), std::end(TitleThemeOptions), [](auto&& theme) {
|
||||
return gConfigSound.TitleMusic == theme.Kind;
|
||||
});
|
||||
if (theme != std::end(TitleThemeOptions))
|
||||
return theme->Name;
|
||||
return STR_OPENRCT2_DROPDOWN;
|
||||
}
|
||||
|
||||
void AudioPrepareDraw()
|
||||
@@ -2148,9 +2130,16 @@ private:
|
||||
STR_SAVE_EVERY_30MINUTES, STR_SAVE_EVERY_HOUR, STR_SAVE_NEVER,
|
||||
};
|
||||
|
||||
static constexpr StringId TitleMusicNames[] = {
|
||||
STR_OPTIONS_MUSIC_VALUE_NONE, STR_ROLLERCOASTER_TYCOON_1_DROPDOWN, STR_ROLLERCOASTER_TYCOON_2_DROPDOWN,
|
||||
STR_OPENRCT2_DROPDOWN, STR_OPTIONS_MUSIC_VALUE_RANDOM,
|
||||
static constexpr struct
|
||||
{
|
||||
TitleMusicKind Kind;
|
||||
StringId Name;
|
||||
} TitleThemeOptions[] = {
|
||||
{ TitleMusicKind::None, STR_OPTIONS_MUSIC_VALUE_NONE },
|
||||
{ TitleMusicKind::OpenRCT2, STR_OPENRCT2_DROPDOWN },
|
||||
{ TitleMusicKind::RCT1, STR_ROLLERCOASTER_TYCOON_1_DROPDOWN },
|
||||
{ TitleMusicKind::RCT2, STR_ROLLERCOASTER_TYCOON_2_DROPDOWN },
|
||||
{ TitleMusicKind::Random, STR_OPTIONS_MUSIC_VALUE_RANDOM },
|
||||
};
|
||||
|
||||
static constexpr StringId FullscreenModeNames[] = {
|
||||
|
||||
@@ -362,7 +362,8 @@ namespace Config
|
||||
model->Device = reader->GetString("audio_device", "");
|
||||
model->MasterSoundEnabled = reader->GetBoolean("master_sound", true);
|
||||
model->MasterVolume = reader->GetInt32("master_volume", 100);
|
||||
model->TitleMusic = static_cast<TitleMusicKind>(reader->GetInt32("title_music", EnumValue(TitleMusicKind::RCT2)));
|
||||
model->TitleMusic = static_cast<TitleMusicKind>(
|
||||
reader->GetInt32("title_theme", EnumValue(TitleMusicKind::OpenRCT2)));
|
||||
model->SoundEnabled = reader->GetBoolean("sound", true);
|
||||
model->SoundVolume = reader->GetInt32("sound_volume", 100);
|
||||
model->RideMusicEnabled = reader->GetBoolean("ride_music", true);
|
||||
@@ -378,7 +379,7 @@ namespace Config
|
||||
writer->WriteString("audio_device", model->Device);
|
||||
writer->WriteBoolean("master_sound", model->MasterSoundEnabled);
|
||||
writer->WriteInt32("master_volume", model->MasterVolume);
|
||||
writer->WriteInt32("title_music", EnumValue(model->TitleMusic));
|
||||
writer->WriteInt32("title_theme", EnumValue(model->TitleMusic));
|
||||
writer->WriteBoolean("sound", model->SoundEnabled);
|
||||
writer->WriteInt32("sound_volume", model->SoundVolume);
|
||||
writer->WriteBoolean("ride_music", model->RideMusicEnabled);
|
||||
|
||||
@@ -251,10 +251,10 @@ enum class MeasurementFormat : int32_t
|
||||
enum class TitleMusicKind : int32_t
|
||||
{
|
||||
None,
|
||||
Random,
|
||||
OpenRCT2,
|
||||
RCT1,
|
||||
RCT2,
|
||||
OpenRCT2,
|
||||
Random
|
||||
};
|
||||
|
||||
extern GeneralConfiguration gConfigGeneral;
|
||||
|
||||
Reference in New Issue
Block a user