Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions src/port/UI/Menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,13 @@ void Menu::UpdateWindowBackendObjects() {
}
}

void Menu::UpdateAudioBackendObjects() {
availableAudioBackends = Ship::Context::GetRawInstance()->GetAudio()->GetAvailableAudioBackends();
for (auto& backend : *availableAudioBackends) {
availableAudioBackendsMap[backend] = audioBackendsMap.at(backend);
}
}

bool Menu::IsMenuPopped() {
return popped;
}
Expand All @@ -135,6 +142,7 @@ void Menu::InitElement() {
menuThemeIndex = static_cast<UIWidgets::Colors>(CVarGetInteger(CVAR_SETTING("Menu.Theme"), defaultThemeIndex));

UpdateWindowBackendObjects();
UpdateAudioBackendObjects();
}

void Menu::UpdateElement() {
Expand Down Expand Up @@ -342,10 +350,9 @@ void Menu::MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors me
UIWidgets::ComboboxOptions options = {};
options.color = menuThemeIndex;
options.tooltip = "Sets the audio API used by the game. Requires a relaunch to take effect.";
options.disabled =
Ship::Context::GetRawInstance()->GetAudio()->GetAvailableAudioBackends()->size() <= 1;
options.disabled = availableAudioBackends->size() <= 1;
options.disabledTooltip = "Only one audio API is available on this platform.";
if (UIWidgets::Combobox("Audio API", &currentAudioBackend, audioBackendsMap, options)) {
if (UIWidgets::Combobox("Audio API", &currentAudioBackend, availableAudioBackendsMap, options)) {
Ship::Context::GetRawInstance()->GetAudio()->SetCurrentAudioBackend(currentAudioBackend);
}
} break;
Expand Down
3 changes: 3 additions & 0 deletions src/port/UI/Menu.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class Menu : public GuiWindow {
void InsertSidebarSearch();
void RemoveSidebarSearch();
void UpdateWindowBackendObjects();
void UpdateAudioBackendObjects();
bool IsMenuPopped();
UIWidgets::Colors GetMenuThemeColor();

Expand All @@ -41,6 +42,8 @@ class Menu : public GuiWindow {
std::shared_ptr<std::vector<int32_t>> availableWindowBackends;
std::unordered_map<Fast::WindowBackend, const char*> availableWindowBackendsMap;
Fast::WindowBackend configWindowBackend;
std::shared_ptr<std::vector<Ship::AudioBackend>> availableAudioBackends;
std::unordered_map<Ship::AudioBackend, const char*> availableAudioBackendsMap;

std::unordered_map<uint32_t, disabledInfo> disabledMap;
std::vector<disabledInfo> disabledVector;
Expand Down
1 change: 1 addition & 0 deletions src/port/UI/MenuTypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ struct MainMenuEntry {

static const std::unordered_map<Ship::AudioBackend, const char*> audioBackendsMap = {
{ Ship::AudioBackend::WASAPI, "Windows Audio Session API" },
{ Ship::AudioBackend::COREAUDIO, "Core Audio" },
{ Ship::AudioBackend::SDL, "SDL" },
{ Ship::AudioBackend::NUL, "Null" },
};
Expand Down
Loading