1#ifndef GAME_CLIENT_COMPONENTS_TOUCH_CONTROLS_H
2#define GAME_CLIENT_COMPONENTS_TOUCH_CONTROLS_H
45 int Sizeof()
const override {
return sizeof(*this); }
49 bool OnTouchState(
const std::vector<IInput::CTouchFingerState> &vTouchFingerStates)
override;
180 class CTouchButtonBehavior;
216 void Render(std::optional<bool> Selected = std::nullopt, std::optional<CUnitRect> Rect = std::nullopt)
const;
379 static constexpr const char *
const BEHAVIOR_ID =
"joystick-action";
578 void UpdateButtonsGame(
const std::vector<IInput::CTouchFingerState> &vTouchFingerStates);
586 std::optional<ColorRGBA>
ParseColor(
const json_value *pColorValue,
const char *pAttributeName, std::optional<ColorRGBA> DefaultColor)
const;
607 void UpdateButtonsEditor(
const std::vector<IInput::CTouchFingerState> &vTouchFingerStates);
Definition component.h:165
Definition jsonwriter.h:15
Definition touch_controls.h:548
IInput::CTouchFinger m_Finger
Definition touch_controls.h:551
bool m_Active
Definition touch_controls.h:550
Definition touch_controls.h:697
CTouchButton * m_pTargetButton
Definition touch_controls.h:700
bool m_Resolved
Definition touch_controls.h:699
Definition touch_controls.h:75
bool IsOverlap(const CUnitRect &Other) const
Definition touch_controls.h:82
bool operator==(const CUnitRect &Other) const
Definition touch_controls.h:86
int m_Y
Definition touch_controls.h:78
int m_X
Definition touch_controls.h:77
float Distance(const CUnitRect &Other) const
Definition touch_controls.cpp:2517
int m_H
Definition touch_controls.h:80
int m_W
Definition touch_controls.h:79
Definition touch_controls.h:24
std::vector< ivec2 > m_vTargets
Definition touch_controls.h:595
void SetBackgroundColorInactive(ColorRGBA Color)
Definition touch_controls.h:655
void UpdateButtonsGame(const std::vector< IInput::CTouchFingerState > &vTouchFingerStates)
Definition touch_controls.cpp:977
std::optional< IInput::CTouchFingerState > m_ActiveFingerState
Definition touch_controls.h:612
void SetSelectedButton(CTouchButton *TargetButton)
Definition touch_controls.h:647
void ResetVirtualVisibilities()
Definition touch_controls.cpp:1737
std::vector< CUnitRect > m_vYSortedRects
Definition touch_controls.h:598
std::vector< IInput::CTouchFingerState > m_vDeletedFingerState
Definition touch_controls.h:617
void OnWindowResize() override
Definition touch_controls.cpp:774
std::optional< CUnitRect > FindPositionXY(std::vector< CUnitRect > &vVisibleButtonRects, CUnitRect MyRect)
Definition touch_controls.cpp:2087
vec2 m_AccumulatedDelta
Definition touch_controls.h:616
void SetPreviewAllButtons(bool Preview)
Definition touch_controls.h:659
void OnReset() override
Definition touch_controls.cpp:768
std::optional< EDirectTouchIngameMode > ParseDirectTouchIngameMode(const json_value *pModeValue)
Definition touch_controls.cpp:1311
void WriteConfiguration(CJsonWriter *pWriter)
Definition touch_controls.cpp:1706
std::optional< CUnitRect > ShownRect() const
Definition touch_controls.h:644
vec2 m_ZoomStartPos
Definition touch_controls.h:615
void ResetButtonPointers()
Definition touch_controls.cpp:2456
int m_DirectTouchLastAction
Definition touch_controls.h:545
std::array< bool,(size_t) EButtonVisibility::NUM_VISIBILITIES > m_aVirtualVisibilities
Definition touch_controls.h:618
@ ACTION_AIM
Definition touch_controls.h:171
@ ACTION_HOOK
Definition touch_controls.h:173
@ NUM_ACTIONS
Definition touch_controls.h:174
@ ACTION_FIRE
Definition touch_controls.h:172
void SetBackgroundColorActive(ColorRGBA Color)
Definition touch_controls.h:656
std::optional< CUnitRect > m_ShownRect
Definition touch_controls.h:623
void UpdateButtonsEditor(const std::vector< IInput::CTouchFingerState > &vTouchFingerStates)
Definition touch_controls.cpp:1744
int NextActiveAction(int Action) const
Definition touch_controls.cpp:930
std::array< CTouchControls::CIssueParam,(unsigned) CTouchControls::EIssueType::NUM_ISSUES > Issues()
Definition touch_controls.cpp:2480
void SaveConfigurationToClipboard()
Definition touch_controls.cpp:870
int m_ActionSelected
Definition touch_controls.h:534
void SetEditingActive(bool EditingActive)
Definition touch_controls.h:70
ColorRGBA BackgroundColorInactive() const
Definition touch_controls.h:653
void OnRender() override
Definition touch_controls.cpp:807
int m_LastWidth
Definition touch_controls.h:599
CUIRect CalculateScreenFromUnitRect(CUnitRect Unit, EButtonShape Shape=EButtonShape::RECT) const
Definition touch_controls.cpp:104
CTouchButton * SampleButton() const
Definition touch_controls.h:649
int NextDirectTouchAction() const
Definition touch_controls.cpp:943
int m_JoystickPressCount
Definition touch_controls.h:539
std::vector< IInput::CTouchFinger > m_vStaleFingers
Definition touch_controls.h:563
EButtonShape
Definition touch_controls.h:111
@ CIRCLE
Definition touch_controls.h:113
@ RECT
Definition touch_controls.h:112
@ NUM_SHAPES
Definition touch_controls.h:114
CTouchButton * SelectedButton() const
Definition touch_controls.h:646
std::unique_ptr< CTouchButton > m_pSampleButton
Definition touch_controls.h:621
std::vector< CUnitRect > m_vLastUpdateRects
Definition touch_controls.h:596
bool IsRectOverlapping(CUnitRect MyRect, EButtonShape Shape) const
Definition touch_controls.cpp:2422
static constexpr const char *const SHAPE_NAMES[(int) EButtonShape::NUM_SHAPES]
Definition touch_controls.h:148
void SetShownRect(std::optional< CUnitRect > Rect)
Definition touch_controls.h:645
ColorRGBA DefaultBackgroundColorActive() const
Definition touch_controls.h:652
CPopupParam m_PopupParam
Definition touch_controls.h:707
void DeleteSelectedButton()
Definition touch_controls.cpp:2411
bool IsButtonEditing() const
Definition touch_controls.h:650
bool m_aExtraMenuActive[(int) EButtonVisibility::EXTRA_MENU_5 -(int) EButtonVisibility::EXTRA_MENU_1+1]
Definition touch_controls.h:529
void ReverseVirtualVisibilities(int Number)
Definition touch_controls.h:643
bool IsEditingActive() const
Definition touch_controls.h:69
std::array< CIssueParam,(int) EIssueType::NUM_ISSUES > m_aIssueParam
Definition touch_controls.h:708
int Sizeof() const override
Definition touch_controls.h:45
EDirectTouchSpectateMode DirectTouchSpectate() const
Definition touch_controls.h:63
bool LoadConfigurationFromClipboard()
Definition touch_controls.cpp:850
std::optional< EDirectTouchSpectateMode > ParseDirectTouchSpectateMode(const json_value *pModeValue)
Definition touch_controls.cpp:1341
void RenderButtonsGame()
Definition touch_controls.cpp:1192
std::array< bool,(size_t) EButtonVisibility::NUM_VISIBILITIES > VirtualVisibilities() const
Definition touch_controls.h:642
std::optional< CTouchButton > ParseButton(const json_value *pButtonObject)
Definition touch_controls.cpp:1392
std::unique_ptr< CBindTouchButtonBehavior > ParseBindBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1592
static constexpr const int BUTTON_SIZE_MAXIMUM
Definition touch_controls.h:28
void UpdateSampleButton(const CTouchButton &SrcButton)
Definition touch_controls.cpp:2492
bool m_EditingActive
Definition touch_controls.h:568
CTouchButton * m_pSelectedButton
Definition touch_controls.h:624
vec2 CalculateScreenSize() const
Definition touch_controls.cpp:1210
std::unique_ptr< CBindToggleTouchButtonBehavior > ParseBindToggleBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1640
CActionState m_aDirectTouchActionStates[NUM_ACTIONS]
Definition touch_controls.h:557
std::vector< CTouchButton * > GetButtonsEditor()
Definition touch_controls.cpp:2505
static constexpr const char *const DIRECT_TOUCH_SPECTATE_MODE_NAMES[(int) EDirectTouchSpectateMode::NUM_STATES]
Definition touch_controls.h:147
bool PreviewAllButtons() const
Definition touch_controls.h:658
void SetUnsavedChanges(bool UnsavedChanges)
Definition touch_controls.h:641
std::vector< CTouchButton > m_vTouchButtons
Definition touch_controls.h:524
bool LoadConfigurationFromFile(int StorageType)
Definition touch_controls.cpp:835
void OnInit() override
Definition touch_controls.cpp:759
void SetDirectTouchSpectate(EDirectTouchSpectateMode DirectTouchSpectate)
Definition touch_controls.h:64
void SetEditingChanges(bool EditingChanges)
Definition touch_controls.h:72
std::unique_ptr< CExtraMenuTouchButtonBehavior > ParseExtraMenuBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1576
static const constexpr int MAX_EXTRA_MENU_NUMBER
Definition touch_controls.h:108
bool m_UnsavedChanges
Definition touch_controls.h:626
int m_LastHeight
Definition touch_controls.h:600
EDirectTouchIngameMode
Definition touch_controls.h:30
@ DISABLED
Definition touch_controls.h:31
@ HOOK
Definition touch_controls.h:35
@ AIM
Definition touch_controls.h:33
@ FIRE
Definition touch_controls.h:34
@ NUM_STATES
Definition touch_controls.h:36
@ ACTION
Definition touch_controls.h:32
ColorRGBA m_BackgroundColorInactive
Definition touch_controls.h:510
EPopupType
Definition touch_controls.h:663
@ BUTTON_CHANGED
Definition touch_controls.h:665
@ NO_SPACE
Definition touch_controls.h:667
@ NUM_POPUPS
Definition touch_controls.h:670
@ BUTTON_INVISIBLE
Definition touch_controls.h:669
void RemakeSampleButton()
Definition touch_controls.h:648
ColorRGBA DefaultBackgroundColorInactive() const
Definition touch_controls.h:651
CTouchButton * NewButton()
Definition touch_controls.cpp:2386
EDirectTouchIngameMode DirectTouchIngame() const
Definition touch_controls.h:57
bool m_PreventSaving
Definition touch_controls.h:611
bool HasEditingChanges() const
Definition touch_controls.h:71
EIssueType
Definition touch_controls.h:689
@ CACHE_SETTINGS
Definition touch_controls.h:690
@ CACHE_POSITION
Definition touch_controls.h:692
@ NUM_ISSUES
Definition touch_controls.h:693
@ SAVE_SETTINGS
Definition touch_controls.h:691
std::unique_ptr< CPredefinedTouchButtonBehavior > ParsePredefinedBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1537
std::optional< IInput::CTouchFingerState > m_LongPressFingerState
Definition touch_controls.h:614
ColorRGBA BackgroundColorActive() const
Definition touch_controls.h:654
void SetDirectTouchIngame(EDirectTouchIngameMode DirectTouchIngame)
Definition touch_controls.h:58
ColorRGBA m_BackgroundColorActive
Definition touch_controls.h:517
bool ParseConfiguration(const void *pFileData, unsigned FileLength)
Definition touch_controls.cpp:1217
void ResetButtons()
Definition touch_controls.cpp:1180
bool OnTouchState(const std::vector< IInput::CTouchFingerState > &vTouchFingerStates) override
Definition touch_controls.cpp:783
std::optional< CUnitRect > UpdatePosition(CUnitRect MyRect, EButtonShape Shape, bool Ignore=false)
Definition touch_controls.cpp:2438
CButtonVisibilityData m_aVisibilityFunctions[(int) EButtonVisibility::NUM_VISIBILITIES]
Definition touch_controls.h:167
static constexpr const char *const LABEL_TYPE_NAMES[(int) CButtonLabel::EType::NUM_TYPES]
Definition touch_controls.h:177
CPopupParam RequiredPopup()
Definition touch_controls.cpp:2464
static constexpr const int BUTTON_SIZE_SCALE
Definition touch_controls.h:26
std::vector< CUnitRect > m_vXSortedRects
Definition touch_controls.h:597
std::unique_ptr< CTouchButtonBehavior > ParseBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1502
bool AnyIssueNotResolved() const
Definition touch_controls.cpp:2473
EDirectTouchIngameMode m_DirectTouchIngame
Definition touch_controls.h:496
void RenderButtonsEditor()
Definition touch_controls.cpp:2067
static constexpr const int BUTTON_SIZE_MINIMUM
Definition touch_controls.h:27
bool m_PreviewAllButtons
Definition touch_controls.h:627
std::optional< ColorRGBA > ParseColor(const json_value *pColorValue, const char *pAttributeName, std::optional< ColorRGBA > DefaultColor) const
Definition touch_controls.cpp:1371
std::optional< IInput::CTouchFingerState > m_ZoomFingerState
Definition touch_controls.h:613
bool SaveConfigurationToFile()
Definition touch_controls.cpp:856
bool m_EditingChanges
Definition touch_controls.h:573
EButtonVisibility
Definition touch_controls.h:93
@ EXTRA_MENU_3
Definition touch_controls.h:103
@ EXTRA_MENU_2
Definition touch_controls.h:102
@ DUMMY_ALLOWED
Definition touch_controls.h:97
@ NUM_VISIBILITIES
Definition touch_controls.h:106
@ ZOOM_ALLOWED
Definition touch_controls.h:95
@ EXTRA_MENU_5
Definition touch_controls.h:105
@ VOTE_ACTIVE
Definition touch_controls.h:96
@ DEMO_PLAYER
Definition touch_controls.h:100
@ EXTRA_MENU_4
Definition touch_controls.h:104
@ RCON_AUTHED
Definition touch_controls.h:99
@ INGAME
Definition touch_controls.h:94
@ DUMMY_CONNECTED
Definition touch_controls.h:98
@ EXTRA_MENU_1
Definition touch_controls.h:101
bool HasUnsavedChanges() const
Definition touch_controls.h:640
EDirectTouchSpectateMode
Definition touch_controls.h:39
@ AIM
Definition touch_controls.h:41
@ NUM_STATES
Definition touch_controls.h:42
void InitVisibilityFunctions()
Definition touch_controls.cpp:878
CUnitRect CalculateHitbox(const CUnitRect &Rect, EButtonShape Shape) const
Definition touch_controls.cpp:116
static constexpr const char *const DIRECT_TOUCH_INGAME_MODE_NAMES[(int) EDirectTouchIngameMode::NUM_STATES]
Definition touch_controls.h:146
void BuildPositionXY(std::vector< CUnitRect > vVisibleButtonRects, CUnitRect MyRect)
Definition touch_controls.cpp:2175
EDirectTouchSpectateMode m_DirectTouchSpectate
Definition touch_controls.h:503
struct _json_value json_value
Definition serverbrowser.h:18
vector2_base< float > vec2
Definition vmath.h:161