CLI flag to give P2 the controller

This commit is contained in:
2026-02-20 00:02:04 -05:00
parent d269082c8b
commit 9dfc942dfc
3 changed files with 13 additions and 3 deletions
+9 -2
View File
@@ -272,13 +272,14 @@ impl Mappings for InputMapping {
#[derive(Clone)]
pub struct MappingProvider {
persistence: Persistence,
first_gamepad_is_p2: bool,
device_mappings: Arc<RwLock<HashMap<DeviceId, Arc<RwLock<GamepadMapping>>>>>,
sim_mappings: HashMap<SimId, Arc<RwLock<InputMapping>>>,
gamepad_info: Arc<RwLock<HashMap<GamepadId, GamepadInfo>>>,
}
impl MappingProvider {
pub fn new(persistence: Persistence) -> Self {
pub fn new(persistence: Persistence, first_gamepad_is_p2: bool) -> Self {
let mut sim_mappings = HashMap::new();
let mut device_mappings = HashMap::new();
@@ -307,6 +308,7 @@ impl MappingProvider {
device_mappings: Arc::new(RwLock::new(device_mappings)),
gamepad_info: Arc::new(RwLock::new(HashMap::new())),
sim_mappings,
first_gamepad_is_p2,
}
}
@@ -338,7 +340,12 @@ impl MappingProvider {
.clone();
drop(lock);
let mut lock = self.gamepad_info.write().unwrap();
let bound_to = SimId::values()
let players = if self.first_gamepad_is_p2 {
vec![SimId::Player2, SimId::Player1]
} else {
vec![SimId::Player1, SimId::Player2]
};
let bound_to = players
.into_iter()
.find(|sim_id| lock.values().all(|info| info.bound_to != Some(*sim_id)));
if let Entry::Vacant(entry) = lock.entry(gamepad.id()) {