feat(menu): submenú "Jugabilitat" al menú de servei amb tres toggles
Nou apartat al ServiceMenu (entre Controls i Sistema) amb tres toggles ON/OFF connectats a GameplayConfig: látec travessa sarcs, foc amic, col·lisió entre jugadors. Cada canvi crida save() immediatament, així l'estat persisteix entre sessions sense necessitat de "aplicar". Locales ca/en: claus `tweaks` + tres `menu.items.*` corresponents.
This commit is contained in:
1 parent
3635cebf25
commit
e25ccd02fd
4 files changed
+50
No files matched your search
@@ -17,6 +17,7 @@
|
||||
#include "core/rendering/text.hpp"
|
||||
#include "core/system/event_buffer.hpp"
|
||||
#include "core/ui/ui_config.hpp"
|
||||
#include "game/gameplay_config.hpp"
|
||||
#include "game/options.hpp"
|
||||
#include "game/options_apply.hpp"
|
||||
#include "utils/defaults.hpp"
|
||||
@@ -692,6 +693,8 @@ auto ServiceMenu::buildRoot() -> Page {
|
||||
[]() { ServiceMenu::get().pushPage(buildAudio()); }));
|
||||
page.items.push_back(makeSubmenu("menu.items.controls_submenu",
|
||||
[]() { ServiceMenu::get().pushPage(buildControls()); }));
|
||||
page.items.push_back(makeSubmenu("menu.items.tweaks_submenu",
|
||||
[]() { ServiceMenu::get().pushPage(buildTweaks()); }));
|
||||
page.items.push_back(makeSubmenu("menu.items.system_submenu",
|
||||
[]() { ServiceMenu::get().pushPage(buildSystem()); }));
|
||||
return page;
|
||||
@@ -1155,6 +1158,42 @@ void ServiceMenu::startDefineButtons(SDL_Gamepad* pad, const std::string& name,
|
||||
define_buttons_.enable(pad, name, path);
|
||||
}
|
||||
|
||||
auto ServiceMenu::buildTweaks() -> Page {
|
||||
// Submenú "Tweaks" — flags de jugabilitat persistits a `gameplay.yaml`
|
||||
// dins la carpeta de sistema. Cada toggle muta `GameplayConfig` i
|
||||
// n'invoca `save()` immediatament: l'usuari veu el canvi reflectit al
|
||||
// joc sense esperar a un "aplicar" i, si tanca el joc, torna en el
|
||||
// mateix estat. Tres toggles ON/OFF, sense estat addicional.
|
||||
Page page;
|
||||
page.title_key = "menu.titles.tweaks";
|
||||
|
||||
page.items.push_back(makeToggle(
|
||||
"menu.items.whip_pierces_walls",
|
||||
[]() { return GameplayConfig::get().whipDamagePiercesWalls(); },
|
||||
[](bool v) {
|
||||
GameplayConfig::get().setWhipDamagePiercesWalls(v);
|
||||
GameplayConfig::get().save();
|
||||
}));
|
||||
|
||||
page.items.push_back(makeToggle(
|
||||
"menu.items.friendly_fire",
|
||||
[]() { return GameplayConfig::get().friendlyFire(); },
|
||||
[](bool v) {
|
||||
GameplayConfig::get().setFriendlyFire(v);
|
||||
GameplayConfig::get().save();
|
||||
}));
|
||||
|
||||
page.items.push_back(makeToggle(
|
||||
"menu.items.players_collide",
|
||||
[]() { return GameplayConfig::get().playersCollide(); },
|
||||
[](bool v) {
|
||||
GameplayConfig::get().setPlayersCollide(v);
|
||||
GameplayConfig::get().save();
|
||||
}));
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
auto ServiceMenu::buildSystem() -> Page {
|
||||
Page page;
|
||||
page.title_key = "menu.titles.system";
|
||||
|
||||
Reference in new issue
Block a user