You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.0 KiB
93 lines
3.0 KiB
#pragma once |
|
|
|
#include <SDL.h> |
|
|
|
#include "controls/touch/gamepad.h" |
|
|
|
namespace devilution { |
|
|
|
class VirtualDirectionPadEventHandler { |
|
public: |
|
VirtualDirectionPadEventHandler(VirtualDirectionPad *virtualDirectionPad) |
|
: virtualDirectionPad(virtualDirectionPad) |
|
, activeFinger(0) |
|
, isActive(false) |
|
{ |
|
} |
|
|
|
bool Handle(const SDL_Event &event); |
|
|
|
private: |
|
VirtualDirectionPad *virtualDirectionPad; |
|
SDL_FingerID activeFinger; |
|
bool isActive; |
|
|
|
bool HandleFingerDown(const SDL_TouchFingerEvent &event); |
|
bool HandleFingerUp(const SDL_TouchFingerEvent &event); |
|
bool HandleFingerMotion(const SDL_TouchFingerEvent &event); |
|
}; |
|
|
|
class VirtualButtonEventHandler { |
|
public: |
|
VirtualButtonEventHandler(VirtualButton *virtualButton, bool toggles = false) |
|
: virtualButton(virtualButton) |
|
, activeFinger(0) |
|
, isActive(false) |
|
, toggles(toggles) |
|
{ |
|
} |
|
|
|
bool Handle(const SDL_Event &event); |
|
|
|
private: |
|
VirtualButton *virtualButton; |
|
SDL_FingerID activeFinger; |
|
bool isActive; |
|
bool toggles; |
|
|
|
bool HandleFingerDown(const SDL_TouchFingerEvent &event); |
|
bool HandleFingerUp(const SDL_TouchFingerEvent &event); |
|
bool HandleFingerMotion(const SDL_TouchFingerEvent &event); |
|
}; |
|
|
|
class VirtualGamepadEventHandler { |
|
public: |
|
VirtualGamepadEventHandler(VirtualGamepad *virtualGamepad) |
|
: charMenuButtonEventHandler(&virtualGamepad->menuPanel.charButton) |
|
, questsMenuButtonEventHandler(&virtualGamepad->menuPanel.questsButton) |
|
, inventoryMenuButtonEventHandler(&virtualGamepad->menuPanel.inventoryButton) |
|
, mapMenuButtonEventHandler(&virtualGamepad->menuPanel.mapButton) |
|
, directionPadEventHandler(&virtualGamepad->directionPad) |
|
, standButtonEventHandler(&virtualGamepad->standButton, true) |
|
, primaryActionButtonEventHandler(&virtualGamepad->primaryActionButton) |
|
, secondaryActionButtonEventHandler(&virtualGamepad->secondaryActionButton) |
|
, spellActionButtonEventHandler(&virtualGamepad->spellActionButton) |
|
, cancelButtonEventHandler(&virtualGamepad->cancelButton) |
|
, healthButtonEventHandler(&virtualGamepad->healthButton) |
|
, manaButtonEventHandler(&virtualGamepad->manaButton) |
|
{ |
|
} |
|
|
|
bool Handle(const SDL_Event &event); |
|
|
|
private: |
|
VirtualButtonEventHandler charMenuButtonEventHandler; |
|
VirtualButtonEventHandler questsMenuButtonEventHandler; |
|
VirtualButtonEventHandler inventoryMenuButtonEventHandler; |
|
VirtualButtonEventHandler mapMenuButtonEventHandler; |
|
|
|
VirtualDirectionPadEventHandler directionPadEventHandler; |
|
VirtualButtonEventHandler standButtonEventHandler; |
|
|
|
VirtualButtonEventHandler primaryActionButtonEventHandler; |
|
VirtualButtonEventHandler secondaryActionButtonEventHandler; |
|
VirtualButtonEventHandler spellActionButtonEventHandler; |
|
VirtualButtonEventHandler cancelButtonEventHandler; |
|
|
|
VirtualButtonEventHandler healthButtonEventHandler; |
|
VirtualButtonEventHandler manaButtonEventHandler; |
|
}; |
|
|
|
void HandleTouchEvent(const SDL_Event &event); |
|
|
|
} // namespace devilution
|
|
|