mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-13 00:47:57 -05:00
core/hid: Add output devices
This commit is contained in:
@ -465,6 +465,8 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i
|
||||
UpdateControllerEnabledButtons();
|
||||
UpdateControllerButtonNames();
|
||||
UpdateMotionButtons();
|
||||
emulated_controller->SetNpadType(
|
||||
GetControllerTypeFromIndex(ui->comboControllerType->currentIndex()));
|
||||
});
|
||||
|
||||
connect(ui->comboDevices, qOverload<int>(&QComboBox::activated), this,
|
||||
@ -540,6 +542,11 @@ void ConfigureInputPlayer::LoadConfiguration() {
|
||||
|
||||
void ConfigureInputPlayer::ConnectPlayer(bool connected) {
|
||||
ui->groupConnectedController->setChecked(connected);
|
||||
if (connected) {
|
||||
emulated_controller->Connect();
|
||||
} else {
|
||||
emulated_controller->Disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
void ConfigureInputPlayer::UpdateInputDeviceCombobox() {
|
||||
|
@ -24,34 +24,6 @@ PlayerControlPreview::~PlayerControlPreview() {
|
||||
}
|
||||
};
|
||||
|
||||
PlayerControlPreview::LedPattern PlayerControlPreview::GetColorPattern(std::size_t index,
|
||||
bool player_on) {
|
||||
if (!player_on) {
|
||||
return {0, 0, 0, 0};
|
||||
}
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
return {1, 0, 0, 0};
|
||||
case 1:
|
||||
return {1, 1, 0, 0};
|
||||
case 2:
|
||||
return {1, 1, 1, 0};
|
||||
case 3:
|
||||
return {1, 1, 1, 1};
|
||||
case 4:
|
||||
return {1, 0, 0, 1};
|
||||
case 5:
|
||||
return {1, 0, 1, 0};
|
||||
case 6:
|
||||
return {1, 0, 1, 1};
|
||||
case 7:
|
||||
return {0, 1, 1, 0};
|
||||
default:
|
||||
return {0, 0, 0, 0};
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerControlPreview::SetController(Core::HID::EmulatedController* controller_) {
|
||||
if (is_controller_set) {
|
||||
controller->DeleteCallback(callback_key);
|
||||
@ -160,8 +132,13 @@ void PlayerControlPreview::ControllerUpdate(Core::HID::ControllerTriggerType typ
|
||||
|
||||
switch (type) {
|
||||
case Core::HID::ControllerTriggerType::Connected:
|
||||
is_connected = true;
|
||||
led_pattern = controller->GetLedPattern();
|
||||
needs_redraw = true;
|
||||
break;
|
||||
case Core::HID::ControllerTriggerType::Disconnected:
|
||||
is_connected = controller->IsConnected();
|
||||
is_connected = false;
|
||||
led_pattern.raw = 0;
|
||||
needs_redraw = true;
|
||||
break;
|
||||
case Core::HID::ControllerTriggerType::Type:
|
||||
@ -1853,10 +1830,14 @@ void PlayerControlPreview::DrawLeftBody(QPainter& p, const QPointF center) {
|
||||
const float led_size = 5.0f;
|
||||
const QPointF led_position = sideview_center + QPointF(0, -36);
|
||||
int led_count = 0;
|
||||
for (const auto& color : led_color) {
|
||||
p.setBrush(color);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
}
|
||||
p.setBrush(led_pattern.position1 ? colors.led_on : colors.led_off);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
p.setBrush(led_pattern.position2 ? colors.led_on : colors.led_off);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
p.setBrush(led_pattern.position3 ? colors.led_on : colors.led_off);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
p.setBrush(led_pattern.position4 ? colors.led_on : colors.led_off);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
}
|
||||
|
||||
void PlayerControlPreview::DrawRightBody(QPainter& p, const QPointF center) {
|
||||
@ -1949,10 +1930,14 @@ void PlayerControlPreview::DrawRightBody(QPainter& p, const QPointF center) {
|
||||
const float led_size = 5.0f;
|
||||
const QPointF led_position = sideview_center + QPointF(0, -36);
|
||||
int led_count = 0;
|
||||
for (const auto& color : led_color) {
|
||||
p.setBrush(color);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
}
|
||||
p.setBrush(led_pattern.position1 ? colors.led_on : colors.led_off);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
p.setBrush(led_pattern.position2 ? colors.led_on : colors.led_off);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
p.setBrush(led_pattern.position3 ? colors.led_on : colors.led_off);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
p.setBrush(led_pattern.position4 ? colors.led_on : colors.led_off);
|
||||
DrawRectangle(p, led_position + QPointF(0, 12 * led_count++), led_size, led_size);
|
||||
}
|
||||
|
||||
void PlayerControlPreview::DrawProTriggers(QPainter& p, const QPointF center,
|
||||
|
@ -59,13 +59,6 @@ private:
|
||||
SR,
|
||||
};
|
||||
|
||||
struct LedPattern {
|
||||
bool position1;
|
||||
bool position2;
|
||||
bool position3;
|
||||
bool position4;
|
||||
};
|
||||
|
||||
struct ColorMapping {
|
||||
QColor outline{};
|
||||
QColor primary{};
|
||||
@ -88,7 +81,6 @@ private:
|
||||
QColor deadzone{};
|
||||
};
|
||||
|
||||
static LedPattern GetColorPattern(std::size_t index, bool player_on);
|
||||
void UpdateColors();
|
||||
void ResetInputs();
|
||||
|
||||
@ -194,7 +186,7 @@ private:
|
||||
int callback_key;
|
||||
QColor button_color{};
|
||||
ColorMapping colors{};
|
||||
std::array<QColor, 4> led_color{};
|
||||
Core::HID::LedPattern led_pattern{0, 0, 0, 0};
|
||||
std::size_t player_index{};
|
||||
Core::HID::EmulatedController* controller;
|
||||
std::size_t button_mapping_index{Settings::NativeButton::NumButtons};
|
||||
|
Reference in New Issue
Block a user