ServiceMenu: es poden mostrar o ocultar les opcions

This commit is contained in:
2025-06-14 19:58:29 +02:00
parent 8ce5da623b
commit dc9a675667
2 changed files with 22 additions and 17 deletions

View File

@@ -67,16 +67,15 @@ void ServiceMenu::render()
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), title_color_.r, title_color_.g, title_color_.b, 255);
SDL_RenderRect(Screen::get()->getRenderer(), &rect_);
// Si está animando el resize, no pintar el contenido
// if (resizing_) return;
// TITULO
y += title_padding_;
title_text_->writeDX(TEXT_COLOR | TEXT_CENTER, param.game.game_area.center_x, y, title_, -4, title_color_);
if (Options::pending_changes.has_pending_changes)
element_text_->writeDX(TEXT_COLOR | TEXT_CENTER, param.game.game_area.center_x, y + 25, Lang::getText("[SERVICE_MENU] NEED_RESTART_MESSAGE"), -2, title_color_);
// LINEA
y = rect_.y + upper_height_;
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), Options::pending_changes.has_pending_changes ? 0 : title_color_.r, title_color_.g, title_color_.b, 255);
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), title_color_.r, title_color_.g, title_color_.b, 255);
SDL_RenderLine(Screen::get()->getRenderer(), rect_.x + OPTIONS_HORIZONTAL_PADDING_, y, rect_.x + rect_.w - OPTIONS_HORIZONTAL_PADDING_, y);
// OPCIONES
@@ -396,8 +395,7 @@ void ServiceMenu::initializeOptions()
// System
options_.emplace_back(Lang::getText("[SERVICE_MENU] RESET"), SettingsGroup::SYSTEM, OptionBehavior::SELECT, nullptr, ValueType::NONE);
options_.emplace_back(Lang::getText("[SERVICE_MENU] QUIT"), SettingsGroup::SYSTEM, OptionBehavior::SELECT, nullptr, ValueType::NONE);
if (Options::settings.shutdown_enabled)
options_.emplace_back(Lang::getText("[SERVICE_MENU] SHUTDOWN"), SettingsGroup::SYSTEM, OptionBehavior::SELECT, nullptr, ValueType::NONE);
options_.emplace_back(Lang::getText("[SERVICE_MENU] SHUTDOWN"), SettingsGroup::SYSTEM, OptionBehavior::SELECT, nullptr, ValueType::NONE, !Options::settings.shutdown_enabled);
// Menu principal
options_.emplace_back(Lang::getText("[SERVICE_MENU] VIDEO"), SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::VIDEO);
@@ -416,7 +414,7 @@ ServiceMenu::OptionPairs ServiceMenu::getOptionPairs(ServiceMenu::SettingsGroup
for (const auto &option : options_)
{
if (option.group == group)
if (option.group == group && !option.hidden)
{
option_pairs.emplace_back(option.caption, option.getValueAsString());
}
@@ -431,7 +429,7 @@ std::vector<ServiceMenu::OptionEntry *> ServiceMenu::getOptionsByGroup(SettingsG
std::vector<OptionEntry *> filtered_options;
for (auto &option : options_)
{
if (option.group == group)
if (option.group == group && !option.hidden)
{
filtered_options.push_back(&option);
}
@@ -451,7 +449,13 @@ void ServiceMenu::applySettings(ServiceMenu::SettingsGroup group)
Audio::get()->applySettings();
break;
case SettingsGroup::SETTINGS:
{
auto option = getOptionEntryByCaption(Lang::getText("[SERVICE_MENU] SHUTDOWN"));
if (option != nullptr) {
option->hidden = !Options::settings.shutdown_enabled;
}
break;
}
default:
break;
}