mirror of
https://github.com/open-goal/jak-project
synced 2026-08-08 18:44:15 -04:00
Ast/kbm remapper update (#1800)
* Reverted default keyboard camera controls to IJKL and fixed bug where use mouse would always be set as false * Fixed inverse axis on Right Y axis analog keyboard control * Fixed newpad unit test, fixed variable typo, and fixed MapAnalog typo in newpad.h Co-authored-by: animalstyletaco <animalstyletaco95@gmail.com>
This commit is contained in:
@@ -155,8 +155,9 @@ void LoadPeripheralSettings(const ghc::filesystem::path& filepath) {
|
||||
g_is_debug_menu_visible_on_startup = configuration["Debug Menu Visibility"].get<bool>();
|
||||
}
|
||||
|
||||
g_settings.pad_mapping_info.use_mouse = configuration.value<bool>("Use Mouse", false);
|
||||
|
||||
if (configuration.find("Debug Menu Visibility") != configuration.end()) {
|
||||
g_settings.pad_mapping_info.use_mouse = configuration["Use Mouse"].get<bool>();
|
||||
}
|
||||
int controller_index = 0;
|
||||
for (const auto& peripheral : configuration["Peripherals"]) {
|
||||
auto& controller_buttons_json = peripheral["Controller"]["Buttons"];
|
||||
|
||||
+21
-19
@@ -213,8 +213,7 @@ void UpdateAxisValue(MappingInfo& mapping_info) {
|
||||
double input = 0.0f;
|
||||
if (mapping_info.keyboard_analog_mapping[pad][analog].positive_key > -1 &&
|
||||
mapping_info.keyboard_analog_mapping[pad][analog].positive_key < glfw::NUM_KEYS) {
|
||||
if (analog == static_cast<int>(Analog::Left_Y) ||
|
||||
analog == static_cast<int>(Analog::Right_Y)) {
|
||||
if (analog == static_cast<int>(Analog::Left_Y)) {
|
||||
input -=
|
||||
g_buffered_key_status[mapping_info.keyboard_analog_mapping[pad][analog].positive_key];
|
||||
} else {
|
||||
@@ -224,8 +223,7 @@ void UpdateAxisValue(MappingInfo& mapping_info) {
|
||||
}
|
||||
if (mapping_info.keyboard_analog_mapping[pad][analog].negative_key > -1 &&
|
||||
mapping_info.keyboard_analog_mapping[pad][analog].negative_key < glfw::NUM_KEYS) {
|
||||
if (analog == static_cast<int>(Analog::Left_Y) ||
|
||||
analog == static_cast<int>(Analog::Right_Y)) {
|
||||
if (analog == static_cast<int>(Analog::Left_Y)) {
|
||||
input +=
|
||||
g_buffered_key_status[mapping_info.keyboard_analog_mapping[pad][analog].negative_key];
|
||||
} else {
|
||||
@@ -290,7 +288,10 @@ void MapButton(MappingInfo& mapping, Button button, int pad, int key) {
|
||||
}
|
||||
}
|
||||
|
||||
void MapAnalog(MappingInfo& mapping, Analog button, int pad, AnalogMappingInfo& analomapping_info) {
|
||||
void MapAnalog(MappingInfo& mapping,
|
||||
Analog button,
|
||||
int pad,
|
||||
AnalogMappingInfo& analog_mapping_info) {
|
||||
// check if pad is valid. dont map buttons with invalid pads.
|
||||
if (CheckPadIdx(pad) == -1) {
|
||||
return;
|
||||
@@ -298,9 +299,9 @@ void MapAnalog(MappingInfo& mapping, Analog button, int pad, AnalogMappingInfo&
|
||||
|
||||
if (g_gamepads.gamepad_idx[pad] == -1) {
|
||||
// TODO: Check if other pad is keyboard and if key is already bound
|
||||
mapping.keyboard_analog_mapping[pad][(int)button] = analomapping_info;
|
||||
mapping.keyboard_analog_mapping[pad][(int)button] = analog_mapping_info;
|
||||
} else {
|
||||
mapping.controller_analog_mapping[pad][(int)button] = analomapping_info;
|
||||
mapping.controller_analog_mapping[pad][(int)button] = analog_mapping_info;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -375,22 +376,23 @@ void DefaultMapping(MappingInfo& mapping) {
|
||||
MapButton(mapping, Button::L3, 0, GLFW_KEY_COMMA);
|
||||
MapButton(mapping, Button::R3, 0, GLFW_KEY_PERIOD);
|
||||
|
||||
AnalogMappingInfo analomapping_info;
|
||||
AnalogMappingInfo analog_mapping_info;
|
||||
|
||||
analomapping_info.positive_key = GLFW_KEY_D;
|
||||
analomapping_info.negative_key = GLFW_KEY_A;
|
||||
MapAnalog(mapping, Analog::Left_X, 0, analomapping_info);
|
||||
analog_mapping_info.positive_key = GLFW_KEY_D;
|
||||
analog_mapping_info.negative_key = GLFW_KEY_A;
|
||||
MapAnalog(mapping, Analog::Left_X, 0, analog_mapping_info);
|
||||
|
||||
analomapping_info.positive_key = GLFW_KEY_W;
|
||||
analomapping_info.negative_key = GLFW_KEY_S;
|
||||
MapAnalog(mapping, Analog::Left_Y, 0, analomapping_info);
|
||||
analog_mapping_info.positive_key = GLFW_KEY_W;
|
||||
analog_mapping_info.negative_key = GLFW_KEY_S;
|
||||
MapAnalog(mapping, Analog::Left_Y, 0, analog_mapping_info);
|
||||
|
||||
analomapping_info.mode = AnalogMappingMode::AnalogInput;
|
||||
analomapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
|
||||
MapAnalog(mapping, Analog::Right_X, 0, analomapping_info);
|
||||
analog_mapping_info.positive_key = GLFW_KEY_L;
|
||||
analog_mapping_info.negative_key = GLFW_KEY_J;
|
||||
MapAnalog(mapping, Analog::Right_X, 0, analog_mapping_info);
|
||||
|
||||
analomapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
|
||||
MapAnalog(mapping, Analog::Right_Y, 0, analomapping_info);
|
||||
analog_mapping_info.positive_key = GLFW_KEY_I;
|
||||
analog_mapping_info.negative_key = GLFW_KEY_K;
|
||||
MapAnalog(mapping, Analog::Right_Y, 0, analog_mapping_info);
|
||||
|
||||
const double default_mouse_x_sensitivity = 5.0f;
|
||||
const double default_mouse_y_sensitivity = 2.0f;
|
||||
|
||||
@@ -100,7 +100,7 @@ void DefaultMapping(MappingInfo& mapping);
|
||||
int IsPressed(MappingInfo& mapping, Button button, int pad);
|
||||
int GetAnalogValue(MappingInfo& mapping, Analog analog, int pad);
|
||||
void MapButton(MappingInfo& mapping, Button button, int pad, int key);
|
||||
void MapAnalog(MappingInfo& mapping, Button button, int pad, AnalogMappingInfo& analogMapping);
|
||||
void MapAnalog(MappingInfo& mapping, Analog button, int pad, AnalogMappingInfo& analogMapping);
|
||||
void SetAnalogAxisValue(MappingInfo& mapping, int axis, double value);
|
||||
void ClearAnalogAxisValue(MappingInfo& mapping, int axis);
|
||||
|
||||
|
||||
@@ -99,6 +99,15 @@ TEST_F(PeripheralTest, SetAnalogAxisValue_NominalAnalogAxisY_SetConvertedValue)
|
||||
}
|
||||
TEST_F(PeripheralTest, SetAnalogAxisValue_InputLargerThanMaxValue_SetMaxValue) {
|
||||
// Arrange
|
||||
Pad::AnalogMappingInfo analog_mapping_info;
|
||||
|
||||
analog_mapping_info.mode = Pad::AnalogMappingMode::AnalogInput;
|
||||
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
|
||||
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_X, 0, analog_mapping_info);
|
||||
|
||||
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
|
||||
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_Y, 0, analog_mapping_info);
|
||||
|
||||
float expected_analog_value = 1;
|
||||
|
||||
// Act
|
||||
@@ -111,6 +120,14 @@ TEST_F(PeripheralTest, SetAnalogAxisValue_InputLargerThanMaxValue_SetMaxValue) {
|
||||
TEST_F(PeripheralTest, SetAnalogAxisValue_InputSmallerThanMinValue_SetMinValue) {
|
||||
// Arrange
|
||||
float expected_analog_value = -1;
|
||||
Pad::AnalogMappingInfo analog_mapping_info;
|
||||
|
||||
analog_mapping_info.mode = Pad::AnalogMappingMode::AnalogInput;
|
||||
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
|
||||
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_X, 0, analog_mapping_info);
|
||||
|
||||
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
|
||||
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_Y, 0, analog_mapping_info);
|
||||
|
||||
// Act
|
||||
Pad::SetAnalogAxisValue(mapping_info_, static_cast<int>(GlfwKeyCustomAxis::CURSOR_X_AXIS),
|
||||
@@ -138,6 +155,14 @@ TEST_F(
|
||||
// Arrange
|
||||
float expected_x_axis_sensitivity = 1e-4;
|
||||
mapping_info_.mouse_x_axis_sensitivities[0] = 0;
|
||||
Pad::AnalogMappingInfo analog_mapping_info;
|
||||
|
||||
analog_mapping_info.mode = Pad::AnalogMappingMode::AnalogInput;
|
||||
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
|
||||
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_X, 0, analog_mapping_info);
|
||||
|
||||
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
|
||||
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_Y, 0, analog_mapping_info);
|
||||
|
||||
// Act
|
||||
Pad::SetAnalogAxisValue(mapping_info_, static_cast<int>(GlfwKeyCustomAxis::CURSOR_X_AXIS), 100);
|
||||
@@ -151,6 +176,14 @@ TEST_F(
|
||||
// Arrange
|
||||
float expected_y_axis_sensitivity = 1e-4;
|
||||
mapping_info_.mouse_y_axis_sensitivities[0] = 0;
|
||||
Pad::AnalogMappingInfo analog_mapping_info;
|
||||
|
||||
analog_mapping_info.mode = Pad::AnalogMappingMode::AnalogInput;
|
||||
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
|
||||
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_X, 0, analog_mapping_info);
|
||||
|
||||
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
|
||||
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_Y, 0, analog_mapping_info);
|
||||
|
||||
// Act
|
||||
Pad::SetAnalogAxisValue(mapping_info_, static_cast<int>(GlfwKeyCustomAxis::CURSOR_Y_AXIS), 100);
|
||||
|
||||
Reference in New Issue
Block a user