Ja es por canviar el jugador que maneja el teclat "en calent" desde el service menu
This commit is contained in:
@@ -143,6 +143,10 @@ auto saveToFile() -> bool {
|
||||
file << "\n\n## CONTROLLERS\n";
|
||||
gamepad_manager.saveToFile(file);
|
||||
|
||||
// Opciones de teclado
|
||||
file << "\n\n## KEYBOARD\n";
|
||||
file << "keyboard.player=" << static_cast<int>(keyboard.player_id) << "\n";
|
||||
|
||||
// Cierra el fichero
|
||||
file.close();
|
||||
|
||||
@@ -207,7 +211,9 @@ auto set(const std::string& var, const std::string& value) -> bool {
|
||||
pending_changes.new_difficulty = settings.difficulty;
|
||||
}},
|
||||
{"game.autofire", [](const auto& val) { settings.autofire = stringToBool(val); }},
|
||||
{"game.shutdown_enabled", [](const auto& val) { settings.shutdown_enabled = stringToBool(val); }}};
|
||||
{"game.shutdown_enabled", [](const auto& val) { settings.shutdown_enabled = stringToBool(val); }},
|
||||
// Teclado
|
||||
{"keyboard.player", [](const auto& val) { keyboard.player_id = static_cast<Player::Id>(stoi(val)); }}};
|
||||
|
||||
// Maneja por separado la configuración general de los mandos
|
||||
if (var.starts_with("controller.")) {
|
||||
@@ -317,7 +323,7 @@ void GamepadManager::assignAndLinkGamepads() {
|
||||
assignRemainingGamepads(physical_gamepads, assigned_instances);
|
||||
|
||||
// Pasada 3: Limpia los datos de los slots que se quedaron sin mando.
|
||||
clearUnassignedGamepadSlots();
|
||||
clearUnassignedGamepadSlots();
|
||||
}
|
||||
|
||||
// --- PRIMERA PASADA: Intenta asignar mandos basándose en la ruta guardada ---
|
||||
@@ -328,20 +334,19 @@ void GamepadManager::assignGamepadsByPath(
|
||||
for (size_t i = 0; i < MAX_PLAYERS; ++i) {
|
||||
const std::string& desired_path = desired_paths[i];
|
||||
if (desired_path.empty()) {
|
||||
continue; // No hay ruta guardada para este slot.
|
||||
continue; // No hay ruta guardada para este slot.
|
||||
}
|
||||
|
||||
// Buscamos un mando físico que coincida con la ruta y no esté ya asignado.
|
||||
for (const auto& physical_gamepad : physical_gamepads) {
|
||||
if (physical_gamepad->path == desired_path && !isGamepadAssigned(physical_gamepad, assigned_instances)) {
|
||||
|
||||
// Asignamos y actualizamos TODOS los datos.
|
||||
gamepads_[i].instance = physical_gamepad;
|
||||
gamepads_[i].name = physical_gamepad->name; // <--- LA LÍNEA QUE FALTABA
|
||||
gamepads_[i].name = physical_gamepad->name; // <--- LA LÍNEA QUE FALTABA
|
||||
// No es necesario actualizar la path aquí porque ya coincide.
|
||||
|
||||
|
||||
assigned_instances.push_back(physical_gamepad);
|
||||
break; // Mando encontrado para este jugador, pasamos al siguiente.
|
||||
break; // Mando encontrado para este jugador, pasamos al siguiente.
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -399,4 +404,27 @@ auto GamepadManager::isGamepadAssigned(
|
||||
}
|
||||
return false; // No se encontró en la lista.
|
||||
}
|
||||
|
||||
// Convierte un player id a texto segun Lang
|
||||
auto playerIdToString(Player::Id player_id) -> std::string {
|
||||
switch (player_id) {
|
||||
case Player::Id::PLAYER1:
|
||||
return Lang::getText("[SERVICE_MENU] PLAYER1");
|
||||
case Player::Id::PLAYER2:
|
||||
return Lang::getText("[SERVICE_MENU] PLAYER2");
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
// Convierte un texto a player id segun Lang
|
||||
auto stringToPlayerId(std::string name) -> Player::Id {
|
||||
if (name == Lang::getText("[SERVICE_MENU] PLAYER1")) {
|
||||
return Player::Id::PLAYER1;
|
||||
} else if (name == Lang::getText("[SERVICE_MENU] PLAYER2")) {
|
||||
return Player::Id::PLAYER2;
|
||||
} else {
|
||||
return Player::Id::NO_PLAYER;
|
||||
}
|
||||
}
|
||||
} // namespace Options
|
||||
Reference in New Issue
Block a user