forked from mirror/openmw-tes3mp
Don't reset an unbound input action to its default binding if the key/mouse button for that default binding is already used by another action (Fixes #1960)
This commit is contained in:
parent
46adf6344a
commit
f9b6cc468d
4 changed files with 17 additions and 3 deletions
|
@ -936,9 +936,11 @@ namespace MWInput
|
|||
{
|
||||
clearAllBindings (control);
|
||||
|
||||
if (defaultKeyBindings.find(i) != defaultKeyBindings.end())
|
||||
if (defaultKeyBindings.find(i) != defaultKeyBindings.end()
|
||||
&& !mInputBinder->isKeyBound(defaultKeyBindings[i]))
|
||||
mInputBinder->addKeyBinding(control, defaultKeyBindings[i], ICS::Control::INCREASE);
|
||||
else if (defaultMouseButtonBindings.find(i) != defaultMouseButtonBindings.end())
|
||||
else if (defaultMouseButtonBindings.find(i) != defaultMouseButtonBindings.end()
|
||||
&& !mInputBinder->isMouseButtonBound(defaultMouseButtonBindings[i]))
|
||||
mInputBinder->addMouseButtonBinding (control, defaultMouseButtonBindings[i], ICS::Control::INCREASE);
|
||||
}
|
||||
}
|
||||
|
|
4
extern/oics/ICSInputControlSystem.h
vendored
4
extern/oics/ICSInputControlSystem.h
vendored
|
@ -119,9 +119,11 @@ namespace ICS
|
|||
//bool sliderMoved(const OIS::JoyStickEvent &evt, int index);
|
||||
|
||||
void addKeyBinding(Control* control, SDL_Scancode key, Control::ControlChangingDirection direction);
|
||||
bool isKeyBound(SDL_Scancode key) const;
|
||||
void addMouseAxisBinding(Control* control, NamedAxis axis, Control::ControlChangingDirection direction);
|
||||
void addMouseButtonBinding(Control* control, unsigned int button, Control::ControlChangingDirection direction);
|
||||
void addJoystickAxisBinding(Control* control, int deviceId, int axis, Control::ControlChangingDirection direction);
|
||||
bool isMouseButtonBound(unsigned int button) const;
|
||||
void addJoystickAxisBinding(Control* control, int deviceId, int axis, Control::ControlChangingDirection direction);
|
||||
void addJoystickButtonBinding(Control* control, int deviceId, unsigned int button, Control::ControlChangingDirection direction);
|
||||
void addJoystickPOVBinding(Control* control, int deviceId, int index, POVAxis axis, Control::ControlChangingDirection direction);
|
||||
void addJoystickSliderBinding(Control* control, int deviceId, int index, Control::ControlChangingDirection direction);
|
||||
|
|
|
@ -61,6 +61,11 @@ namespace ICS
|
|||
mControlsKeyBinderMap[ key ] = controlKeyBinderItem;
|
||||
}
|
||||
|
||||
bool InputControlSystem::isKeyBound(SDL_Scancode key) const
|
||||
{
|
||||
return mControlsKeyBinderMap.find(key) != mControlsKeyBinderMap.end();
|
||||
}
|
||||
|
||||
void InputControlSystem::removeKeyBinding(SDL_Scancode key)
|
||||
{
|
||||
ControlsKeyBinderMapType::iterator it = mControlsKeyBinderMap.find(key);
|
||||
|
|
5
extern/oics/ICSInputControlSystem_mouse.cpp
vendored
5
extern/oics/ICSInputControlSystem_mouse.cpp
vendored
|
@ -139,6 +139,11 @@ namespace ICS
|
|||
mControlsMouseButtonBinderMap[ button ] = controlMouseButtonBinderItem;
|
||||
}
|
||||
|
||||
bool InputControlSystem::isMouseButtonBound(unsigned int button) const
|
||||
{
|
||||
return mControlsMouseButtonBinderMap.find(button) != mControlsMouseButtonBinderMap.end();
|
||||
}
|
||||
|
||||
// get bindings
|
||||
InputControlSystem::NamedAxis InputControlSystem::getMouseAxisBinding(Control* control, ICS::Control::ControlChangingDirection direction)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue