|
|
@@ -104,68 +104,76 @@ void InputEngine::SetMotion(const PadIdentifier& identifier, int motion, const B
|
|
|
|
|
|
bool InputEngine::GetButton(const PadIdentifier& identifier, int button) const {
|
|
|
std::lock_guard lock{mutex};
|
|
|
- if (!controller_list.contains(identifier)) {
|
|
|
+ const auto controller_iter = controller_list.find(identifier);
|
|
|
+ if (controller_iter == controller_list.cend()) {
|
|
|
LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
|
|
|
identifier.pad, identifier.port);
|
|
|
return false;
|
|
|
}
|
|
|
- ControllerData controller = controller_list.at(identifier);
|
|
|
- if (!controller.buttons.contains(button)) {
|
|
|
+ const ControllerData& controller = controller_iter->second;
|
|
|
+ const auto button_iter = controller.buttons.find(button);
|
|
|
+ if (button_iter == controller.buttons.cend()) {
|
|
|
LOG_ERROR(Input, "Invalid button {}", button);
|
|
|
return false;
|
|
|
}
|
|
|
- return controller.buttons.at(button);
|
|
|
+ return button_iter->second;
|
|
|
}
|
|
|
|
|
|
bool InputEngine::GetHatButton(const PadIdentifier& identifier, int button, u8 direction) const {
|
|
|
std::lock_guard lock{mutex};
|
|
|
- if (!controller_list.contains(identifier)) {
|
|
|
+ const auto controller_iter = controller_list.find(identifier);
|
|
|
+ if (controller_iter == controller_list.cend()) {
|
|
|
LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
|
|
|
identifier.pad, identifier.port);
|
|
|
return false;
|
|
|
}
|
|
|
- ControllerData controller = controller_list.at(identifier);
|
|
|
- if (!controller.hat_buttons.contains(button)) {
|
|
|
+ const ControllerData& controller = controller_iter->second;
|
|
|
+ const auto hat_iter = controller.hat_buttons.find(button);
|
|
|
+ if (hat_iter == controller.hat_buttons.cend()) {
|
|
|
LOG_ERROR(Input, "Invalid hat button {}", button);
|
|
|
return false;
|
|
|
}
|
|
|
- return (controller.hat_buttons.at(button) & direction) != 0;
|
|
|
+ return (hat_iter->second & direction) != 0;
|
|
|
}
|
|
|
|
|
|
f32 InputEngine::GetAxis(const PadIdentifier& identifier, int axis) const {
|
|
|
std::lock_guard lock{mutex};
|
|
|
- if (!controller_list.contains(identifier)) {
|
|
|
+ const auto controller_iter = controller_list.find(identifier);
|
|
|
+ if (controller_iter == controller_list.cend()) {
|
|
|
LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
|
|
|
identifier.pad, identifier.port);
|
|
|
return 0.0f;
|
|
|
}
|
|
|
- ControllerData controller = controller_list.at(identifier);
|
|
|
- if (!controller.axes.contains(axis)) {
|
|
|
+ const ControllerData& controller = controller_iter->second;
|
|
|
+ const auto axis_iter = controller.axes.find(axis);
|
|
|
+ if (axis_iter == controller.axes.cend()) {
|
|
|
LOG_ERROR(Input, "Invalid axis {}", axis);
|
|
|
return 0.0f;
|
|
|
}
|
|
|
- return controller.axes.at(axis);
|
|
|
+ return axis_iter->second;
|
|
|
}
|
|
|
|
|
|
BatteryLevel InputEngine::GetBattery(const PadIdentifier& identifier) const {
|
|
|
std::lock_guard lock{mutex};
|
|
|
- if (!controller_list.contains(identifier)) {
|
|
|
+ const auto controller_iter = controller_list.find(identifier);
|
|
|
+ if (controller_iter == controller_list.cend()) {
|
|
|
LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
|
|
|
identifier.pad, identifier.port);
|
|
|
return BatteryLevel::Charging;
|
|
|
}
|
|
|
- ControllerData controller = controller_list.at(identifier);
|
|
|
+ const ControllerData& controller = controller_iter->second;
|
|
|
return controller.battery;
|
|
|
}
|
|
|
|
|
|
BasicMotion InputEngine::GetMotion(const PadIdentifier& identifier, int motion) const {
|
|
|
std::lock_guard lock{mutex};
|
|
|
- if (!controller_list.contains(identifier)) {
|
|
|
+ const auto controller_iter = controller_list.find(identifier);
|
|
|
+ if (controller_iter == controller_list.cend()) {
|
|
|
LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
|
|
|
identifier.pad, identifier.port);
|
|
|
return {};
|
|
|
}
|
|
|
- ControllerData controller = controller_list.at(identifier);
|
|
|
+ const ControllerData& controller = controller_iter->second;
|
|
|
return controller.motions.at(motion);
|
|
|
}
|
|
|
|