From aa3f63fd497558a02feb3ddbc44f31eac091f39b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 10 Oct 2017 22:14:45 +0300 Subject: Remove most unused files. --- src/input/touch/multitouchmanager.cpp | 88 ----- src/input/touch/multitouchmanager.h | 72 ---- src/input/touch/touchactions.cpp | 129 ------- src/input/touch/touchactions.h | 39 -- src/input/touch/touchmanager.cpp | 709 ---------------------------------- src/input/touch/touchmanager.h | 204 ---------- 6 files changed, 1241 deletions(-) delete mode 100644 src/input/touch/multitouchmanager.cpp delete mode 100644 src/input/touch/multitouchmanager.h delete mode 100644 src/input/touch/touchactions.cpp delete mode 100644 src/input/touch/touchactions.h delete mode 100644 src/input/touch/touchmanager.cpp delete mode 100644 src/input/touch/touchmanager.h (limited to 'src/input/touch') diff --git a/src/input/touch/multitouchmanager.cpp b/src/input/touch/multitouchmanager.cpp deleted file mode 100644 index aaee3410f..000000000 --- a/src/input/touch/multitouchmanager.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2013-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "input/touch/multitouchmanager.h" - -#ifdef USE_SDL2 -#include "render/graphics.h" - -#include "gui/sdlinput.h" -#endif // USE_SDL2 -#include "debug.h" - -MultiTouchManager multiTouchManager; - -MultiTouchManager::MultiTouchManager() : - mEvents() -{ -} - -MultiTouchManager::~MultiTouchManager() -{ -} - -void MultiTouchManager::init() -{ -} - -#ifdef USE_SDL2 -void MultiTouchManager::updateFinger(const SDL_Event &event, const bool active) -{ - const SDL_TouchFingerEvent &touch = event.tfinger; - MultiTouchEventsMap &device = mEvents[touch.touchId]; - MultiTouchEvent &finger = device[touch.fingerId]; - finger.active = active; - finger.x = touch.x; - finger.y = touch.y; -} - -void MultiTouchManager::handleFingerDown(const SDL_Event &event) -{ - updateFinger(event, true); - const SDL_TouchFingerEvent &touch = event.tfinger; - checkDevice(touch.touchId, touch.fingerId); -} - -void MultiTouchManager::handleFingerUp(const SDL_Event &event) -{ - updateFinger(event, false); -} - -void MultiTouchManager::checkDevice(const long touchId, - const long fingerId) -{ - if (fingerId != 1 || !guiInput) - return; - - MultiTouchEventsMap &device = mEvents[touchId]; - MultiTouchEvent &finger0 = device[0]; - if (finger0.active) - { - MultiTouchEvent &finger1 = device[1]; - if (finger1.active) - { - const int w = mainGraphics->mWidth; - const int h = mainGraphics->mHeight; - guiInput->simulateMouseClick(finger0.x * w, finger0.y * h, - MouseButton::RIGHT); - } - } -} -#endif // USE_SDL2 diff --git a/src/input/touch/multitouchmanager.h b/src/input/touch/multitouchmanager.h deleted file mode 100644 index fbb240503..000000000 --- a/src/input/touch/multitouchmanager.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2013-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef INPUT_TOUCH_MULTITOUCHMANAGER_H -#define INPUT_TOUCH_MULTITOUCHMANAGER_H - -#include - -#include "localconsts.h" - -#ifdef USE_SDL2 -union SDL_Event; -#endif // USE_SDL2 - -struct MultiTouchEvent final -{ - A_DEFAULT_COPY(MultiTouchEvent) - - bool active; - float x; - float y; -}; - -typedef std::map MultiTouchEventsMap; -typedef std::map MultiTouchDevicesMap; - -class MultiTouchManager final -{ - public: - MultiTouchManager(); - - ~MultiTouchManager(); - - A_DELETE_COPY(MultiTouchManager) - - void init() A_CONST; - -#ifdef USE_SDL2 - void updateFinger(const SDL_Event &event, const bool active); - - void handleFingerDown(const SDL_Event &event); - - void handleFingerUp(const SDL_Event &event); - - void checkDevice(const long touchId, - const long fingerId); -#endif // USE_SDL2 - - private: - MultiTouchDevicesMap mEvents; -}; - -extern MultiTouchManager multiTouchManager; - -#endif // INPUT_TOUCH_MULTITOUCHMANAGER_H diff --git a/src/input/touch/touchactions.cpp b/src/input/touch/touchactions.cpp deleted file mode 100644 index f1f8e4676..000000000 --- a/src/input/touch/touchactions.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "input/touch/touchactions.h" - -#include "input/inputmanager.h" -#include "input/mouseinput.h" - -#include "input/touch/touchmanager.h" - -#include "debug.h" - -bool padClicked(false); -int halfJoyPad = 50; - -#define impHandler(name) void name(const MouseInput &mouseInput) -#define impHandler0(name) void name(const MouseInput &mouseInput A_UNUSED) - -void setHalfJoyPad(const int s) -{ - halfJoyPad = s; -} - -static void moveChar(int x, int y) -{ - static const int lim1 = 10; - static const int diff = 20; - - // set center at (0,0) - x -= halfJoyPad; - y -= halfJoyPad; - - // some magic for checking at what sector was click - if (abs(x) < lim1) - x = 0; - - if (abs(y) < lim1) - y = 0; - - const int x2 = abs(x); - const int y2 = abs(y); - if (x2 > y2) - { - if ((y2 != 0) && x2 * 10 / y2 > diff) - y = 0; - } - else - { - if ((x2 != 0) && y2 * 10 / x2 > diff) - x = 0; - } - - // detecting direction - if (x > 0) - { - touchManager.setActionActive(InputAction::MOVE_LEFT, false); - touchManager.setActionActive(InputAction::MOVE_RIGHT, true); - } - else if (x < 0) - { - touchManager.setActionActive(InputAction::MOVE_LEFT, true); - touchManager.setActionActive(InputAction::MOVE_RIGHT, false); - } - else - { - touchManager.setActionActive(InputAction::MOVE_LEFT, false); - touchManager.setActionActive(InputAction::MOVE_RIGHT, false); - } - if (y > 0) - { - touchManager.setActionActive(InputAction::MOVE_DOWN, true); - touchManager.setActionActive(InputAction::MOVE_UP, false); - } - else if (y < 0) - { - touchManager.setActionActive(InputAction::MOVE_DOWN, false); - touchManager.setActionActive(InputAction::MOVE_UP, true); - } - else - { - touchManager.setActionActive(InputAction::MOVE_DOWN, false); - touchManager.setActionActive(InputAction::MOVE_UP, false); - } - inputManager.updateConditionMask(true); -} - -impHandler(padClick) -{ - moveChar(mouseInput.getX(), mouseInput.getY()); - padClicked = true; -} - -impHandler(padEvents) -{ - if (mouseInput.getType() == MouseEventType::MOVED) - { - if (padClicked) - moveChar(mouseInput.getX(), mouseInput.getY()); - } -} - -impHandler0(padOut) -{ - padClicked = false; - moveChar(halfJoyPad, halfJoyPad); -} - -impHandler0(padUp) -{ - padClicked = false; - moveChar(halfJoyPad, halfJoyPad); -} diff --git a/src/input/touch/touchactions.h b/src/input/touch/touchactions.h deleted file mode 100644 index 1d0017275..000000000 --- a/src/input/touch/touchactions.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef INPUT_TOUCH_TOUCHACTIONS_H -#define INPUT_TOUCH_TOUCHACTIONS_H - -#include "localconsts.h" - -#define decHandler(name) void name(const MouseInput &mouseInput) - -class MouseInput; - -decHandler(padClick); -decHandler(padEvents); -decHandler(padOut); -decHandler(padUp); - -void setHalfJoyPad(const int s); - -#undef decHandler - -#endif // INPUT_TOUCH_TOUCHACTIONS_H diff --git a/src/input/touch/touchmanager.cpp b/src/input/touch/touchmanager.cpp deleted file mode 100644 index df98e667f..000000000 --- a/src/input/touch/touchmanager.cpp +++ /dev/null @@ -1,709 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "input/touch/touchmanager.h" - -#include "configuration.h" - -#include "gui/gui.h" -#include "gui/skin.h" -#include "gui/theme.h" - -#include "gui/fonts/font.h" - -#include "input/inputmanager.h" -#include "input/mouseinput.h" - -#include "input/touch/touchactions.h" - -#include "utils/delete2.h" -#include "utils/foreach.h" - -#include "render/graphics.h" - -#include "render/vertexes/imagecollection.h" - -#include "resources/imagerect.h" - -#include "resources/image/image.h" - -#include "debug.h" - -TouchManager touchManager; - -extern RenderType openGLMode; - -TouchManager::TouchManager() : - mKeyboard(nullptr), - mPad(nullptr), - mObjects(), - mVertexes(nullptr), - mRedraw(true), - mShowJoystick(false), - mShowButtons(false), - mShowKeyboard(false), - mButtonsSize(1), - mJoystickSize(1), - mButtonsFormat(0), - mWidth(0), - mHeight(0), - mShow(false), - mInGame(false), - mTempHideButtons(false) -{ - for (int f = 0; f < actionsSize; f ++) - mActions[f] = false; - for (int f = 0; f < buttonsCount; f ++) - mButtons[f] = nullptr; -} - -TouchManager::~TouchManager() -{ - clear(); - CHECKLISTENERS -} - -void TouchManager::shutdown() restrict2 -{ - config.removeListeners(this); -} - -void TouchManager::init() restrict2 -{ - delete mVertexes; - mVertexes = new ImageCollection; - - config.addListener("showScreenJoystick", this); - config.addListener("showScreenButtons", this); - config.addListener("showScreenKeyboard", this); - config.addListener("screenButtonsSize", this); - config.addListener("screenJoystickSize", this); - config.addListener("screenButtonsFormat", this); - - mShowJoystick = config.getBoolValue("showScreenJoystick"); - mShowButtons = config.getBoolValue("showScreenButtons"); - mShowKeyboard = config.getBoolValue("showScreenKeyboard"); - mButtonsSize = config.getIntValue("screenButtonsSize"); - mJoystickSize = config.getIntValue("screenJoystickSize"); - mButtonsFormat = config.getIntValue("screenButtonsFormat"); - - setHalfJoyPad(getPadSize() / 2); - - if (mShowKeyboard) - loadKeyboard(); - if (mShowJoystick) - loadPad(); - if (mShowButtons) - loadButtons(); - mWidth = mainGraphics->mWidth; - mHeight = mainGraphics->mHeight; -} - -void TouchManager::loadTouchItem(TouchItem **restrict item, - const std::string &restrict name, - const std::string &restrict imageName, - const std::string &restrict text, - int x, int y, - const int width, const int height, - const int type, - const std::string &restrict eventPressed, - const std::string &restrict eventReleased, - const TouchFuncPtr fAll, - const TouchFuncPtr fPressed, - const TouchFuncPtr fReleased, - const TouchFuncPtr fOut) restrict2 -{ - *item = nullptr; - if (theme == nullptr) - return; - ImageRect *images = new ImageRect; - for (int f = 0; f < 9; f ++) - images->grid[f] = nullptr; - - Image *icon; - if (imageName.empty()) - icon = nullptr; - else - icon = Theme::getImageFromThemeXml(imageName, ""); - - Skin *const skin = theme->loadSkinRect(*images, name, ""); - if (skin != nullptr) - { - Image *const image = images->grid[0]; - if (image != nullptr) - { - if (x == -1) - x = skin->getOption("x", 10); - if (y == -1) - y = skin->getOption("y", 10); - const int pad = skin->getPadding(); - const int pad2 = 2 * pad; - const int border = skin->getOption("clickborder"); - const int border2 = border * 2; - const int diff = pad - border; - switch (type) - { - case LEFT: - y += (mainGraphics->mHeight - height) / 2; - break; - case RIGHT: - x = mainGraphics->mWidth - width - pad2 - x; - y = mainGraphics->mHeight - height - pad2 - y; - break; - case NORMAL: - default: - break; - } - *item = new TouchItem(text, Rect(x + diff, y + diff, - width + border2, height + border2), type, - eventPressed, eventReleased, images, icon, - x + pad, y + pad, width, height, - fAll, fPressed, fReleased, fOut); - mObjects.push_back(*item); - } - else - { - delete images; - } - theme->unload(skin); - } - else - { - delete images; - } - mRedraw = true; -} - -void TouchManager::clear() restrict2 -{ - FOR_EACH (TouchItemVectorCIter, it, mObjects) - unload(*it); - mObjects.clear(); - delete2(mVertexes); - mRedraw = true; -} - -void TouchManager::draw() restrict2 -{ - if (mRedraw) - { - mRedraw = false; - mVertexes->clear(); - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - const TouchItem *const item = *it; - if ((item != nullptr) && (item->images != nullptr) && (mShow || - (item == mKeyboard && mShowKeyboard))) - { - mainGraphics->calcWindow(mVertexes, item->x, item->y, - item->width, item->height, *item->images); - const Image *const icon = item->icon; - if (icon != nullptr) - { - mainGraphics->calcTileCollection(mVertexes, icon, - item->x + (item->width - icon->mBounds.w) / 2, - item->y + (item->height - icon->mBounds.h) / 2); - } - } - } - mainGraphics->finalize(mVertexes); - } - mainGraphics->drawTileCollection(mVertexes); - drawText(); -} - -void TouchManager::safeDraw() restrict2 -{ - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - const TouchItem *const item = *it; - if ((item != nullptr) && (item->images != nullptr) && (mShow || - (item == mKeyboard && mShowKeyboard))) - { - mainGraphics->drawImageRect(item->x, item->y, - item->width, item->height, *item->images); - const Image *const icon = item->icon; - if (icon != nullptr) - { - mainGraphics->drawImage(icon, - item->x + (item->width - icon->mBounds.w) / 2, - item->y + (item->height - icon->mBounds.h) / 2); - } - } - } - drawText(); -} - -void TouchManager::drawText() restrict2 -{ - if (gui == nullptr) - return; - - Font *const font = boldFont; - const Color &color1 = theme->getColor(ThemeColorId::TEXT, 255); - const Color &color2 = theme->getColor(ThemeColorId::TEXT_OUTLINE, 255); - - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - const TouchItem *const item = *it; - if ((item != nullptr) && mShow && !item->text.empty()) - { - const std::string str = item->text; - const int textX = (item->rect.width - font->getWidth(str)) - / 2 + item->x; - const int textY = (item->rect.height - font->getHeight()) - / 2 + item->y; - font->drawString(mainGraphics, - color1, - color2, - str, textX, textY); - } - } -} - -bool TouchManager::processEvent(const MouseInput &mouseInput) restrict2 -{ - const int x = mouseInput.getTouchX(); - const int y = mouseInput.getTouchY(); - - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - const TouchItem *const item = *it; - if (item == nullptr || - (!mShow && (item != mKeyboard || !mShowKeyboard))) - { - continue; - } - const Rect &rect = item->rect; - if (rect.isPointInRect(x, y)) - { - MouseInput event = mouseInput; - event.setX(event.getTouchX() - item->x); - event.setY(event.getTouchY() - item->y); - if (item->funcAll != nullptr) - item->funcAll(event); - - switch (mouseInput.getType()) - { - case MouseEventType::PRESSED: - if (!item->eventPressed.empty()) - executeAction(item->eventPressed); - else if (item->funcPressed != nullptr) - item->funcPressed(event); - break; - case MouseEventType::RELEASED: - if (!item->eventReleased.empty()) - executeAction(item->eventReleased); - else if (item->funcReleased != nullptr) - item->funcReleased(event); - break; - default: - case MouseEventType::MOVED: - case MouseEventType::WHEEL_MOVED_DOWN: - case MouseEventType::WHEEL_MOVED_UP: - case MouseEventType::CLICKED: - case MouseEventType::ENTERED: - case MouseEventType::EXITED: - case MouseEventType::DRAGGED: - case MouseEventType::RELEASED2: - break; - } - return true; - } - else if (item->funcOut != nullptr) - { - item->funcOut(mouseInput); - } - } - return false; -} - -bool TouchManager::isActionActive(const InputActionT index) restrict2 const -{ - if (CAST_S32(index) < 0 || - CAST_S32(index) >= actionsSize) - { - return false; - } - return mActions[CAST_SIZE(index)]; -} - -void TouchManager::resize(const int width, const int height) restrict2 -{ - mRedraw = true; - const int maxHeight = mHeight; - const int diffW = width - mWidth; - const int diffH = height - maxHeight; - FOR_EACH (TouchItemVectorCIter, it, mObjects) - { - TouchItem *const item = *it; - if (item == nullptr) - continue; - - switch (item->type) - { - case LEFT: - if (height != maxHeight) - { - item->y = (height - item->height) / 2; - item->rect.y = (height - item->rect.y) / 2; - } - break; - case RIGHT: - { - item->x += diffW; - item->rect.x += diffW; - item->y += diffH; - item->rect.y += diffH; - break; - } - case NORMAL: - default: - break; - } - } - mWidth = mainGraphics->mWidth; - mHeight = mainGraphics->mHeight; -} - -void TouchManager::unload(TouchItem *restrict const item) -{ - if (item != nullptr) - { - if (item->images != nullptr) - { - Theme::unloadRect(*item->images); - delete2(item->images); - if (item->icon != nullptr) - { - item->icon->decRef(); - item->icon = nullptr; - } - } - delete item; - } -} - -void TouchManager::unloadTouchItem(TouchItem *restrict *unloadItem) restrict2 -{ - FOR_EACH (TouchItemVectorIter, it, mObjects) - { - TouchItem *item = *it; - if ((item != nullptr) && *unloadItem == item) - { - mObjects.erase(it); - unload(item); - return; - } - } -} - -void TouchManager::loadPad() restrict2 -{ - const int sz = (mJoystickSize + 2) * 50; - loadTouchItem(&mPad, "dpad.xml", "dpad_image.xml", "", -1, -1, sz, sz, - LEFT, "", "", &padEvents, &padClick, &padUp, &padOut); -} - -void TouchManager::loadButtons() restrict2 -{ - const int sz = (mButtonsSize + 1) * 50; - if (theme == nullptr) - return; - Skin *const skin = theme->load("dbutton.xml", ""); - - if (skin != nullptr) - { - const int x = skin->getOption("x", 10); - const int y = skin->getOption("y", 10); - const int pad = skin->getPadding(); - const int pad2 = 2 * pad + sz; - const int skipWidth = pad2 + x; - const int skipHeight = pad2 + y; - - switch (mButtonsFormat) - { - // 2x1 - case 0: - default: - { - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", x, y, sz, sz, RIGHT, "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth, y, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 2x2 - case 1: - { - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", x, y, sz, sz, RIGHT, "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", skipWidth, y, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", x, skipHeight, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 3x3 - case 2: - { - const int pad4 = pad2 * 2; - const int skipWidth2 = pad4 + x; - const int skipHeight2 = pad4 + y; - loadTouchItem(&mButtons[8], "dbutton.xml", "dbutton_image.xml", - "9", x, y, sz, sz, RIGHT, "screenActionButton8", ""); - loadTouchItem(&mButtons[7], "dbutton.xml", "dbutton_image.xml", - "8", skipWidth, y, sz, sz, RIGHT, - "screenActionButton7", ""); - loadTouchItem(&mButtons[6], "dbutton.xml", "dbutton_image.xml", - "7", skipWidth2, y, sz, sz, RIGHT, - "screenActionButton6", ""); - loadTouchItem(&mButtons[5], "dbutton.xml", "dbutton_image.xml", - "6", x, skipHeight, sz, sz, RIGHT, - "screenActionButton5", ""); - loadTouchItem(&mButtons[4], "dbutton.xml", "dbutton_image.xml", - "5", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton4", ""); - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", skipWidth2, skipHeight, sz, sz, RIGHT, - "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", x, skipHeight2, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", skipWidth, skipHeight2, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth2, skipHeight2, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 4x2 - case 3: - { - const int skipWidth2 = pad2 * 2 + x; - const int skipWidth3 = pad2 * 3 + x; - loadTouchItem(&mButtons[7], "dbutton.xml", "dbutton_image.xml", - "8", x, y, sz, sz, RIGHT, "screenActionButton7", ""); - loadTouchItem(&mButtons[6], "dbutton.xml", "dbutton_image.xml", - "7", skipWidth, y, sz, sz, RIGHT, - "screenActionButton6", ""); - loadTouchItem(&mButtons[5], "dbutton.xml", "dbutton_image.xml", - "6", skipWidth2, y, sz, sz, RIGHT, - "screenActionButton5", ""); - loadTouchItem(&mButtons[4], "dbutton.xml", "dbutton_image.xml", - "5", skipWidth3, y, sz, sz, RIGHT, - "screenActionButton4", ""); - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", x, skipHeight, sz, sz, RIGHT, - "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", skipWidth2, skipHeight, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth3, skipHeight, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 4x3 - case 4: - { - const int skipWidth2 = pad2 * 2 + x; - const int skipWidth3 = pad2 * 3 + x; - const int skipHeight2 = pad2 * 2 + y; - loadTouchItem(&mButtons[11], "dbutton.xml", - "dbutton_image.xml", "12", x, y, sz, sz, RIGHT, - "screenActionButton11", ""); - loadTouchItem(&mButtons[10], "dbutton.xml", - "dbutton_image.xml", "11", skipWidth, y, sz, sz, RIGHT, - "screenActionButton10", ""); - loadTouchItem(&mButtons[9], "dbutton.xml", "dbutton_image.xml", - "10", skipWidth2, y, sz, sz, RIGHT, - "screenActionButton9", ""); - loadTouchItem(&mButtons[8], "dbutton.xml", "dbutton_image.xml", - "9", skipWidth3, y, sz, sz, RIGHT, - "screenActionButton8", ""); - loadTouchItem(&mButtons[7], "dbutton.xml", "dbutton_image.xml", - "8", x, skipHeight, sz, sz, RIGHT, - "screenActionButton7", ""); - loadTouchItem(&mButtons[6], "dbutton.xml", "dbutton_image.xml", - "7", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton6", ""); - loadTouchItem(&mButtons[5], "dbutton.xml", "dbutton_image.xml", - "6", skipWidth2, skipHeight, sz, sz, RIGHT, - "screenActionButton5", ""); - loadTouchItem(&mButtons[4], "dbutton.xml", "dbutton_image.xml", - "5", skipWidth3, skipHeight, sz, sz, RIGHT, - "screenActionButton4", ""); - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", x, skipHeight2, sz, sz, RIGHT, - "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", skipWidth, skipHeight2, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", skipWidth2, skipHeight2, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth3, skipHeight2, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - // 3x2 - case 5: - { - const int pad4 = pad2 * 2; - const int skipWidth2 = pad4 + x; - loadTouchItem(&mButtons[5], "dbutton.xml", "dbutton_image.xml", - "6", x, y, sz, sz, RIGHT, "screenActionButton5", ""); - loadTouchItem(&mButtons[4], "dbutton.xml", "dbutton_image.xml", - "5", skipWidth, y, sz, sz, RIGHT, - "screenActionButton4", ""); - loadTouchItem(&mButtons[3], "dbutton.xml", "dbutton_image.xml", - "4", skipWidth2, y, sz, sz, RIGHT, - "screenActionButton3", ""); - loadTouchItem(&mButtons[2], "dbutton.xml", "dbutton_image.xml", - "3", x, skipHeight, sz, sz, RIGHT, - "screenActionButton2", ""); - loadTouchItem(&mButtons[1], "dbutton.xml", "dbutton_image.xml", - "2", skipWidth, skipHeight, sz, sz, RIGHT, - "screenActionButton1", ""); - loadTouchItem(&mButtons[0], "dbutton.xml", "dbutton_image.xml", - "1", skipWidth2, skipHeight, sz, sz, RIGHT, - "screenActionButton0", ""); - break; - } - }; - theme->unload(skin); - } -} - -void TouchManager::loadKeyboard() restrict2 -{ - loadTouchItem(&mKeyboard, "keyboard_icon.xml", "", "", -1, -1, 28, 28, - NORMAL, "", "screenActionKeyboard"); -} - -void TouchManager::optionChanged(const std::string &value) restrict2 -{ - if (value == "showScreenJoystick") - { - if (mShowJoystick == config.getBoolValue("showScreenJoystick")) - return; - mShowJoystick = config.getBoolValue("showScreenJoystick"); - if (mShowJoystick) - loadPad(); - else - unloadTouchItem(&mPad); - mRedraw = true; - } - else if (value == "showScreenButtons") - { - if (mShowButtons == config.getBoolValue("showScreenButtons")) - return; - mShowButtons = config.getBoolValue("showScreenButtons"); - if (mShowButtons) - { - loadButtons(); - } - else - { - for (int f = 0; f < buttonsCount; f ++) - unloadTouchItem(&mButtons[f]); - } - mRedraw = true; - } - else if (value == "showScreenKeyboard") - { - if (mShowKeyboard == config.getBoolValue("showScreenKeyboard")) - return; - mShowKeyboard = config.getBoolValue("showScreenKeyboard"); - if (mShowKeyboard) - loadKeyboard(); - else - unloadTouchItem(&mKeyboard); - mRedraw = true; - } - else if (value == "screenButtonsSize") - { - if (mButtonsSize == config.getIntValue("screenButtonsSize")) - return; - mButtonsSize = config.getIntValue("screenButtonsSize"); - if (mShowButtons) - { - for (int f = 0; f < buttonsCount; f ++) - unloadTouchItem(&mButtons[f]); - loadButtons(); - } - } - else if (value == "screenJoystickSize") - { - if (mJoystickSize == config.getIntValue("screenJoystickSize")) - return; - mJoystickSize = config.getIntValue("screenJoystickSize"); - setHalfJoyPad(getPadSize() / 2); - if (mShowJoystick) - { - unloadTouchItem(&mPad); - loadPad(); - } - } - else if (value == "screenButtonsFormat") - { - if (mButtonsFormat == config.getIntValue("screenButtonsFormat")) - return; - mButtonsFormat = config.getIntValue("screenButtonsFormat"); - if (mShowButtons) - { - for (int f = 0; f < buttonsCount; f ++) - unloadTouchItem(&mButtons[f]); - loadButtons(); - } - } -} - -void TouchManager::setInGame(const bool b) restrict2 -{ - mInGame = b; - mShow = mInGame && !mTempHideButtons; - mRedraw = true; -} - -void TouchManager::setTempHide(const bool b) restrict2 -{ - mTempHideButtons = b; - mShow = mInGame && !mTempHideButtons; - mRedraw = true; -} - -void TouchManager::executeAction(const std::string &restrict event) -{ - inputManager.executeAction(static_cast( - config.getIntValue(event))); -} diff --git a/src/input/touch/touchmanager.h b/src/input/touch/touchmanager.h deleted file mode 100644 index 0b9187968..000000000 --- a/src/input/touch/touchmanager.h +++ /dev/null @@ -1,204 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2017 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef INPUT_TOUCH_TOUCHMANAGER_H -#define INPUT_TOUCH_TOUCHMANAGER_H - -#include "listeners/configlistener.h" - -#include "enums/input/inputaction.h" - -#include "gui/rect.h" - -#include "utils/cast.h" -#include "utils/vector.h" - -#include "localconsts.h" - -class Image; -class ImageCollection; -class ImageRect; -class MouseInput; - -typedef void (*TouchFuncPtr) (const MouseInput &restrict mouseInput); - -const int actionsSize = CAST_S32(InputAction::TOTAL); -const int buttonsCount = 12; - -struct TouchItem final -{ - TouchItem(const std::string &text0, - const Rect &rect0, - const int type0, - const std::string &restrict eventPressed0, - const std::string &restrict eventReleased0, - ImageRect *restrict const images0, - Image *restrict const icon0, - const int x0, const int y0, - const int width0, const int height0, - const TouchFuncPtr ptrAll, - const TouchFuncPtr ptrPressed, - const TouchFuncPtr ptrReleased, - const TouchFuncPtr ptrOut) : - text(text0), - rect(rect0), - type(type0), - eventPressed(eventPressed0), - eventReleased(eventReleased0), - images(images0), - icon(icon0), - x(x0), - y(y0), - width(width0), - height(height0), - funcAll(ptrAll), - funcPressed(ptrPressed), - funcReleased(ptrReleased), - funcOut(ptrOut) - { - } - - A_DELETE_COPY(TouchItem) - - std::string text; - Rect rect; - int type; - std::string eventPressed; - std::string eventReleased; - ImageRect *images; - Image *icon; - int x; - int y; - int width; - int height; - TouchFuncPtr funcAll; - TouchFuncPtr funcPressed; - TouchFuncPtr funcReleased; - TouchFuncPtr funcOut; -}; - -typedef STD_VECTOR TouchItemVector; -typedef TouchItemVector::const_iterator TouchItemVectorCIter; -typedef TouchItemVector::iterator TouchItemVectorIter; - -class TouchManager final : public ConfigListener -{ - public: - TouchManager(); - - ~TouchManager(); - - A_DELETE_COPY(TouchManager) - - enum Types - { - NORMAL = 0, - LEFT = 1, - RIGHT = 2 - }; - - void init() restrict2; - - void loadTouchItem(TouchItem **restrict item, - const std::string &restrict name, - const std::string &restrict imageName, - const std::string &restrict text, - int x, int y, - const int width, const int height, - const int type, - const std::string &restrict eventPressed, - const std::string &restrict eventReleased, - const TouchFuncPtr fAll = nullptr, - const TouchFuncPtr fPressed = nullptr, - const TouchFuncPtr fReleased = nullptr, - const TouchFuncPtr fOut = nullptr) - restrict2 A_NONNULL(2); - - void clear() restrict2; - - void draw() restrict2; - - void safeDraw() restrict2; - - void drawText() restrict2; - - bool processEvent(const MouseInput &mouseInput) restrict2; - - bool isActionActive(const InputActionT index) restrict2 const; - - void setActionActive(const InputActionT index, - const bool value) restrict2 - { - if (CAST_S32(index) >= 0 && - CAST_S32(index) < actionsSize) - { - mActions[CAST_SIZE(index)] = value; - } - } - - void resize(const int width, const int height) restrict2; - - static void unload(TouchItem *restrict const item); - - void unloadTouchItem(TouchItem *restrict *unloadItem) restrict2; - - void optionChanged(const std::string &value) restrict2 override final; - - void loadPad() restrict2; - - void loadButtons() restrict2; - - void loadKeyboard() restrict2; - - int getPadSize() restrict2 const - { return (mJoystickSize + 2) * 50; } - - void setInGame(const bool b) restrict2; - - void setTempHide(const bool b) restrict2; - - void shutdown() restrict2; - - static void executeAction(const std::string &restrict event); - - private: - TouchItem *mKeyboard; - TouchItem *mPad; - TouchItem *mButtons[buttonsCount] A_NONNULLPOINTER; - TouchItemVector mObjects; - ImageCollection *mVertexes A_NONNULLPOINTER; - bool mActions[actionsSize]; - bool mRedraw; - bool mShowJoystick; - bool mShowButtons; - bool mShowKeyboard; - int mButtonsSize; - int mJoystickSize; - int mButtonsFormat; - int mWidth; - int mHeight; - bool mShow; - bool mInGame; - bool mTempHideButtons; -}; - -extern TouchManager touchManager; - -#endif // INPUT_TOUCH_TOUCHMANAGER_H -- cgit v1.2.3-70-g09d2