canvi de pc (toquejant Options)
This commit is contained in:
@@ -72,11 +72,11 @@ void ServiceMenu::render()
|
||||
|
||||
// TITULO
|
||||
y += title_padding_;
|
||||
title_text_->writeDX(TEXT_COLOR | TEXT_CENTER, param.game.game_area.center_x, y, lang::getText("[SERVICE_MENU] TITLE"), -4, title_color_);
|
||||
title_text_->writeDX(TEXT_COLOR | TEXT_CENTER, param.game.game_area.center_x, y, title_, -4, title_color_);
|
||||
|
||||
// LINEA
|
||||
y = rect_.y + upper_height_;
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), title_color_.r, title_color_.g, title_color_.b, 255);
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), options.pending_changes.has_pending_changes ? 0 : 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
|
||||
@@ -295,6 +295,7 @@ void ServiceMenu::selectOption()
|
||||
{
|
||||
previous_settings_group_ = current_settings_group_;
|
||||
current_settings_group_ = display_options_.at(selected_)->target_group;
|
||||
title_ = settingsGroupToString(current_settings_group_);
|
||||
updateMenu(current_settings_group_);
|
||||
selected_ = 0;
|
||||
setOptionsPosition();
|
||||
@@ -305,22 +306,22 @@ void ServiceMenu::selectOption()
|
||||
// Opción
|
||||
if (display_options_.at(selected_)->behavior == OptionBehavior::SELECT)
|
||||
{
|
||||
if (display_options_.at(selected_)->caption == lang::getText("[SERVICE_MENU] RESET"))
|
||||
if (display_options_.at(selected_)->caption == Lang::getText("[SERVICE_MENU] RESET"))
|
||||
{
|
||||
section::name = section::Name::RESET;
|
||||
Section::name = Section::Name::RESET;
|
||||
toggle();
|
||||
return;
|
||||
}
|
||||
else if (display_options_.at(selected_)->caption == lang::getText("[SERVICE_MENU] QUIT"))
|
||||
else if (display_options_.at(selected_)->caption == Lang::getText("[SERVICE_MENU] QUIT"))
|
||||
{
|
||||
section::name = section::Name::QUIT;
|
||||
section::options = section::Options::NONE;
|
||||
Section::name = Section::Name::QUIT;
|
||||
Section::options = Section::Options::NONE;
|
||||
return;
|
||||
}
|
||||
else if (display_options_.at(selected_)->caption == lang::getText("[SERVICE_MENU] SHUTDOWN"))
|
||||
else if (display_options_.at(selected_)->caption == Lang::getText("[SERVICE_MENU] SHUTDOWN"))
|
||||
{
|
||||
section::name = section::Name::QUIT;
|
||||
section::options = section::Options::SHUTDOWN;
|
||||
Section::name = Section::Name::QUIT;
|
||||
Section::options = Section::Options::SHUTDOWN;
|
||||
return;
|
||||
}
|
||||
return;
|
||||
@@ -351,51 +352,51 @@ void ServiceMenu::initializeOptions()
|
||||
options_.clear();
|
||||
|
||||
// Video
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] FULLSCREEN"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.video.fullscreen, ValueType::BOOL);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] WINDOW_SIZE"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.window.size, ValueType::INT, 1, options.window.max_size, 1);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] SHADERS"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.video.shaders, ValueType::BOOL);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] VSYNC"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.video.v_sync, ValueType::BOOL);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] INTEGER_SCALE"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.video.integer_scale, ValueType::BOOL);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] FULLSCREEN"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.video.fullscreen, ValueType::BOOL);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] WINDOW_SIZE"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.window.size, ValueType::INT, 1, options.window.max_size, 1);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] SHADERS"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.video.shaders, ValueType::BOOL);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] VSYNC"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.video.v_sync, ValueType::BOOL);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] INTEGER_SCALE"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.video.integer_scale, ValueType::BOOL);
|
||||
|
||||
// Audio
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] AUDIO"), SettingsGroup::AUDIO, OptionBehavior::ADJUST, &options.audio.enabled, ValueType::BOOL);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] MAIN_VOLUME"), SettingsGroup::AUDIO, OptionBehavior::ADJUST, &options.audio.volume, ValueType::INT, 0, 100, 5);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] MUSIC_VOLUME"), SettingsGroup::AUDIO, OptionBehavior::ADJUST, &options.audio.music.volume, ValueType::INT, 0, 100, 5);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] SFX_VOLUME"), SettingsGroup::AUDIO, OptionBehavior::ADJUST, &options.audio.sound.volume, ValueType::INT, 0, 100, 5);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] AUDIO"), SettingsGroup::AUDIO, OptionBehavior::ADJUST, &options.audio.enabled, ValueType::BOOL);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] MAIN_VOLUME"), SettingsGroup::AUDIO, OptionBehavior::ADJUST, &options.audio.volume, ValueType::INT, 0, 100, 5);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] MUSIC_VOLUME"), SettingsGroup::AUDIO, OptionBehavior::ADJUST, &options.audio.music.volume, ValueType::INT, 0, 100, 5);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] SFX_VOLUME"), SettingsGroup::AUDIO, OptionBehavior::ADJUST, &options.audio.sound.volume, ValueType::INT, 0, 100, 5);
|
||||
|
||||
// Settings
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] AUTOFIRE"), SettingsGroup::SETTINGS, OptionBehavior::ADJUST, &options.game.autofire, ValueType::BOOL);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] AUTOFIRE"), SettingsGroup::SETTINGS, OptionBehavior::ADJUST, &options.game.autofire, ValueType::BOOL);
|
||||
options_.emplace_back(
|
||||
lang::getText("[SERVICE_MENU] LANGUAGE"),
|
||||
Lang::getText("[SERVICE_MENU] LANGUAGE"),
|
||||
SettingsGroup::SETTINGS,
|
||||
OptionBehavior::ADJUST,
|
||||
&options.pending_changes.new_language,
|
||||
std::vector<std::string>{
|
||||
lang::getText("[SERVICE_MENU] LANG_ES"),
|
||||
lang::getText("[SERVICE_MENU] LANG_BA"),
|
||||
lang::getText("[SERVICE_MENU] LANG_EN")});
|
||||
Lang::getText("[SERVICE_MENU] LANG_ES"),
|
||||
Lang::getText("[SERVICE_MENU] LANG_BA"),
|
||||
Lang::getText("[SERVICE_MENU] LANG_EN")});
|
||||
options_.emplace_back(
|
||||
lang::getText("[SERVICE_MENU] DIFFICULTY"),
|
||||
Lang::getText("[SERVICE_MENU] DIFFICULTY"),
|
||||
SettingsGroup::SETTINGS,
|
||||
OptionBehavior::ADJUST,
|
||||
&options.pending_changes.new_difficulty,
|
||||
std::vector<std::string>{
|
||||
lang::getText("[SERVICE_MENU] EASY"),
|
||||
lang::getText("[SERVICE_MENU] NORMAL"),
|
||||
lang::getText("[SERVICE_MENU] HARD")});
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] ENABLE_SHUTDOWN"), SettingsGroup::SETTINGS, OptionBehavior::ADJUST, &options.game.shutdown_enabled, ValueType::BOOL);
|
||||
Lang::getText("[SERVICE_MENU] EASY"),
|
||||
Lang::getText("[SERVICE_MENU] NORMAL"),
|
||||
Lang::getText("[SERVICE_MENU] HARD")});
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] ENABLE_SHUTDOWN"), SettingsGroup::SETTINGS, OptionBehavior::ADJUST, &options.game.shutdown_enabled, ValueType::BOOL);
|
||||
|
||||
// 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);
|
||||
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.game.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);
|
||||
|
||||
// Menu principal
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] VIDEO"), SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::VIDEO);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] AUDIO"), SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::AUDIO);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] SETTINGS"), SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::SETTINGS);
|
||||
options_.emplace_back(lang::getText("[SERVICE_MENU] SYSTEM"), SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::SYSTEM);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] VIDEO"), SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::VIDEO);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] AUDIO"), SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::AUDIO);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] SETTINGS"), SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::SETTINGS);
|
||||
options_.emplace_back(Lang::getText("[SERVICE_MENU] SYSTEM"), SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::SYSTEM);
|
||||
|
||||
// Al terminar de inicializar las opciones, recalcula los anchos de menú
|
||||
precalculateMenuWidths();
|
||||
@@ -452,6 +453,7 @@ void ServiceMenu::applySettings(ServiceMenu::SettingsGroup group)
|
||||
// Actualiza las opciones mostradas según el grupo seleccionado
|
||||
void ServiceMenu::updateMenu(SettingsGroup group)
|
||||
{
|
||||
title_ = settingsGroupToString(group);
|
||||
AdjustListValues();
|
||||
option_pairs_ = getOptionPairs(group);
|
||||
display_options_ = getOptionsByGroup(group);
|
||||
@@ -464,6 +466,7 @@ void ServiceMenu::reset()
|
||||
{
|
||||
selected_ = 0;
|
||||
previous_settings_group_ = current_settings_group_ = SettingsGroup::MAIN;
|
||||
title_ = settingsGroupToString(current_settings_group_);
|
||||
initializeOptions();
|
||||
updateMenu(current_settings_group_);
|
||||
setAnchors();
|
||||
@@ -520,10 +523,10 @@ ServiceMenu::OptionEntry *ServiceMenu::getOptionEntryByCaption(const std::string
|
||||
void ServiceMenu::AdjustListValues()
|
||||
{
|
||||
// Idioma
|
||||
auto option = getOptionEntryByCaption(lang::getText("[SERVICE_MENU] LANGUAGE"));
|
||||
auto option = getOptionEntryByCaption(Lang::getText("[SERVICE_MENU] LANGUAGE"));
|
||||
for (size_t i = 0; i < option->value_list.size(); ++i)
|
||||
{
|
||||
if (lang::getCodeFromName(option->value_list[i]) == options.game.language)
|
||||
if (Lang::getCodeFromName(option->value_list[i]) == options.game.language)
|
||||
{
|
||||
option->list_index = i;
|
||||
}
|
||||
@@ -553,8 +556,8 @@ void ServiceMenu::precalculateMenuWidths()
|
||||
{
|
||||
case ValueType::BOOL:
|
||||
max_value_width = std::max({max_value_width,
|
||||
element_text_->lenght(lang::getText("[SERVICE_MENU] ON"), -2),
|
||||
element_text_->lenght(lang::getText("[SERVICE_MENU] OFF"), -2)});
|
||||
element_text_->lenght(Lang::getText("[SERVICE_MENU] ON"), -2),
|
||||
element_text_->lenght(Lang::getText("[SERVICE_MENU] OFF"), -2)});
|
||||
break;
|
||||
case ValueType::INT:
|
||||
max_value_width = std::max({max_value_width,
|
||||
@@ -577,4 +580,23 @@ void ServiceMenu::precalculateMenuWidths()
|
||||
int ServiceMenu::getMenuWidthForGroup(SettingsGroup group) const
|
||||
{
|
||||
return group_menu_widths_[static_cast<int>(group)];
|
||||
}
|
||||
|
||||
std::string ServiceMenu::settingsGroupToString(SettingsGroup group) const
|
||||
{
|
||||
switch (group)
|
||||
{
|
||||
case SettingsGroup::MAIN:
|
||||
return Lang::getText("[SERVICE_MENU] TITLE");
|
||||
case SettingsGroup::VIDEO:
|
||||
return Lang::getText("[SERVICE_MENU] VIDEO");
|
||||
case SettingsGroup::AUDIO:
|
||||
return Lang::getText("[SERVICE_MENU] AUDIO");
|
||||
case SettingsGroup::SETTINGS:
|
||||
return Lang::getText("[SERVICE_MENU] SETTINGS");
|
||||
case SettingsGroup::SYSTEM:
|
||||
return Lang::getText("[SERVICE_MENU] SYSTEM");
|
||||
default:
|
||||
return Lang::getText("[SERVICE_MENU] TITLE");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user