feat(input): accio MENU i assignacio de mando per path + name

Afegeix l'accio MENU a InputAction (obre el menu de servei des del mando,
equivalent a F12 al teclat) i els camps gamepad.button_start i
gamepad.button_menu al config per jugador. Tambe afegeix gamepad_path
per distingir dos mandos del mateix model i prioritza path > name >
slot a applyPlayerNBindings via el nou resolvePlayerGamepad.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-24 19:56:59 +02:00
parent e5a91825b1
commit 3e8f2f35bf
7 changed files with 82 additions and 5 deletions
+28 -4
View File
@@ -373,12 +373,21 @@ namespace ConfigYaml {
if (gp.contains("button_shoot")) {
player1.gamepad.button_shoot = stringToButton(gp["button_shoot"].get_value<std::string>());
}
if (gp.contains("button_start")) {
player1.gamepad.button_start = stringToButton(gp["button_start"].get_value<std::string>());
}
if (gp.contains("button_menu")) {
player1.gamepad.button_menu = stringToButton(gp["button_menu"].get_value<std::string>());
}
}
// Carregar nom del gamepad
// Carregar nom i path del gamepad assignat
if (p1.contains("gamepad_name")) {
player1.gamepad_name = p1["gamepad_name"].get_value<std::string>();
}
if (p1.contains("gamepad_path")) {
player1.gamepad_path = p1["gamepad_path"].get_value<std::string>();
}
}
// Carregar controls del player 2 desde YAML
@@ -421,12 +430,21 @@ namespace ConfigYaml {
if (gp.contains("button_shoot")) {
player2.gamepad.button_shoot = stringToButton(gp["button_shoot"].get_value<std::string>());
}
if (gp.contains("button_start")) {
player2.gamepad.button_start = stringToButton(gp["button_start"].get_value<std::string>());
}
if (gp.contains("button_menu")) {
player2.gamepad.button_menu = stringToButton(gp["button_menu"].get_value<std::string>());
}
}
// Carregar nom del gamepad
// Carregar nom i path del gamepad assignat
if (p2.contains("gamepad_name")) {
player2.gamepad_name = p2["gamepad_name"].get_value<std::string>();
}
if (p2.contains("gamepad_path")) {
player2.gamepad_path = p2["gamepad_path"].get_value<std::string>();
}
}
// Carregar configuración des del file YAML
@@ -531,7 +549,10 @@ namespace ConfigYaml {
file << " button_right: " << buttonToString(player1.gamepad.button_right) << "\n";
file << " button_thrust: " << buttonToString(player1.gamepad.button_thrust) << "\n";
file << " button_shoot: " << buttonToString(player1.gamepad.button_shoot) << "\n";
file << " gamepad_name: \"" << player1.gamepad_name << "\" # Buit = primer disponible\n\n";
file << " button_start: " << buttonToString(player1.gamepad.button_start) << "\n";
file << " button_menu: " << buttonToString(player1.gamepad.button_menu) << "\n";
file << " gamepad_name: \"" << player1.gamepad_name << "\" # Buit = primer disponible\n";
file << " gamepad_path: \"" << player1.gamepad_path << "\" # Prioritari sobre name\n\n";
}
// Guardar controls del player 2 a YAML
@@ -548,7 +569,10 @@ namespace ConfigYaml {
file << " button_right: " << buttonToString(player2.gamepad.button_right) << "\n";
file << " button_thrust: " << buttonToString(player2.gamepad.button_thrust) << "\n";
file << " button_shoot: " << buttonToString(player2.gamepad.button_shoot) << "\n";
file << " gamepad_name: \"" << player2.gamepad_name << "\" # Buit = segon disponible\n\n";
file << " button_start: " << buttonToString(player2.gamepad.button_start) << "\n";
file << " button_menu: " << buttonToString(player2.gamepad.button_menu) << "\n";
file << " gamepad_name: \"" << player2.gamepad_name << "\" # Buit = segon disponible\n";
file << " gamepad_path: \"" << player2.gamepad_path << "\" # Prioritari sobre name\n\n";
}
// Guardar configuración al file YAML