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.
84 lines
2.4 KiB
84 lines
2.4 KiB
#pragma once |
|
|
|
#if defined(VIRTUAL_GAMEPAD) && !defined(USE_SDL1) |
|
|
|
#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 VirtualPadButtonEventHandler { |
|
public: |
|
VirtualPadButtonEventHandler(VirtualPadButton *virtualPadButton) |
|
: virtualPadButton(virtualPadButton) |
|
, activeFinger(0) |
|
, isActive(false) |
|
{ |
|
} |
|
|
|
bool Handle(const SDL_Event &event); |
|
|
|
private: |
|
VirtualPadButton *virtualPadButton; |
|
SDL_FingerID activeFinger; |
|
bool isActive; |
|
|
|
bool HandleFingerDown(const SDL_TouchFingerEvent &event); |
|
bool HandleFingerUp(const SDL_TouchFingerEvent &event); |
|
bool HandleFingerMotion(const SDL_TouchFingerEvent &event); |
|
}; |
|
|
|
class VirtualGamepadEventHandler { |
|
public: |
|
VirtualGamepadEventHandler(VirtualGamepad *virtualGamepad) |
|
: directionPadEventHandler(&virtualGamepad->directionPad) |
|
, 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: |
|
VirtualDirectionPadEventHandler directionPadEventHandler; |
|
|
|
VirtualPadButtonEventHandler primaryActionButtonEventHandler; |
|
VirtualPadButtonEventHandler secondaryActionButtonEventHandler; |
|
VirtualPadButtonEventHandler spellActionButtonEventHandler; |
|
VirtualPadButtonEventHandler cancelButtonEventHandler; |
|
|
|
VirtualPadButtonEventHandler healthButtonEventHandler; |
|
VirtualPadButtonEventHandler manaButtonEventHandler; |
|
}; |
|
|
|
void HandleTouchEvent(const SDL_Event &event); |
|
|
|
} // namespace devilution |
|
|
|
#endif
|
|
|