From 2dd7ba7e9b36ec87f5612470fab121045673fb17 Mon Sep 17 00:00:00 2001 From: krzys-h Date: Sat, 28 May 2016 15:40:54 +0200 Subject: [PATCH] Added camera keybindings (#653) --- po/colobot.pot | 15 ++++++++++++ po/de.po | 19 +++++++++++++++ po/fr.po | 19 +++++++++++++++ po/pl.po | 15 ++++++++++++ po/ru.po | 19 +++++++++++++++ src/app/input.cpp | 42 ++++++++++++++++++++++------------ src/common/key.h | 9 ++++++-- src/common/restext.cpp | 9 ++++++-- src/graphics/engine/camera.cpp | 7 +----- 9 files changed, 130 insertions(+), 24 deletions(-) diff --git a/po/colobot.pot b/po/colobot.pot index 08625b6f..1b624494 100644 --- a/po/colobot.pot +++ b/po/colobot.pot @@ -461,12 +461,27 @@ msgstr "" msgid "Standard action\\Standard action of the bot (take/grab, shoot, sniff, etc)" msgstr "" +msgid "Camera left\\Turns the camera left" +msgstr "" + +msgid "Camera right\\Turns the camera right" +msgstr "" + +msgid "Camera up\\Turns the camera up" +msgstr "" + +msgid "Camera down\\Turns the camera down" +msgstr "" + msgid "Camera closer\\Moves the camera forward" msgstr "" msgid "Camera back\\Moves the camera backward" msgstr "" +msgid "Alternative camera mode\\Move sideways instead of rotating (in free camera)" +msgstr "" + msgid "Next object\\Selects the next object" msgstr "" diff --git a/po/de.po b/po/de.po index c49e5cf0..453d1520 100644 --- a/po/de.po +++ b/po/de.po @@ -115,6 +115,9 @@ msgstr "Insektenkönigin tödlich verwundet" msgid "Already carrying something" msgstr "Trägt schon etwas" +msgid "Alternative camera mode\\Move sideways instead of rotating (in free camera)" +msgstr "" + msgid "Analysis already performed" msgstr "Analyse schon durchgeführt" @@ -330,15 +333,31 @@ msgstr "Kameradrehung mit der Maus\\Die Kamera dreht wenn die Maus den Rand erre msgid "Camera closer\\Moves the camera forward" msgstr "Kamera näher\\Bewegung der Kamera vorwärts" +#, fuzzy +msgid "Camera down\\Turns the camera down" +msgstr "Kamera näher\\Bewegung der Kamera vorwärts" + +#, fuzzy +msgid "Camera left\\Turns the camera left" +msgstr "Kamera näher\\Bewegung der Kamera vorwärts" + msgid "Camera nearest" msgstr "Kamera näher" +#, fuzzy +msgid "Camera right\\Turns the camera right" +msgstr "Drehung nach rechts\\Steuer rechts" + msgid "Camera to left" msgstr "Kamera links" msgid "Camera to right" msgstr "Kamera rechts" +#, fuzzy +msgid "Camera up\\Turns the camera up" +msgstr "Kamera (\\key camera;)" + msgid "Can not produce not researched object" msgstr "Das erforschte Objekt kann nicht produziert werden" diff --git a/po/fr.po b/po/fr.po index 880f1d02..4d919748 100644 --- a/po/fr.po +++ b/po/fr.po @@ -108,6 +108,9 @@ msgstr "Pondeuse mortellement touchée" msgid "Already carrying something" msgstr "Porte déjà quelque chose" +msgid "Alternative camera mode\\Move sideways instead of rotating (in free camera)" +msgstr "" + msgid "Analysis already performed" msgstr "Analyse déjà effectuée" @@ -321,15 +324,31 @@ msgstr "Défilement dans les bords\\Défilement lorsque la souris touche les bor msgid "Camera closer\\Moves the camera forward" msgstr "Caméra plus proche\\Avance la caméra" +#, fuzzy +msgid "Camera down\\Turns the camera down" +msgstr "Caméra plus proche\\Avance la caméra" + +#, fuzzy +msgid "Camera left\\Turns the camera left" +msgstr "Caméra plus proche\\Avance la caméra" + msgid "Camera nearest" msgstr "Caméra plus proche" +#, fuzzy +msgid "Camera right\\Turns the camera right" +msgstr "Tourner à droite\\Moteur à droite" + msgid "Camera to left" msgstr "Caméra à gauche" msgid "Camera to right" msgstr "Caméra à droite" +#, fuzzy +msgid "Camera up\\Turns the camera up" +msgstr "Caméra (\\key camera;)" + msgid "Can not produce not researched object" msgstr "Impossible de créer un objet n'ayant pas été recherché" diff --git a/po/pl.po b/po/pl.po index 67967286..68cd35a2 100644 --- a/po/pl.po +++ b/po/pl.po @@ -111,6 +111,9 @@ msgstr "Królowa Obcych została zabita" msgid "Already carrying something" msgstr "Nie można nieść więcej przedmiotów" +msgid "Alternative camera mode\\Move sideways instead of rotating (in free camera)" +msgstr "Alternatywny tryb kamery\\Poruszaj na boki zamiast obracać (w kamerze swobodnej)" + msgid "Analysis already performed" msgstr "Analiza została już wykonana" @@ -324,15 +327,27 @@ msgstr "Przewijanie kamery przy krawędzi\\Ekran jest przewijany gdy mysz dotkni msgid "Camera closer\\Moves the camera forward" msgstr "Kamera bliżej\\Przybliża kamerę" +msgid "Camera down\\Turns the camera down" +msgstr "Kamera w dół\\Obraca kamerę w dół" + +msgid "Camera left\\Turns the camera left" +msgstr "Kamera w lewo\\Obraca kamerę w lewo" + msgid "Camera nearest" msgstr "Camera nearest" +msgid "Camera right\\Turns the camera right" +msgstr "Kamera w prawo\\Obróć kamerę w prawo" + msgid "Camera to left" msgstr "Camera to left" msgid "Camera to right" msgstr "Camera to right" +msgid "Camera up\\Turns the camera up" +msgstr "Kamera w górę\\Obróć kamerę w górę" + msgid "Can not produce not researched object" msgstr "Nie można wyprodukować nie wynalezionego obiektu" diff --git a/po/ru.po b/po/ru.po index 563ba006..d6d4d05e 100644 --- a/po/ru.po +++ b/po/ru.po @@ -113,6 +113,9 @@ msgstr "Королева чужих убита" msgid "Already carrying something" msgstr "Уже что-то несу" +msgid "Alternative camera mode\\Move sideways instead of rotating (in free camera)" +msgstr "" + msgid "Analysis already performed" msgstr "Анализ уже выполнен" @@ -328,15 +331,31 @@ msgstr "Прокрутка\\Прокрутка, когда указатель м msgid "Camera closer\\Moves the camera forward" msgstr "Приблизать камеру\\Перемещение камеры вперед" +#, fuzzy +msgid "Camera down\\Turns the camera down" +msgstr "Приблизать камеру\\Перемещение камеры вперед" + +#, fuzzy +msgid "Camera left\\Turns the camera left" +msgstr "Приблизать камеру\\Перемещение камеры вперед" + msgid "Camera nearest" msgstr "Приблизить камеру" +#, fuzzy +msgid "Camera right\\Turns the camera right" +msgstr "Повернуть налево\\Поворот налево" + msgid "Camera to left" msgstr "Камеру влево" msgid "Camera to right" msgstr "Камеру вправо" +#, fuzzy +msgid "Camera up\\Turns the camera up" +msgstr "Камера (\\key camera;)" + msgid "Can not produce not researched object" msgstr "" diff --git a/src/app/input.cpp b/src/app/input.cpp index 62bad06f..87cedf34 100644 --- a/src/app/input.cpp +++ b/src/app/input.cpp @@ -49,8 +49,13 @@ CInput::CInput() { INPUT_SLOT_CAMERA, "camera" }, { INPUT_SLOT_DESEL, "desel" }, { INPUT_SLOT_ACTION, "action" }, - { INPUT_SLOT_NEAR, "near" }, - { INPUT_SLOT_AWAY, "away" }, + { INPUT_SLOT_CAM_LEFT, "cleft" }, + { INPUT_SLOT_CAM_RIGHT,"cright" }, + { INPUT_SLOT_CAM_UP, "cup" }, + { INPUT_SLOT_CAM_DOWN, "cdown" }, + { INPUT_SLOT_CAM_NEAR, "near" }, + { INPUT_SLOT_CAM_AWAY, "away" }, + { INPUT_SLOT_CAM_ALT, "camalt" }, { INPUT_SLOT_NEXT, "next" }, { INPUT_SLOT_HUMAN, "human" }, { INPUT_SLOT_QUIT, "quit" }, @@ -64,8 +69,8 @@ CInput::CInput() { INPUT_SLOT_SPEED30, "speed30" }, { INPUT_SLOT_SPEED40, "speed40" }, { INPUT_SLOT_SPEED60, "speed60" }, - { INPUT_SLOT_PAUSE, "pause" }, - { INPUT_SLOT_CMDLINE, "cmdline" }, + { INPUT_SLOT_PAUSE, "pause" }, + { INPUT_SLOT_CMDLINE, "cmdline" }, }; m_mousePos = Math::Point(); @@ -125,10 +130,12 @@ void CInput::EventProcess(Event& event) if (data->slot == INPUT_SLOT_GUP ) m_keyMotion.z = 1.0f; if (data->slot == INPUT_SLOT_GDOWN) m_keyMotion.z = -1.0f; - if (data->key == KEY(KP_4) ) m_cameraKeyMotion.x = -1.0f; - if (data->key == KEY(KP_6) ) m_cameraKeyMotion.x = 1.0f; - if (data->key == KEY(KP_8) ) m_cameraKeyMotion.y = 1.0f; - if (data->key == KEY(KP_2) ) m_cameraKeyMotion.y = -1.0f; + if (data->slot == INPUT_SLOT_CAM_LEFT ) m_cameraKeyMotion.x = -1.0f; + if (data->slot == INPUT_SLOT_CAM_RIGHT) m_cameraKeyMotion.x = 1.0f; + if (data->slot == INPUT_SLOT_CAM_UP ) m_cameraKeyMotion.y = 1.0f; + if (data->slot == INPUT_SLOT_CAM_DOWN ) m_cameraKeyMotion.y = -1.0f; + if (data->slot == INPUT_SLOT_CAM_NEAR ) m_cameraKeyMotion.z = -1.0f; + if (data->slot == INPUT_SLOT_CAM_AWAY ) m_cameraKeyMotion.z = 1.0f; } else if (event.type == EVENT_KEY_UP) { @@ -141,10 +148,12 @@ void CInput::EventProcess(Event& event) if (data->slot == INPUT_SLOT_GUP ) m_keyMotion.z = 0.0f; if (data->slot == INPUT_SLOT_GDOWN) m_keyMotion.z = 0.0f; - if (data->key == KEY(KP_4) ) m_cameraKeyMotion.x = 0.0f; - if (data->key == KEY(KP_6) ) m_cameraKeyMotion.x = 0.0f; - if (data->key == KEY(KP_8) ) m_cameraKeyMotion.y = 0.0f; - if (data->key == KEY(KP_2) ) m_cameraKeyMotion.y = 0.0f; + if (data->slot == INPUT_SLOT_CAM_LEFT ) m_cameraKeyMotion.x = 0.0f; + if (data->slot == INPUT_SLOT_CAM_RIGHT) m_cameraKeyMotion.x = 0.0f; + if (data->slot == INPUT_SLOT_CAM_UP ) m_cameraKeyMotion.y = 0.0f; + if (data->slot == INPUT_SLOT_CAM_DOWN ) m_cameraKeyMotion.y = 0.0f; + if (data->slot == INPUT_SLOT_CAM_NEAR ) m_cameraKeyMotion.z = 0.0f; + if (data->slot == INPUT_SLOT_CAM_AWAY ) m_cameraKeyMotion.z = 0.0f; } else if (event.type == EVENT_JOY_AXIS) { @@ -255,8 +264,13 @@ void CInput::SetDefaultInputBindings() m_inputBindings[INPUT_SLOT_DESEL ].primary = KEY(KP_0); m_inputBindings[INPUT_SLOT_ACTION ].primary = KEY(RETURN); m_inputBindings[INPUT_SLOT_ACTION ].secondary = KEY(e); - m_inputBindings[INPUT_SLOT_NEAR ].primary = KEY(KP_PLUS); - m_inputBindings[INPUT_SLOT_AWAY ].primary = KEY(KP_MINUS); + m_inputBindings[INPUT_SLOT_CAM_LEFT ].primary = KEY(KP_4); + m_inputBindings[INPUT_SLOT_CAM_RIGHT].primary = KEY(KP_6); + m_inputBindings[INPUT_SLOT_CAM_UP ].primary = KEY(KP_8); + m_inputBindings[INPUT_SLOT_CAM_DOWN ].primary = KEY(KP_2); + m_inputBindings[INPUT_SLOT_CAM_NEAR ].primary = KEY(KP_PLUS); + m_inputBindings[INPUT_SLOT_CAM_AWAY ].primary = KEY(KP_MINUS); + m_inputBindings[INPUT_SLOT_CAM_ALT ].primary = VIRTUAL_KMOD(ALT); m_inputBindings[INPUT_SLOT_NEXT ].primary = KEY(TAB); m_inputBindings[INPUT_SLOT_HUMAN ].primary = KEY(HOME); m_inputBindings[INPUT_SLOT_QUIT ].primary = KEY(ESCAPE); diff --git a/src/common/key.h b/src/common/key.h index f1209ed2..d249860c 100644 --- a/src/common/key.h +++ b/src/common/key.h @@ -87,8 +87,13 @@ enum InputSlot INPUT_SLOT_CAMERA, INPUT_SLOT_DESEL, INPUT_SLOT_ACTION, - INPUT_SLOT_NEAR, - INPUT_SLOT_AWAY, + INPUT_SLOT_CAM_LEFT, + INPUT_SLOT_CAM_RIGHT, + INPUT_SLOT_CAM_UP, + INPUT_SLOT_CAM_DOWN, + INPUT_SLOT_CAM_NEAR, + INPUT_SLOT_CAM_AWAY, + INPUT_SLOT_CAM_ALT, INPUT_SLOT_NEXT, INPUT_SLOT_HUMAN, INPUT_SLOT_QUIT, diff --git a/src/common/restext.cpp b/src/common/restext.cpp index ec88dc48..a9644a36 100644 --- a/src/common/restext.cpp +++ b/src/common/restext.cpp @@ -220,8 +220,13 @@ void InitializeRestext() stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAMERA] = TR("Change camera\\Switches between onboard camera and following camera"); stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_DESEL] = TR("Previous object\\Selects the previous object"); stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_ACTION] = TR("Standard action\\Standard action of the bot (take/grab, shoot, sniff, etc)"); - stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_NEAR] = TR("Camera closer\\Moves the camera forward"); - stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_AWAY] = TR("Camera back\\Moves the camera backward"); + stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAM_LEFT] = TR("Camera left\\Turns the camera left"); + stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAM_RIGHT] = TR("Camera right\\Turns the camera right"); + stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAM_UP] = TR("Camera up\\Turns the camera up"); + stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAM_DOWN] = TR("Camera down\\Turns the camera down"); + stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAM_NEAR] = TR("Camera closer\\Moves the camera forward"); + stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAM_AWAY] = TR("Camera back\\Moves the camera backward"); + stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAM_ALT] = TR("Alternative camera mode\\Move sideways instead of rotating (in free camera)"); stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_NEXT] = TR("Next object\\Selects the next object"); stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_HUMAN] = TR("Select the astronaut\\Selects the astronaut"); stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_QUIT] = TR("Quit\\Quit the current mission or exercise"); diff --git a/src/graphics/engine/camera.cpp b/src/graphics/engine/camera.cpp index 0b6157b8..44626130 100644 --- a/src/graphics/engine/camera.cpp +++ b/src/graphics/engine/camera.cpp @@ -1210,7 +1210,7 @@ bool CCamera::EventFrameFree(const Event &event, bool keysAllowed) Math::Vector cameraMove = CalculateCameraMovement(event, keysAllowed); float factor = m_heightEye * 0.5f + 30.0f; - bool secondary = event.kmodState & KEY_MOD(CTRL) || event.mouseButtonsState & MOUSE_BUTTON_MIDDLE; + bool secondary = m_input->GetKeyState(INPUT_SLOT_CAM_ALT) || event.mouseButtonsState & MOUSE_BUTTON_MIDDLE; // TODO: make mouse button a keybinding // Forward/Backward m_eyePt = Math::LookatPoint(m_eyePt, m_directionH, m_directionV, -cameraMove.y * factor * 2); @@ -1609,11 +1609,6 @@ Math::Vector CCamera::CalculateCameraMovement(const Event &event, bool keysAllow 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)) - delta.z -= event.rTime * 20.0f * m_speed; - if (m_input->GetKeyState(INPUT_SLOT_AWAY)) - delta.z += event.rTime * 20.0f * m_speed; } if (delta.Length() > 0)