This is an automated email from the git hooks/post-receive script. odyx pushed a commit to branch debian/master in repository colobot.
commit ebc2e6e26cc13ac2dd347257710c9049f15b17be Author: krzys-h <krzy...@interia.pl> Date: Sat May 28 13:50:41 2016 +0200 Added camera joystick bindings (#653) --- src/app/input.cpp | 27 ++++- src/app/input.h | 2 + src/common/event.cpp | 8 +- src/common/event.h | 42 ++++--- src/common/key.h | 3 + src/common/restext.cpp | 3 + src/graphics/engine/camera.cpp | 2 + src/ui/screen/screen_setup_controls.cpp | 193 +++++++++++++------------------- 8 files changed, 142 insertions(+), 138 deletions(-) diff --git a/src/app/input.cpp b/src/app/input.cpp index 0a04915..62bad06 100644 --- a/src/app/input.cpp +++ b/src/app/input.cpp @@ -170,10 +170,31 @@ void CInput::EventProcess(Event& event) if (GetJoyAxisBinding(JOY_AXIS_SLOT_Z).invert) m_joyMotion.z *= -1.0f; } + + if (data->axis == GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_X).axis) + { + m_joyMotionCam.x = -Math::Neutral(data->value / 32768.0f, m_joystickDeadzone); + if (GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_X).invert) + m_joyMotionCam.x *= -1.0f; + } + + if (data->axis == GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_Y).axis) + { + m_joyMotionCam.y = -Math::Neutral(data->value / 32768.0f, m_joystickDeadzone); + if (GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_Y).invert) + m_joyMotionCam.y *= -1.0f; + } + + if (data->axis == GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_Z).axis) + { + m_joyMotionCam.z = -Math::Neutral(data->value / 32768.0f, m_joystickDeadzone); + if (GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_Z).invert) + m_joyMotionCam.z *= -1.0f; + } } event.motionInput = Math::Clamp(m_joyMotion + m_keyMotion, Math::Vector(-1.0f, -1.0f, -1.0f), Math::Vector(1.0f, 1.0f, 1.0f)); - event.cameraInput = m_cameraKeyMotion; + event.cameraInput = Math::Clamp(m_joyMotionCam + m_cameraKeyMotion, Math::Vector(-1.0f, -1.0f, -1.0f), Math::Vector(1.0f, 1.0f, 1.0f)); } void CInput::MouseMove(Math::IntPoint pos) @@ -197,6 +218,7 @@ void CInput::ResetKeyStates() m_keyMotion = Math::Vector(0.0f, 0.0f, 0.0f); m_joyMotion = Math::Vector(0.0f, 0.0f, 0.0f); m_cameraKeyMotion = Math::Vector(0.0f, 0.0f, 0.0f); + m_joyMotionCam = Math::Vector(0.0f, 0.0f, 0.0f); for(int i=0; i<INPUT_SLOT_MAX; i++) m_keyPresses[i] = false; } @@ -255,6 +277,9 @@ void CInput::SetDefaultInputBindings() m_joyAxisBindings[JOY_AXIS_SLOT_X].axis = 0; m_joyAxisBindings[JOY_AXIS_SLOT_Y].axis = 1; m_joyAxisBindings[JOY_AXIS_SLOT_Z].axis = 2; + m_joyAxisBindings[JOY_AXIS_SLOT_CAM_X].axis = -1; + m_joyAxisBindings[JOY_AXIS_SLOT_CAM_Y].axis = -1; + m_joyAxisBindings[JOY_AXIS_SLOT_CAM_Z].axis = -1; } void CInput::SetInputBinding(InputSlot slot, InputBinding binding) diff --git a/src/app/input.h b/src/app/input.h index d58bf2f..15cdc98 100644 --- a/src/app/input.h +++ b/src/app/input.h @@ -148,6 +148,8 @@ private: Math::Vector m_keyMotion; //! Motion vector set by joystick axes Math::Vector m_joyMotion; + //! Camera motion vector set by joystick axes + Math::Vector m_joyMotionCam; //! Camera controls on the numpad Math::Vector m_cameraKeyMotion; diff --git a/src/common/event.cpp b/src/common/event.cpp index 49b5218..5ffe475 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -251,13 +251,19 @@ void InitializeEventTypeTexts() EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK]= "EVENT_INTERFACE_JOYSTICK"; EVENT_TYPE_TEXT[EVENT_INTERFACE_SOLUCE] = "EVENT_INTERFACE_SOLUCE"; + EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_DEADZONE]= "EVENT_INTERFACE_JOYSTICK_DEADZONE"; EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_X]= "EVENT_INTERFACE_JOYSTICK_X"; EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_Y]= "EVENT_INTERFACE_JOYSTICK_Y"; EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_Z]= "EVENT_INTERFACE_JOYSTICK_Z"; + EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_X]= "EVENT_INTERFACE_JOYSTICK_CAM_X"; + EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Y]= "EVENT_INTERFACE_JOYSTICK_CAM_Y"; + EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Z]= "EVENT_INTERFACE_JOYSTICK_CAM_Z"; EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_X_INVERT]= "EVENT_INTERFACE_JOYSTICK_X_INVERT"; EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_Y_INVERT]= "EVENT_INTERFACE_JOYSTICK_Y_INVERT"; EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_Z_INVERT]= "EVENT_INTERFACE_JOYSTICK_Z_INVERT"; - EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_DEADZONE]= "EVENT_INTERFACE_JOYSTICK_DEADZONE"; + EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT"; + EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT"; + EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT"; EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTl] = "EVENT_INTERFACE_GLINTl"; EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTr] = "EVENT_INTERFACE_GLINTr"; diff --git a/src/common/event.h b/src/common/event.h index d3f22b0..061cba6 100644 --- a/src/common/event.h +++ b/src/common/event.h @@ -284,24 +284,30 @@ enum EventType EVENT_INTERFACE_JOYSTICK= 560, EVENT_INTERFACE_SOLUCE = 561, - EVENT_INTERFACE_JOYSTICK_X = 562, - EVENT_INTERFACE_JOYSTICK_Y = 563, - EVENT_INTERFACE_JOYSTICK_Z = 564, - EVENT_INTERFACE_JOYSTICK_X_INVERT = 565, - EVENT_INTERFACE_JOYSTICK_Y_INVERT = 566, - EVENT_INTERFACE_JOYSTICK_Z_INVERT = 567, - EVENT_INTERFACE_JOYSTICK_DEADZONE = 568, - - EVENT_INTERFACE_GLINTl = 570, - EVENT_INTERFACE_GLINTr = 571, - EVENT_INTERFACE_GLINTu = 572, - EVENT_INTERFACE_GLINTb = 573, - - EVENT_INTERFACE_NEDIT = 580, - EVENT_INTERFACE_NLIST = 581, - EVENT_INTERFACE_NOK = 582, - EVENT_INTERFACE_NDELETE = 584, - EVENT_INTERFACE_NLABEL = 585, + EVENT_INTERFACE_JOYSTICK_DEADZONE = 562, + EVENT_INTERFACE_JOYSTICK_X = 563, + EVENT_INTERFACE_JOYSTICK_Y = 564, + EVENT_INTERFACE_JOYSTICK_Z = 565, + EVENT_INTERFACE_JOYSTICK_CAM_X = 566, + EVENT_INTERFACE_JOYSTICK_CAM_Y = 567, + EVENT_INTERFACE_JOYSTICK_CAM_Z = 568, + EVENT_INTERFACE_JOYSTICK_X_INVERT = 569, + EVENT_INTERFACE_JOYSTICK_Y_INVERT = 570, + EVENT_INTERFACE_JOYSTICK_Z_INVERT = 571, + EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT = 572, + EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT = 573, + EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT = 574, + + EVENT_INTERFACE_GLINTl = 590, + EVENT_INTERFACE_GLINTr = 591, + EVENT_INTERFACE_GLINTu = 592, + EVENT_INTERFACE_GLINTb = 593, + + EVENT_INTERFACE_NEDIT = 595, + EVENT_INTERFACE_NLIST = 596, + EVENT_INTERFACE_NOK = 597, + EVENT_INTERFACE_NDELETE = 598, + EVENT_INTERFACE_NLABEL = 599, EVENT_INTERFACE_IOWRITE = 600, EVENT_INTERFACE_IOREAD = 601, diff --git a/src/common/key.h b/src/common/key.h index d618c45..f1209ed 100644 --- a/src/common/key.h +++ b/src/common/key.h @@ -117,6 +117,9 @@ enum JoyAxisSlot JOY_AXIS_SLOT_X, JOY_AXIS_SLOT_Y, JOY_AXIS_SLOT_Z, + JOY_AXIS_SLOT_CAM_X, + JOY_AXIS_SLOT_CAM_Y, + JOY_AXIS_SLOT_CAM_Z, JOY_AXIS_SLOT_MAX }; diff --git a/src/common/restext.cpp b/src/common/restext.cpp index 24d515d..ec88dc4 100644 --- a/src/common/restext.cpp +++ b/src/common/restext.cpp @@ -252,6 +252,9 @@ void InitializeRestext() stringsEvent[EVENT_INTERFACE_JOYSTICK_X_INVERT] = TR("Invert\\Invert values on this axis"); stringsEvent[EVENT_INTERFACE_JOYSTICK_Y_INVERT] = TR("Invert\\Invert values on this axis"); stringsEvent[EVENT_INTERFACE_JOYSTICK_Z_INVERT] = TR("Invert\\Invert values on this axis"); + stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT] = TR("Invert\\Invert values on this axis"); + stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT] = TR("Invert\\Invert values on this axis"); + stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT] = TR("Invert\\Invert values on this axis"); stringsEvent[EVENT_INTERFACE_NEDIT] = TR("\\New player name"); stringsEvent[EVENT_INTERFACE_NOK] = TR("OK\\Choose the selected player"); diff --git a/src/graphics/engine/camera.cpp b/src/graphics/engine/camera.cpp index 96c4f00..0b6157b 100644 --- a/src/graphics/engine/camera.cpp +++ b/src/graphics/engine/camera.cpp @@ -1601,11 +1601,13 @@ Math::Vector CCamera::CalculateCameraMovement(const Event &event, bool keysAllow { delta.x += event.cameraInput.x * event.rTime * 0.5f * m_speed; delta.y -= event.cameraInput.y * event.rTime * 0.5f * m_speed; + delta.z -= event.cameraInput.z * event.rTime * 20.0f * m_speed; if (m_cameraObj == nullptr) { delta.x += event.motionInput.x * event.rTime * 0.5f * m_speed; delta.y -= event.motionInput.y * event.rTime * 0.5f * m_speed; + delta.z -= event.motionInput.z * event.rTime * 20.0f * m_speed; } if (m_input->GetKeyState(INPUT_SLOT_NEAR)) diff --git a/src/ui/screen/screen_setup_controls.cpp b/src/ui/screen/screen_setup_controls.cpp index bdb2c5c..7aa39eb 100644 --- a/src/ui/screen/screen_setup_controls.cpp +++ b/src/ui/screen/screen_setup_controls.cpp @@ -103,63 +103,40 @@ void CScreenSetupControls::CreateInterface() ddim.x = 160.0f/640.0f; ddim.y = 80.0f/480.0f; pos.x = 400.0f/640.0f; - pos.y = 213.0f/480.0f; + pos.y = 273.0f/480.0f; pli = pw->CreateList(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK); pli->SetState(STATE_SHADOW); ddim.x = dim.x*1.5f; ddim.y = 18.0f/480.0f; - pos.y = 180.0f/480.0f; + pos.y = 240.0f/480.0f; - pos.y -= 5.0f/480.0f; - pos.x = 390.0f/640.0f; - pw->CreateLabel(pos, ddim, 0, EVENT_LABEL0, "X:"); - pos.y += 5.0f/480.0f; - pos.x = 422.0f/640.0f; - pev = pw->CreateEditValue(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_X); - pev->SetState(STATE_SHADOW); - pev->SetType(EVT_INT); - pev->SetMinValue(0); - pev->SetMaxValue(2); - pev->SetStepValue(1); - pev->SetValue(0); - pos.x = 480.0f/640.0f; - pc = pw->CreateCheck(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_X_INVERT); - pc->SetState(STATE_SHADOW); - - pos.y -= 20.0f/480.0f; - pos.x = 390.0f/640.0f; - pos.y -= 5.0f/480.0f; - pw->CreateLabel(pos, ddim, 0, EVENT_LABEL1, "Y:"); - pos.y += 5.0f/480.0f; - pos.x = 422.0f/640.0f; - pev = pw->CreateEditValue(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_Y); - pev->SetState(STATE_SHADOW); - pev->SetType(EVT_INT); - pev->SetMinValue(0); - pev->SetMaxValue(2); - pev->SetStepValue(1); - pev->SetValue(1); - pos.x = 480.0f/640.0f; - pc = pw->CreateCheck(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_Y_INVERT); - pc->SetState(STATE_SHADOW); - - pos.y -= 20.0f/480.0f; - pos.x = 390.0f/640.0f; - pos.y -= 5.0f/480.0f; - pw->CreateLabel(pos, ddim, 0, EVENT_LABEL2, "Z:"); - pos.y += 5.0f/480.0f; - pos.x = 422.0f/640.0f; - pev = pw->CreateEditValue(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_Z); - pev->SetState(STATE_SHADOW); - pev->SetType(EVT_INT); - pev->SetMinValue(0); - pev->SetMaxValue(2); - pev->SetStepValue(1); - pev->SetValue(2); - pos.x = 480.0f/640.0f; - pc = pw->CreateCheck(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_Z_INVERT); - pc->SetState(STATE_SHADOW); + auto CreateJoystickControls = [&](const std::string& label, EventType bindingControl, EventType invertControl) + { + pos.y -= 20.0f/480.0f; + pos.x = 390.0f/640.0f; + pos.y -= 5.0f/480.0f; + pw->CreateLabel(pos, ddim, 0, EVENT_LABEL0, label); + pos.y += 5.0f/480.0f; + pos.x = 442.0f/640.0f; + pev = pw->CreateEditValue(pos, ddim, 0, bindingControl); + pev->SetState(STATE_SHADOW); + pev->SetType(EVT_INT); + pev->SetMinValue(-1); + pev->SetMaxValue(2); + pev->SetStepValue(1); + pev->SetValue(1); + pos.x = 500.0f/640.0f; + pc = pw->CreateCheck(pos, ddim, 0, invertControl); + pc->SetState(STATE_SHADOW); + }; + pos.y += 15.0f/480.0f; + CreateJoystickControls("X:", EVENT_INTERFACE_JOYSTICK_X, EVENT_INTERFACE_JOYSTICK_X_INVERT); + CreateJoystickControls("Y:", EVENT_INTERFACE_JOYSTICK_Y, EVENT_INTERFACE_JOYSTICK_Y_INVERT); + CreateJoystickControls("Z:", EVENT_INTERFACE_JOYSTICK_Z, EVENT_INTERFACE_JOYSTICK_Z_INVERT); + CreateJoystickControls("CamX:", EVENT_INTERFACE_JOYSTICK_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT); + CreateJoystickControls("CamY:", EVENT_INTERFACE_JOYSTICK_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT); + CreateJoystickControls("CamZ:", EVENT_INTERFACE_JOYSTICK_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT); pos.y -= 25.0f/480.0f; pos.x = 420.0f/640.0f; @@ -203,6 +180,9 @@ bool CScreenSetupControls::EventProcess(const Event &event) case EVENT_INTERFACE_JOYSTICK_X_INVERT: case EVENT_INTERFACE_JOYSTICK_Y_INVERT: case EVENT_INTERFACE_JOYSTICK_Z_INVERT: + case EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT: + case EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT: + case EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT: ToggleJoystickInvert(event.type); ChangeSetupButtons(); UpdateSetupButtons(); @@ -212,6 +192,9 @@ bool CScreenSetupControls::EventProcess(const Event &event) case EVENT_INTERFACE_JOYSTICK_X: case EVENT_INTERFACE_JOYSTICK_Y: case EVENT_INTERFACE_JOYSTICK_Z: + case EVENT_INTERFACE_JOYSTICK_CAM_X: + case EVENT_INTERFACE_JOYSTICK_CAM_Y: + case EVENT_INTERFACE_JOYSTICK_CAM_Z: case EVENT_INTERFACE_JOYSTICK_DEADZONE: ChangeSetupButtons(); UpdateSetupButtons(); @@ -254,42 +237,28 @@ void CScreenSetupControls::ChangeSetupButtons() } } - if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X)))) + auto HandleJoystickControls = [&](JoyAxisSlot joyAxis, EventType bindingControl, EventType invertControl) { - JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X); - binding.axis = static_cast<int>(round(pev->GetValue())); - m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_X, binding); - } - if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X_INVERT)))) - { - JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X); - binding.invert = pc->TestState(STATE_CHECK); - m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_X, binding); - } - if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y)))) - { - JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y); - binding.axis = static_cast<int>(round(pev->GetValue())); - m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_Y, binding); - } - if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y_INVERT)))) - { - JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y); - binding.invert = pc->TestState(STATE_CHECK); - m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_Y, binding); - } - if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z)))) - { - JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z); - binding.axis = static_cast<int>(round(pev->GetValue())); - m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_Z, binding); - } - if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z_INVERT)))) - { - JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z); - binding.invert = pc->TestState(STATE_CHECK); - m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_Z, binding); - } + if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(bindingControl)))) + { + JoyAxisBinding binding = m_input->GetJoyAxisBinding(joyAxis); + binding.axis = static_cast<int>(round(pev->GetValue())); + m_input->SetJoyAxisBinding(joyAxis, binding); + } + if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(invertControl)))) + { + JoyAxisBinding binding = m_input->GetJoyAxisBinding(joyAxis); + binding.invert = pc->TestState(STATE_CHECK); + m_input->SetJoyAxisBinding(joyAxis, binding); + } + }; + HandleJoystickControls(JOY_AXIS_SLOT_X, EVENT_INTERFACE_JOYSTICK_X, EVENT_INTERFACE_JOYSTICK_X_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_Y, EVENT_INTERFACE_JOYSTICK_Y, EVENT_INTERFACE_JOYSTICK_Y_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_Z, EVENT_INTERFACE_JOYSTICK_Z, EVENT_INTERFACE_JOYSTICK_Z_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT); + if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_DEADZONE)))) { m_input->SetJoystickDeadzone(pev->GetValue()); @@ -332,39 +301,27 @@ void CScreenSetupControls::UpdateSetupButtons() pli->SetSelect(m_app->GetJoystickEnabled() ? m_app->GetJoystick().index + 1 : 0); } - if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X)))) - { - pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled()); - pev->SetMaxValue(m_app->GetJoystick().axisCount-1); - pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X).axis); - } - if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X_INVERT)))) - { - pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled()); - pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X).invert); - } - if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y)))) - { - pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled()); - pev->SetMaxValue(m_app->GetJoystick().axisCount-1); - pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y).axis); - } - if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y_INVERT)))) - { - pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled()); - pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y).invert); - } - if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z)))) - { - pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled()); - pev->SetMaxValue(m_app->GetJoystick().axisCount-1); - pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z).axis); - } - if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z_INVERT)))) + auto HandleJoystickControls = [&](JoyAxisSlot joyAxis, EventType bindingControl, EventType invertControl) { - pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled()); - pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z).invert); - } + if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(bindingControl)))) + { + pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled()); + pev->SetMaxValue(m_app->GetJoystick().axisCount-1); + pev->SetValue(m_input->GetJoyAxisBinding(joyAxis).axis); + } + if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(invertControl)))) + { + pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled()); + pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(joyAxis).invert); + } + }; + HandleJoystickControls(JOY_AXIS_SLOT_X, EVENT_INTERFACE_JOYSTICK_X, EVENT_INTERFACE_JOYSTICK_X_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_Y, EVENT_INTERFACE_JOYSTICK_Y, EVENT_INTERFACE_JOYSTICK_Y_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_Z, EVENT_INTERFACE_JOYSTICK_Z, EVENT_INTERFACE_JOYSTICK_Z_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT); + HandleJoystickControls(JOY_AXIS_SLOT_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT); + if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_DEADZONE)))) { pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled()); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git _______________________________________________ Pkg-games-commits mailing list Pkg-games-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits