|
|
|
@ -66,6 +66,11 @@ static const std::array<int, Settings::NativeButton::NumButtons> default_buttons |
|
|
|
SDL_SCANCODE_M, SDL_SCANCODE_N, SDL_SCANCODE_1, SDL_SCANCODE_2, SDL_SCANCODE_B, |
|
|
|
}; |
|
|
|
|
|
|
|
static const std::array<int, Settings::NativeMotion::NumMotions> default_motions = { |
|
|
|
SDL_SCANCODE_7, |
|
|
|
SDL_SCANCODE_8, |
|
|
|
}; |
|
|
|
|
|
|
|
static const std::array<std::array<int, 5>, Settings::NativeAnalog::NumAnalogs> default_analogs{{ |
|
|
|
{ |
|
|
|
SDL_SCANCODE_UP, |
|
|
|
@ -102,27 +107,42 @@ void Config::ReadSetting(const std::string& group, Settings::BasicSetting<Type>& |
|
|
|
void Config::ReadValues() { |
|
|
|
// Controls
|
|
|
|
for (std::size_t p = 0; p < Settings::values.players.GetValue().size(); ++p) { |
|
|
|
auto& player = Settings::values.players.GetValue()[p]; |
|
|
|
|
|
|
|
const auto group = fmt::format("ControlsP{}", p); |
|
|
|
for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) { |
|
|
|
std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]); |
|
|
|
Settings::values.players.GetValue()[p].buttons[i] = |
|
|
|
player.buttons[i] = |
|
|
|
sdl2_config->Get(group, Settings::NativeButton::mapping[i], default_param); |
|
|
|
if (Settings::values.players.GetValue()[p].buttons[i].empty()) |
|
|
|
Settings::values.players.GetValue()[p].buttons[i] = default_param; |
|
|
|
if (player.buttons[i].empty()) { |
|
|
|
player.buttons[i] = default_param; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) { |
|
|
|
std::string default_param = InputCommon::GenerateAnalogParamFromKeys( |
|
|
|
default_analogs[i][0], default_analogs[i][1], default_analogs[i][2], |
|
|
|
default_analogs[i][3], default_analogs[i][4], 0.5f); |
|
|
|
Settings::values.players.GetValue()[p].analogs[i] = |
|
|
|
player.analogs[i] = |
|
|
|
sdl2_config->Get(group, Settings::NativeAnalog::mapping[i], default_param); |
|
|
|
if (Settings::values.players.GetValue()[p].analogs[i].empty()) |
|
|
|
Settings::values.players.GetValue()[p].analogs[i] = default_param; |
|
|
|
if (player.analogs[i].empty()) { |
|
|
|
player.analogs[i] = default_param; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i < Settings::NativeMotion::NumMotions; ++i) { |
|
|
|
const std::string default_param = |
|
|
|
InputCommon::GenerateKeyboardParam(default_motions[i]); |
|
|
|
auto& player_motions = player.motions[i]; |
|
|
|
|
|
|
|
player_motions = |
|
|
|
sdl2_config->Get(group, Settings::NativeMotion::mapping[i], default_param); |
|
|
|
if (player_motions.empty()) { |
|
|
|
player_motions = default_param; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
Settings::values.players.GetValue()[p].connected = |
|
|
|
sdl2_config->GetBoolean(group, "connected", false); |
|
|
|
player.connected = sdl2_config->GetBoolean(group, "connected", false); |
|
|
|
} |
|
|
|
|
|
|
|
ReadSetting("ControlsGeneral", Settings::values.mouse_enabled); |
|
|
|
|